All works

SkillPlus

A multi-tenant SaaS that runs a training institute end to end — admissions, courses, attendance, fees, commissions and certificates — plus the marketing site standing in front of it.

(YEAR)
2026
(TIMELINE)
4 Months
(SERVICES)
SaaS PlatformFull-StackGraphQL APIMulti-TenantWordPress
Live Website
SkillPlus

Overview.

SkillPlus is a training-institute ERP and CRM built as a multi-tenant SaaS at Waveplus — the product lives at app.skillplus.dev, the marketing site at skillplus.dev. Every company gets its own workspace behind one login: branches, staff and roles, contacts and enquiries, courses, batches and cohorts, enrollments, invoices and payments, commissions, inventory, reports, and a Moodle instance provisioned per tenant. The backend is headless Laravel 13 split into feature modules, each exposing its own GraphQL schema through Lighthouse with JWT auth over MySQL; the frontend is a React and TypeScript SPA deployed as a static build into it. I shipped around 170 commits across both sides, and part of the WordPress theme behind the public site.

Challenges.

Everything gets harder when one database serves every company. Tenancy is enforced at the model layer — most records scope to company and branch, a few only to company, and a company-wide user with no branch of their own needs one resolved from whatever record they are attached to. Roles work the same way: the read-only Company Admin role I added is blocked at the mutation layer on the server, not just hidden in the UI. On top of that I built the Services module from an empty folder through six phases — catalog, bookings, chalani settlements with extra charges, seasonal per-line discounting, several providers on one service line, and reports that group correctly across branches — plus a certificate designer where dynamic fields, numbering, orientation and rotated artwork are versioned, so a reprint always matches what was issued.

SkillPlus — detail 1
SkillPlus — detail 2