The data platform behind a digital weight machine: one multi-tenant API and two Next.js frontends, solo-built and running in production.
Moty is a fitness platform built around a digital weight machine that streams bilateral sensor data: force, velocity, position on both sides, ten times a second. That stream feeds four client surfaces through one API: the machine's tablet app writes workout sets, a consumer app reads personal progress, a data web gives gym operators tenant-scoped analytics up to clinical-style rehabilitation reports, and an internal console runs content and operations.
I own the platform end to end: the 206-endpoint Spring Boot API (95% of current code by line per git blame, last-author basis; a short-term collaborator's early areas were later redesigned), the operator-facing data web shipped in two months, and the internal console shipped in one month alongside its own backend APIs. Both Next.js frontends ship without chart, form, state or session libraries (the operator web runs on five runtime dependencies), with hand-built SVG charts up to a 1,700-line clinical report, Lighthouse accessibility 100, and 180KB of JS shipped.
Under the hood: 10Hz sensor streams are pre-aggregated at write time so analytics never scan the raw hypertable: a ~380× row fanout collapsed, ~590× faster queries (measured, EXPLAIN ANALYZE on production data). Auth is a custom OAuth2-shaped token service (six grant types, 27 scopes), because standard servers don't speak PIN-and-profile kiosk auth. Personal data is encrypted at field level (AES-256-GCM with a blind index for equality search), rolled out to production in nine zero-downtime steps. And the AWS bill dropped 58% by self-hosting the data tier, with the guarantees rebuilt by hand.
One Spring Boot monolith on ECS (EC2, Graviton) serves four client surfaces; both web frontends are strict BFFs: the browser never talks to the API, tokens live in httpOnly cookies. The data tier is self-hosted on EC2: PostgreSQL 17 with TimescaleDB hypertables for the sensor streams, and Valkey for token state and rate limits. Deploys ride GitHub Actions OIDC (no long-lived keys) with circuit-breaker rollback; backups ship cross-region.
Effectively a solo build, with two collaborations I should name.