The first stage of development was product design. We delivered a comprehensive product vision, including prototypes, a clearly defined tech stack, and interface designs. Each system feature was broken down into smaller components, after which we developed a timeline roadmap and aligned it with the client’s goals.
After approval, we optimized workflows to ensure convenience for both our team and the client. We implemented shorter sprint cycles — one week instead of two — while maintaining all necessary artifacts.
The client acted as the product owner, regularly syncing with us to clarify their vision and guide development.
We designed the service architecture to scale seamlessly over the next two years as the number of teams, coaches, and players in the league grows. The system is also built to accommodate potential adoption by other leagues in Kazakhstan and abroad.
Since the system handles a moderate load, we chose a classic monolithic architecture for the backend, built with Nest.js, TypeScript, Sequelize, PostgreSQL, and Minio. Resource-intensive operations, such as PDF generation for training plans and logs, were handled by a separate microservice.
We developed the frontend as a single-page application (SPA) using React, Next.js, and TypeScript. To accelerate the launch, we used the Ant Design component library and customized it to fit project requirements.For backend access, we used the Hey API library to generate client code based on OpenAPI specifications, automatically generated from the backend codebase.