PeakUp
Fitness studio management and member tracking in one app.


- Project
- PeakUp Training Studio
- Our role
- Product · Mobile development · Admin panel · Release
- Duration
- 3 months
01 / Behind the product
A real need. A considered solution.
Challenge
The studio’s live app was unusable; bookings ran over messaging, payments and measurements were tracked by hand. The client handed over a 19-item request list and treated every item as an acceptance criterion: trainer ratings, bulk messaging, a six-stage analysis, post-tax figures, cancellation reasons, package-expiry reminders and more. A rewrite from scratch, keeping only the logo and colours from the old code.
Approach
Member, trainer and owner experiences live in one Expo app, with a Next.js 16 panel for the owner. A shared package carries zod schemas and business rules (VAT, absences, package deductions), so client and database validate the same rule. Cash payments carry no VAT, POS payments a panel-configurable 20%. The six-stage analysis is a flexible template: stages and fields are edited from the panel without code changes.
QR class check-in, a document gate that blocks package purchases without a tablet-signed contract and PAR-Q, automatic class closing, AI member summaries and reports, automatic messages: 15 Edge Functions. Europe/Istanbul in every layer; cron jobs and triggers authenticate Edge Functions with a shared secret.
Result
Live on iOS and Android as the 2.0.0 update to the existing store listing. 36 database and RLS tests, contract checks and unit tests run under one pnpm dogrula command; nothing deploys unless it is green. The closing audit was run by seven independent reviews, and no finding was closed without a test written to catch it.
02 / Inside the product
The experience, on screen.
Open a screen to explore the details.02 images
03 / Scope & details
The details make the experience.
- 01
Member, trainer and owner in one app; 19 client requests as acceptance criteria
- 02
QR class check-in, signed contract and PAR-Q document gate
- 03
Six-stage analysis template and an exercise library
- 04
Cash / POS payment split with panel-configured VAT
- 05
36 database and RLS tests, 15 Edge Functions
Technology
INSIDE THE PRODUCT
The engineering behind the interface.
Systems we built and concrete problems we addressed in this project.
Business rules in one package, validated in two places
@peakup/shared carries the VAT, absence and package-deduction rules; the same rules are also enforced by database CHECK constraints and rules_test.sql. The closing audit found the VAT rate validated in no layer at all, and it was closed in three layers at once.
The document gate
belge_kapisi_baslangic takes now() at migration time: members registered before it are exempt, later ones cannot buy a package or class without a signed contract and a valid PAR-Q. Documents are sealed by belge-muhurle, the question dictionary is versioned, and a signed document stays bound to its version.
Cron → Edge shared secret and health
pg_cron and triggers authenticate Edge Functions with a shared secret in the x-peakup-cron header; edge_cagri_sagligi(24) reports the last 24 hours of 401/5xx and the panel’s system status card shows the same data. Missing vault secrets make cron jobs throw; nothing dies silently.
Your idea could be next.
What could we build for you?
From a first release to a growing platform. Let’s plan the design, development and launch together.
From Türkiye to the US, UK, Australia and everywhere in between.