
Club management app
RollManager
Everything a jiu-jitsu club needs to run, in one app.
In pilot
RollManager runs a sports club end to end: memberships, partial and online payments, reminders, scheduling, attendance, member progression and a public website. It is designed with Marvelous BJJ, where it is deployed as a pilot, and built with the rigor of business software.
Stack: Vue 3, Node.js 22, Express, SQLite, Stripe, Playwright. Screenshots use demo data.
Screens
The club at a glance
Dashboard: monthly revenue, payments at risk, renewals, retention, six months of collections and attendance, belt distribution.

Payments and reminders
Fixed-price memberships, due dates, partial payments with numbered receipts, Stripe online payments, automatic reminders 30 and 7 days ahead and when overdue.

Schedule and attendance
Weekly classes by level, sign-ups, cancellations and closures, attendance check-in.

Progression and gamification
Belt path, sessions and seniority, trophies: progression computed on the server, followed by each member in their portal.

In every member's pocket
Member portal installable on a phone (PWA), ready for a native app.

For the club, 16 screens
- Dashboard, members and a profile for each member.
- Attendance, calendar, classes and grades.
- Billing, membership catalog, communication campaigns and reports.
- Audit log, backups, users and roles, settings, editable public website.
For members, 8 screens
- Portal installable on a phone (PWA), ready for a native app with Capacitor.
- Dashboard, belt path and trophies computed on the server.
- Schedule, attendance, messages, membership and profile.
Under the hood
- 4 access screens: sign-in, first sign-in, forgotten password and password reset.
- Layered architecture: configuration, database, testable business services, routes, scheduled jobs.
- Zod validation, CSP, owner, admin and coach roles, two-factor authentication.
- httpOnly cookies with token rotation and revocation, scrypt hashing, audit log, GDPR.
- The server refuses to start in production without strong secrets.
- 435 automated tests (327 server-side, 108 front-end) and 8 end-to-end journeys with Playwright.