Back to projects
2025

CRM for Young Drivers Academy

Customer management and go-kart booking system.

Video Coming Soon

This project showcase is in the making

YDA Web is a sophisticated web-based management system developed as a freelance project for Young Drivers Academy (YDA), a go-karting driving school and youth racing team. The platform streamlines the complete operational lifecycle of the business, from event scheduling and student registration to complex invoicing and financial management, helping YDA manage its dual role as both an educational institution and competitive racing organization. Built as a full-stack Next.js application, it serves three distinct user types—administrators, parents, and young drivers—each with tailored dashboards and role-specific functionality. The system addresses the unique challenges of managing youth motorsport education, including parental consent workflows, age-based grouping, multi-day event scheduling, and transparent financial tracking, all designed to streamline YDA's business administration tasks. To support these capabilities, the application leverages a modern technology stack centered around Next.js 16 with the App Router architecture and React 19. The backend relies on PostgreSQL for data persistence, accessed through Prisma ORM with a custom extension that automatically converts Decimal fields to numbers for simplified currency handling. Authentication is handled via NextAuth v4 with a credentials provider, implementing role-based access control across three user types. The platform supports full internationalization using i18next, with Dutch as the default language and English as secondary, encompassing over 16 translation namespaces that cover every domain of the application. The codebase demonstrates strong adherence to TypeScript for type safety, Zod for runtime validation, and follows a clear separation of concerns with dedicated directories for server actions, database queries, components, and utilities. Building on this technical foundation, the system delivers a comprehensive event management module that handles training sessions, races, and workshops. Events can span multiple days and accommodate different age groups (Mini for ages 6-11, Junior for 12-14, and Senior for 15+). The registration workflow involves multiple approval stages, requiring both parental consent and administrative verification before drivers can participate. The invoicing system represents the most complex feature, implementing a multi-stage state machine that progresses through draft, pending approval, approved, and paid statuses. Invoices can contain various line items including event registration fees, service usage charges, and custom cash items, with automatic surcharge calculations for late registrations and specific venues. The balance management system allows parents to maintain account balances through top-ups, with transactions meticulously tracked showing before and after balance states for complete financial transparency. These features are accessed through carefully designed role-based workflows that ensure each user sees exactly what they need. Administrators possess comprehensive control over the platform, managing events, users, services, and the entire invoicing pipeline. They can create and edit events, approve registrations, generate invoices, apply manual balance adjustments, and utilize a quick-entry tool for rapid data input during busy operational periods. Parents access a streamlined interface focused on their children's activities, where they can view and approve invoices, manage driver profiles, monitor account balances, and initiate top-ups when funds are needed. The parent role includes the unique ability to approve pending invoices before they're finalized, creating a consent layer for financial commitments. Drivers receive age-appropriate access to view their training calendar, track personal progress, and optionally view invoicing details based on administrator-configured visibility settings. This hierarchical permission model ensures data security and privacy while maintaining appropriate transparency for each stakeholder. Beyond these core workflows, several technical implementations demonstrate the platform's sophistication. The notification system implements a type-safe architecture requiring coordinated updates across Prisma enums, configuration mappings, and translation files. Notifications support multiple types spanning event management, invoicing, system messages, and guide assignments, with priorities ranging from low to urgent and persistent storage for audit trails. The application employs a consistent server action pattern using specialized error handling utilities that gracefully manage Zod validation failures and unexpected errors, returning structured responses compatible with React's useActionState hook. Currency formatting follows Dutch locale conventions, displaying euros with comma decimal separators, and the system enforces strict usage of shared utility functions like formatEuros, formatDate, and formatNumberNl to maintain consistency across the codebase. The invoice PDF generation integrates with Google Drive for cloud storage, while the reusable table factory pattern eliminates code duplication across admin and parent views. Sequential invoice numbering follows the format INV-2026-001, with automatic year-based sequencing handled by a dedicated generation function that prevents number collisions in concurrent scenarios.

Technologies

TypeScriptNext.jsPrisma PostgresTailwind CSS

Project Resources

Square image

Full-Stack Developer

Young Drivers Academy

2025