An unofficial mobile schedule reader (Android + iOS) for the Vogue Fitness UAE gym chain’s daily workout (WOD) programming. It shows today’s workout for your favorite branch the moment you open it.
Built with Flutter. The published schedule at https://vfuae.com/wod/ is the source of truth — this app makes it pleasant to read on a phone.
Not affiliated with, or endorsed by, Vogue Fitness. The app reads their public WOD page and re-presents it; the name is used descriptively to identify whose schedule you are viewing, not to suggest endorsement. All workout content is the work of their coaches.
It is a read-only viewer: no booking, no accounts, no notifications.
There is no backend. The app fetches the public WOD page from
vfuae.com/wod/ and parses the schedule out of the page HTML on-device
(the site’s GravityView JSON API is not publicly accessible). The parsed
schedule is cached locally between launches.
All knowledge of the page’s HTML shape lives in one file —
lib/data/wod_html_parser.dart. If the upstream site changes, that is the
only place to fix.
Requires the Flutter SDK (3.41+, Dart 3.11+).
flutter pub get
dart run build_runner build # generates freezed / json code
flutter test # 22 tests
flutter run # pick a device when prompted
Run the full local check (format + analyze + test) before a PR:
bash tool/dev/check.sh # prints ALL GREEN
| Path | Purpose |
|---|---|
lib/core/ |
AppFailure, Result, Log — framework-free primitives. |
lib/domain/ |
Immutable models (Wod, Branch, Program) + the WodRepository port. |
lib/data/ |
HTML parser, network source, local cache, cache-first repository. |
lib/presentation/theme/ |
The design system — tokens, typography, ThemeData. |
lib/presentation/ |
Screens (Today / Browse / detail / onboarding) + their cubits + shared widgets. |
lib/router.dart, lib/app.dart, lib/main.dart |
Routing and the composition root. |
test/ |
Parser, repository, cubit and widget tests (test/fixtures/ holds the HTML snapshot). |
tool/dev/check.sh |
Local CI mirror. |
docs/superpowers/ |
The design spec and implementation plan. |
The app is configured for release: app icon, splash, display name, an
Android upload-signing config, and the iOS export-compliance declaration.
See RELEASE.md for the full publishing runbook.
flutter build appbundle --release # Android → Google Play (.aab)
flutter build ipa --release # iOS → App Store (.ipa)
AGENTS.md — conventions every contributor follows.DESIGN.md — the design-system reference.RELEASE.md — build & publishing runbook.PRIVACY.md — the app’s privacy policy.docs/superpowers/specs/ — the design spec.docs/superpowers/plans/ — the implementation plan.