ClubOne
I am building ClubOne because Nairobi Club needed more than another departmental app. It is an in-house ERP for procurement, HR, finance, membership, POS, inventory, hospitality and administration, all working from the same identity, permissions and audit model.
Open ClubOne ↗
My part
- Designed the platform architecture and decided which concerns should be shared across the suite and which had to stay inside their operational boundaries.
- Worked through real department workflows and translated them into permissions, approvals, records and evidence instead of starting from screens.
- Built and reviewed modules across procurement, HR, membership, POS, inventory, hospitality, facilities and reporting, while keeping shared platform behaviour consistent.
- Designed the Rights Matrix, maker-checker patterns, audit model and administrative controls that govern the suite.
- Built the reporting and intelligence foundation so management can move from a headline KPI to the evidence behind it.
How I built it
- Next.js modular monolith with React and TypeScript
- PostgreSQL and Prisma data layer
- Shared identity, organisational directory and Rights Matrix
- Common workflow, audit, notification and document services
- Department-specific applications and external portals in one platform
Controls that mattered
- Server-side operation-level permissions
- Maker-checker approval for sensitive changes
- Segregation of duties across finance, HR, procurement and administration
- Audit history and approval evidence
- Protected administrator and super-admin boundaries
Where it landed
- Gave the Club one operating model for workflows that had been split across separate tools, spreadsheets and manual follow-up.
- Made permissions, approvals and auditability part of the architecture rather than features added after the business logic.
- Created a platform foundation new Club applications can reuse instead of rebuilding identity, approvals, audit and reporting every time.
Stack
Next.jsReactTypeScriptPostgreSQLPrismaVitestRBAC