Vefuno Fit
Modeling membership, access, roles, and branch scope without coupling identity to a single gym or payment provider.

#01 The product
Vefuno Fit is a web platform for gyms that run one or more branches. It covers membership, who may enter which branch, instructor operations, and member history. It is not a mobile app, and it does not take card payments.
A platform admin can approve or suspend a gym business. One business can operate multiple branches. Instructors are employees with explicit role and permission boundaries. Members have a global identity: phone-number deduplication blocks a second account for the same person, and one member can belong to several independent gyms. Membership history keeps active and cancelled memberships instead of overwriting what already happened.
#02 Access, classes, and payments
Membership scope is one of three: SINGLE_BRANCH, SELECTED_BRANCHES, or BUSINESS_WIDE. A business-wide membership can say whether branches opened later become accessible automatically. Access is evaluated when someone is scanned, not stored inside the QR. The check resolves the member from a QR or wallet identity, loads the active membership or package, applies branch scope, evaluates the entitlement, and returns an access result. When that entitlement changes, the QR does not have to change.
Gyms can record how a membership was paid — POS, cash, bank transfer, or other — as payment metadata. No card details are stored. Price visibility is configurable as PUBLIC, MEMBERS_ONLY, or HIDDEN.
Instructor work sits on the same permission model: weekly classes, attendance, private training sessions, and PT lesson pricing where the owner allows it. Cancellation, no-show, and credit or entitlement effects stay inside those role boundaries.
#03 Engineering
The domain runs Platform → Business → Branch → Instructor → Member. Identity is global and deduplicated. Membership is per business, branch-scoped, and historically preserved. Authorization is role-aware, so an instructor does not inherit owner controls.
Scan-time policy evaluation keeps the physical token stable while entitlement rules stay in the system that can see current membership, scope, and branch. Payment recording is deliberately not payment processing: the platform stores the method a gym already used, and nothing that would let it charge a card.
$ ls ./screenshots



Want the full story behind this build?
POST /contact