Projects  /  SaaS & Compliance

Didaxo — Fullstack Development of a SaaS for Training Providers

A business SaaS for professional training providers: Qualiopi compliance, automated OPCO funding files, the annual BPF report, and Stripe billing, all in a single platform.

Didaxo dashboard, a management SaaS for professional training providers
Sector
Professional training
Client
Professional training provider
Stack
ReactNode.jsExpressMySQLStripeJWT
Key result
Complete business SaaS
Service

Fullstack Development of a SaaS for Training Providers

Case study · Fullstack web development · React · Node.js · MySQL · Stripe

Digitizing compliance: building a business SaaS for training providers

A professional training provider juggles dozens of administrative files every week: training agreements, attendance sheets, OPCO funding files, Qualiopi indicators, the annual Bilan Pédagogique et Financier (BPF) report that must be submitted to the authorities. Managed through Excel, dozens of scattered Word documents, or generic tools poorly suited to French vocational training regulations, this workload quickly becomes unmanageable, with a real risk of falling short in a Qualiopi audit.

That observation is what gave rise to Didaxo: a business SaaS built end to end for French training providers. I was brought in for a complete fullstack development engagement, from architecture design through to production deployment, with a goal that's simple to state and hard to deliver: replace the spreadsheet and Word templates with a single, reliable, compliant platform.

The client's needs: moving past manual management without losing flexibility

The client, who runs a training provider, had a very concrete need: centralize the management of trainees, trainers and training sessions in a single tool, while meeting strict regulatory constraints specific to the French professional training sector.

Several defining requirements emerged from the initial scoping:

  • Qualiopi compliance: tracking the quality indicators required to keep the certification, without which a provider loses access to public and pooled funding.
  • OPCO file assembly: automated generation of funding files (agreements, forms specific to each OPCO such as AGEFICE) from data already entered, eliminating manual re-entry.
  • Bilan Pédagogique et Financier (BPF): simplified production of the mandatory annual report submitted to French authorities.
  • Multi-profile management: a single tool needed to serve the training provider, trainers and trainees, each with their own space and their own permissions.
  • A SaaS business model: the product needed to be sellable to other training providers, with subscriptions, plans and usage quotas, not just as an internal tool.

The difficulty lay less in the technology than in domain knowledge: building a generic product capable of adapting to providers with different practices, while coding rules that are often poorly documented or scattered across administrative regulations.

Product features: a complete back office, designed by role

Didaxo was built as a modular platform, with a distinct dashboard for each type of user: the training provider, the trainer and the trainee. Each module addresses a specific operational need identified during scoping interviews.

Managing trainees, trainers and courses

Full trainee and trainer profiles, creation and updating of training sessions, linked to trainers and their associated funding files. The goal: every piece of data entered once can be automatically reused in the documents generated downstream.

Calendar and scheduling

An interactive calendar (day, week, list views) makes it possible to visualize training sessions, avoid scheduling conflicts between trainers, and prepare invitations. A remote (live) session feature rounds out the offering for distance learning.

File assembly and administrative export

The core of the product: a file-generation engine that merges data from the provider, the trainee, the trainer and the course into administrative templates (including forms specific to certain OPCOs), with PDF export ready to submit. A quota system governs consumption of these files based on the subscribed plan, an essential piece of the SaaS business model.

Automated assembly of an OPCO funding file on Didaxo
The file-assembly engine merges data already entered into administrative templates.

Qualiopi and BPF tracking

Dedicated modules let the provider track its Qualiopi indicators and prepare its Bilan Pédagogique et Financier directly from data already present in the tool, with no re-entry.

Tracking Qualiopi indicators on the Didaxo dashboard
Qualiopi indicator tracking, directly from data already entered in the tool.

Subscriptions and billing

Because Didaxo is a genuinely sellable SaaS, the platform includes complete management of plans, subscriptions and recurring billing, with on-the-fly plan upgrades and automatic reconciliation of subscription states.

Automatic company data enrichment

An integration with the Pappers API automatically pre-fills a company's legal information (SIRET number, legal form, address) from a simple search, further reducing manual entry and compliance errors.

