Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Multi-tenant operations platform built for Nigerian businesses. The current vertical is gym management — admins manage members, trainers, billing, and plans; members self-serve their profile, check-ins, BMI, and AI-generated workout plans.
Live: Deployed on Vercel · Stack: Next.js 15 · Supabase · Paystack · Claude AI · shadcn/ui
EngineRoom is designed to grow beyond gyms. The underlying architecture — multi-tenancy, role-based access, payments, notifications, and AI — applies across verticals. Planned or considered expansions:
| Vertical | Description |
|---|---|
| Gym Management | Current vertical — members, trainers, check-ins, workout plans, billing |
| Inventory & Retail | Stock tracking, low-stock alerts, supplier management for supermarkets and retail stores |
| HR & People Ops | Employee records, leave management, payroll tracking, onboarding workflows |
| Corporate Communications | Internal announcements, team notifications, document distribution, org-wide broadcasts |
Each vertical shares the same auth, tenant isolation, and billing infrastructure — only the domain-specific modules differ.
| Item | Status |
|---|---|
| Next.js 15 App Router, pnpm monorepo | ✅ Done |
| Supabase auth + SSR middleware | ✅ Done |
| Vercel deployment + environment variables | ✅ Done |
| Role-based routing (gym_admin / trainer / member) | ✅ Done |
| Paystack client library (init, verify, webhook sig) | ✅ Done |
| Claude AI client (workout plan generation) | ✅ Done |
| Page | Status |
|---|---|
| Landing page (hero, features, CTA) | ✅ Done |
| Login | ✅ Done |
| Register gym | ✅ Done |
| Forgot password | ✅ Done |
| Reset password | ✅ Done |
| Change password (in-app) | ✅ Done |
| Feature | Status | Notes |
|---|---|---|
| Dashboard overview (stats, revenue) | ✅ Done | |
| Member list + add member | ✅ Done | |
| Member detail / edit / remove | ✅ Done | |
| Trainer list + add trainer | ✅ Done | |
| Trainer detail / edit / remove | ✅ Done | |
| Membership plans (create, edit, toggle active) | ✅ Done | branch access per plan: all branches or specific; guest passes per month (0 = no guests) |
| Payment log (record manual payment) | ✅ Done | |
| Paystack payment flow (online billing) | ✅ Done | member self-pay renewal; webhook updates status |
| QR code check-in display + live log | ✅ Done | per-branch QR codes when branches enabled; branch tab selector on check-in page |
| Notifications (view) | ✅ Done | |
| Notifications (create / send to members) | ✅ Done | manual announcements + automated expiry alerts (7d, 3d) |
| Gym profile | ✅ Done | |
| Gym settings | ✅ Done | name, phone, address editable; Features toggle for branches; referral reward days; subscription plan management |
| Branches (multi-location) | ✅ Done | opt-in via Settings; per-branch QR; plan-level access control (all vs specific branches) |
| Team management (staff invites) | ✅ Done | roles: second_admin, front_desk, accountant; second-admin invites require owner approval before link is sent; front_desk/accountant get direct magic link |
| Guest visits log | ✅ Done | gym admin logs guest details (name, phone, email) for marketing; validates member's monthly quota; /gym-admin/guests |
| Referral settings | ✅ Done | configurable reward days per referral in Settings; applies across the gym |
| Feature | Status | Notes |
|---|---|---|
| Dashboard (membership status, quick actions) | ✅ Done | referral code card + guest passes remaining (if plan allows) |
| Check-in history (list) | ✅ Done | |
| Check-in calendar | ✅ Done | monthly calendar with day highlights + month navigation |
| QR check-in (scan gym QR to check in) | ✅ Done | deduplicates within 6 hours |
| BMI tracker (log + history) | ✅ Done | |
| Workout plan (AI-generated by Claude) | ✅ Done | |
| Workout timer (in-app countdown / stopwatch) | ✅ Done | floating panel; stopwatch + rest timer modes |
| Notifications (view) | ✅ Done | |
| Member profile / edit | ✅ Done | |
| Referral page | ✅ Done | unique 6-char code; stats (referred, converted, days earned); how-it-works steps; /member/referral |
| Feature | Status | Notes |
|---|---|---|
| Dashboard (stats + recent check-ins) | ✅ Done | |
| Assigned members list | ✅ Done | |
| Member detail (BMI, check-ins, workout plan) | ✅ Done | |
| Workout plan management | ✅ Done | trainer assigns plans from exercise library (wger-seeded) |
| Attendance tracking | ⬜ Pending |
Access model: Separate route group
/super-adminwithin the same Next.js app, accessible only to accounts with theplatform_adminrole. Can be served on a custom subdomain (e.g.admin.engineroom.ng) via Vercel domain aliases with a host-based redirect innext.config.ts.
Gym onboarding policy: New gyms registered via the public sign-up form do not go live immediately. They enter a pending approval state and must be reviewed and approved by a super-admin before they can access the platform. This prevents unauthorised or spam tenants.
This is the beginning of the README. Read the rest at the original. Read the full README ↗