Skip to content
All work

05Client project

Polaris

A gym platform with portals for members, trainers and admins, with access rules enforced in the database.

Tables in the Postgres schema
17
Row-level security policies
54
Portals: member, trainer and admin
3
/
Polaris, home on a desktop screen
Polaris, home on a phone
Home
/login
Polaris, sign in on a desktop screen
Polaris, sign in on a phone
Sign in

What I built

  • Member, trainer and admin portals in one Next.js 16 app.
  • A 17-table Postgres schema protected by 54 row-level security policies.
  • Class booking with row locking and a waitlist.
  • Hardened after an OWASP ZAP assessment.

Engineering notes

No promoting yourself

A trigger rejects any member update to role, membership or contract fields, whatever the client sends. Admin changes pass and are audited.

No overbooking

Booking goes through one function that locks the class session, so two members can never take the last spot.