Skip to content

case study · Fullstack Web Development · December 2025

Trainio : All-in-one Sports Management Platform

SaaS web application for team management, training planning, tournament organization and logistics coordination designed for coaches and sports clubs.

Type
Fullstack Web Development
Launched
December 2025
Stack
React · Supabase · NestJS · Hexagonal Architecture
Preview of Trainio

Trainio is a SaaS platform designed to centralize the daily management of sports clubs and teams. Training planning, roster management, individual player evaluations, tournament organization, logistics coordination (carpools, equipment, volunteers) and team communication — everything is unified in a single, smooth and bilingual (French/English) interface.

The project is structured as a TypeScript monorepo with npm workspaces and a shared package (@trainio/shared) compiled to both CJS and ESM. The frontend is a React 18 SPA built with Vite, styled with Tailwind CSS and Radix UI, using React Query for server state caching and Zod for form validation. The backend runs on NestJS with hexagonal architecture (DDD) and the MVP pattern: domain entities are pure, use cases are isolated, and data is transformed through Presenters into ViewModels before reaching controllers. Persistence is handled by Supabase (PostgreSQL, Auth, Realtime, Storage) with Row-Level Security policies for fine-grained access control.

The subscription system is integrated via LemonSqueezy with full webhook handling, plan management (Coach/Club) and free trial periods. The production infrastructure is orchestrated via Docker Compose with an Nginx reverse proxy and automatic TLS renewal through Let's Encrypt, deployed on VPS.

Key features:

  • Coach dashboard with activity overview
  • Event calendar (training sessions, matches, meetings)
  • Roster management with detailed player profiles
  • Individual evaluations and progress tracking
  • Tournaments with group stages and knockout brackets
  • Logistics: carpools, equipment, tasks and volunteers
  • Team communication and stories
  • Freemium subscriptions with 7-day free trial
  • Bilingual French/English interface with light and dark theme

A project like this one?

Let's talk about your context, your constraints and the team that will keep the code alive.

Start a project