
The challenge
ELASTICA managed students, payments, invoices and class bookings with spreadsheets, external calendars and WhatsApp conversations. Every operation depended on the coach or administrator: collecting a monthly fee, issuing an invoice, cancelling a booking or answering an accountant's query meant manual steps that scaled poorly as the academy grew.
They needed a single platform covering the full cycle, from first client contact to quarterly tax reporting, without losing control and leaving the coach free to focus on the pitch.
The solution
We designed and built a custom platform with several integrated subsystems, accessible from any browser on any device:
- Client portal: parents buy monthly plans or session packs online, choose the student, book classes in the calendar and download their invoices. Payment by card (Stripe) or manual request.
- Smart calendar: weekly patterns that automatically generate classes for the next 8 weeks. Each age group (pre-benjamín through juvenil) can only book time slots allowed for their age. Cancellations cut off 24 h before; the session is returned to the balance.
- Online payments: full Stripe integration: one-off payments, monthly subscriptions with automatic renewal, customer portal for subscription management, and one-click admin refunds.
- Invoicing: automatic PDF invoice on payment, series numbering, exportable quarterly summary, and an expense module with automatic ticket extraction via AI.
- Communications: all emails (welcome, order confirmation, class reminder, invoice, etc.) are templates editable from the panel with live preview. The team can customise tone without touching code.
- AI assistant with panel access: a chat integrated into the admin and accountancy dashboard, running on an open-source LLM hosted on our own infrastructure (AS215691) with no data sent out, allowing any system data to be queried in natural language: "Summary of last quarter", "Paid orders this week", "Tomorrow's bookings". The AI uses role-scoped tools (accountancy only accesses finance).
- Differentiated roles: admin, coach (own dashboard: month occupancy, available slots, weekly calendar), accountancy (finance only) and client. Each sees only what belongs to them.
Results
- One tool replaces Excel, manual calendars, Word invoice templates and manual credential delivery.
- Online payment active 24/7: clients pay without waiting for someone to send a Bizum.
- Zero paperwork for the accountant: invoices, expenses and quarterly summary exported ready to file.
- Business rules enforced automatically (age categories, hourly capacity, cancellation window): an invalid booking is impossible.
- AI assistant that reduces "find this order / that invoice" time to a natural-language question.
Stack & Architecture
- Backend
- PHP · no framework · modular · MariaDB · versioned migrations · 530+ integration tests · custom DI
- Frontend
- React · TypeScript · Vite · shadcn/ui · TanStack Query
- Payments
- Stripe Checkout · Subscriptions · Customer Portal · idempotent Webhooks
- AI
- Open-source LLM on our own AS215691 infrastructure · custom tool calling (read-only, role-scoped) · vision for ticket OCR
- PHPMailer · own SMTP · editable template system
- Security
- AES-256-GCM encryption · DB-backed sessions · CSRF double-submit · audit log
- Infra
- Nginx · PHP-FPM · Cloudflare · CI with automatic tests
"I came in knowing football. I left with a platform that lets me coach and the system manage."