The process: from business scoping to continuous production deployment

Building a SaaS for a sector as heavily regulated as professional training demands a specific method: understand the regulations before writing a single line of code.

1. Scoping and business data modeling

The first step was to precisely model the domain entities (training provider, manager, contact, company, trainee, course, trainer) and their relationships, working directly from real administrative documents (CERFA forms, agreements, OPCO forms) so that every database field matches a field genuinely required by the authorities.

2. Architecture and iterative development

Development followed a logic of building independent functional modules (authentication, trainee management, calendar, file assembly, billing), delivered and tested progressively rather than in a single monolithic release. This approach made it possible to adjust the product based on feedback from the pilot provider.

3. Security and compliance

JWT-based authentication, password hashing, fine-grained role-based access control, and a restrictive CORS architecture to strictly isolate exchanges between the frontend, the API and the document-generation service. Payments are handled entirely by Stripe (webhooks + automatic reconciliation) so no banking data is ever handled server-side.

4. Deployment and operations

The platform is containerized with Docker and deployed across three dedicated subdomains (application, API, PDF generation), allowing each piece to evolve and scale independently. A command-line-controlled maintenance mode was added to secure production updates without abrupt service interruptions.

The tech stack

Technology choices were guided by a simple principle: favor robust, widely adopted tools capable of handling the growth of a real commercial SaaS, without unnecessary over-engineering for a product that had to remain maintainable solo.

Frontend

  • React 18 with Vite for a fast interface and minimal build time
  • React Router for navigation between the provider, trainer and trainee spaces
  • FullCalendar for the interactive training-session calendar
  • Lucide React for consistent iconography across the product

Backend

  • Node.js and Express for a modular REST API, organized into dedicated business routes
  • MySQL as the relational database, suited to the strongly relational structure of regulatory data
  • JWT and bcrypt for authentication and password security
  • Multer for handling uploaded documents (supporting evidence, file attachments)
  • Nodemailer for notifications and password-reset flows
  • Stripe for managing subscriptions, recurring billing and payment webhooks
  • Pappers API for automatic company data enrichment

Infrastructure

  • Docker containerization for each service (application, API, document generator)
  • Dedicated subdomain architecture to isolate the frontend, the API and the PDF export service
  • Dedicated operational scripts (maintenance mode, Stripe subscription reconciliation)

The result: a business SaaS ready to support growth in a regulated sector

Building Didaxo required translating dense regulation (Qualiopi, BPF, OPCO funding) into a digital product that non-technical users can operate daily without compliance mistakes, far beyond simply assembling a frontend and an API.

Didaxo now meets a concrete need: reducing time spent on repetitive administrative tasks so training providers can focus on their core business, teaching, while securing their regulatory compliance and access to funding.

This engagement covered the full fullstack development cycle: business scoping, architecture, frontend and backend development, third-party integrations for payment and legal data, security and deployment, on a real SaaS product intended for commercial sale, not a mere technical exercise.

Fullstack developer · design and delivery of business SaaS products

Have a similar project in mind?

Let's discuss your project. Response within 24h.

Get in touch
What makes building a SaaS for training providers different from a typical SaaS?

The difficulty lies less in the technology than in domain knowledge: you need a generic product capable of adapting to providers with different practices, while coding rules that are often poorly documented or scattered across administrative regulations (Qualiopi, OPCO, BPF). The data model was built directly from real administrative documents (CERFA forms, agreements, OPCO forms).

Does Didaxo really generate OPCO funding files automatically?

Yes: a file-generation engine merges data from the provider, the trainee, the trainer and the course into administrative templates, including forms specific to certain OPCOs, with PDF export ready to submit, with no manual re-entry.

How does Didaxo secure payments and data?

Authentication relies on JWT and bcrypt, with a restrictive CORS setup between the frontend, the API and the document-generation service. Payments are handled entirely by Stripe (webhooks and automatic reconciliation), so no banking data is ever handled server-side.

Have a similar project?

Tell me about it. I reply within 24h.