Skip to content

Liftuno

website

A bilingual gym-management platform that gives Bangladeshi gyms a dependable alternative to paper ledgers for membership coverage, billing, attendance, receipts, and staff operations.

Role
Client product architecture and full-stack engineering
Scope
Multi-tenant operations, billing rules, authentication, localization, and cross-platform delivery
Status
Private client build with verified development backend flows
Liftuno Today dashboard showing gym check-ins, member payments, and daily cash

Problem

Local gyms often track members, payments, attendance, and outstanding balances through paper records or staff memory. That makes daily work slow and allows financial history, access boundaries, and membership state to become ambiguous.

Constraints

  1. C1

    Membership accounting must distinguish expired coverage from actual debt instead of inventing fees when a member stops attending.

  2. C2

    Platform operators, gym administrators, staff, and members require different permissions with strict organization isolation.

  3. C3

    The product must support English and Bangla, Bangladeshi taka, Asia/Dhaka dates, phone-first workflows, and future Android delivery.

  4. C4

    Payment and attendance retries must remain idempotent so unreliable connections cannot create duplicate financial or operational records.

Architecture

Expo Router and React Native provide a shared responsive interface, Convex owns realtime gym-scoped data and transactional commands, Better Auth manages sessions, and explicit domain services preserve billing and membership invariants.

01

Cross-platform interface

Expo, React Native Web, role-aware navigation, bilingual content, and touch-friendly operational screens.

02

Membership domain

Pure billing and workspace rules model prepaid coverage, partial payments, offers, returns, reversals, and attendance.

03

Secure data boundary

Convex functions resolve the authenticated user, gym grant, role, and requested organization for every protected operation.

04

Identity and delivery

Better Auth sessions, hashed invitations, persistent sign-in budgets, Expo web delivery, and a future Android host.

Decisions

D1

Model prepaid coverage instead of automatic monthly debt

Coverage expires without creating a new charge; a recorded return creates the next payable period, preserving the difference between inactivity and money owed.

D2

Enforce tenancy on the backend

Protected reads and commands resolve access grants inside Convex rather than trusting role or organization choices made by the interface.

D3

Make operational retries idempotent

Payment and attendance commands use stable command identities and uniqueness rules so retrying a request cannot duplicate a transaction or daily check-in.

D4

Share one Expo codebase across web and Android

The web-first release and planned Android client reuse product behavior while platform-specific capabilities remain explicit and independently verifiable.

Contribution

  • Designed the gym, member, access, invitation, attendance, offer, payment, and audit domain boundaries.
  • Implemented bilingual, role-aware operational flows for dashboards, member records, attendance, billing, receipts, settings, and administration.
  • Built the Better Auth and Convex authorization path, invitation lifecycle, account-attempt budget, and gym-scoped backend commands.
  • Established domain, authentication, and backend integration tests around the highest-risk financial and access rules.

Outcomes

  • Gym staff can replace fragmented paper tracking with one member, payment, and attendance ledger.
  • Prepaid coverage, outstanding balances, partial payments, offers, and reversals retain explicit financial meaning.
  • Organization and role boundaries are enforced by the backend rather than inferred from navigation state.
  • The same product foundation supports responsive web use now and Android validation as a separate release step.

Product screenshot

Liftuno Today dashboard showing gym check-ins, member payments, and daily cash
Liftuno brings membership status, check-ins, payments, and daily cash into one bilingual gym-management workspace.

Verified stack

  • Expo
  • React Native
  • React 19
  • TypeScript
  • Convex
  • Better Auth
  • Expo Router
  • Zod
  • Vitest
  • System Design

Working through something similar?

Share your challenge, scope, and timeline to start a focused conversation.