![coverage][coverage_badge]
[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
[![License: MIT][license_badge]][license_link]
Scripture Memory mobile front end for memverse.com
This project requires you to set several environment variables before building or running:
CLIENT_ID(required for all builds and app functionality)POSTHOG_MEMVERSE_API_KEY(required for analytics)
These should be set in your shell profile (e.g., .zshrc) or via your secrets manager.
Reference: See setup.md for detailed environment setup.
The Memverse API uses different base URLs for different types of endpoints:
- OAuth endpoint:
https://www.memverse.com/oauth/token(root level) - Other API endpoints:
https://www.memverse.com/api/v1/*(versioned path)
This distinction is critical for authentication to work properly. The OAuth token endpoint does NOT
use the /api/v1/ prefix that other endpoints use.
# Build debug APK:
flutter build apk --debug \
--flavor development \
--target lib/main_development.dart \
--dart-define=CLIENT_ID=$MEMVERSE_CLIENT_ID \
--dart-define=POSTHOG_MEMVERSE_API_KEY=$POSTHOG_MEMVERSE_API_KEY
# Install to connected device:
flutter install --debug \
--flavor development \
--target lib/main_development.dart \
--dart-define=CLIENT_ID=$MEMVERSE_CLIENT_ID \
--dart-define=POSTHOG_MEMVERSE_API_KEY=$POSTHOG_MEMVERSE_API_KEY
# Run (use these dart-defines, with your env vars!):
flutter run \
--dart-define=CLIENT_ID=$MEMVERSE_CLIENT_ID \
--dart-define=POSTHOG_MEMVERSE_API_KEY=$POSTHOG_MEMVERSE_API_KEY \
--flavor development \
--target lib/main_development.dart \
--dart-define=AUTOSIGNIN=trueAUTOSIGNIN FOR DEMOING
- By default (AUTOSIGNIN=true), the app skips login and shows a fully interactive mock/dummy UI for the account dummysigninuser@dummy.com. Use this for QA, Maestro tests, and visual review.
- For real authentication (testing actual backend login), set
--dart-define=AUTOSIGNIN=falsewhen running, building, or installing the app.
flutter run --flavor development --target lib/main_development.dart \
--dart-define=CLIENT_ID=$MEMVERSE_CLIENT_ID \
--dart-define=POSTHOG_MEMVERSE_API_KEY=$POSTHOG_MEMVERSE_API_KEY \
--dart-define=AUTOSIGNIN=trueflutter run --flavor development --target lib/main_development.dart \
--dart-define=CLIENT_ID=$MEMVERSE_CLIENT_ID \
--dart-define=POSTHOG_MEMVERSE_API_KEY=$POSTHOG_MEMVERSE_API_KEY \
--dart-define=AUTOSIGNIN=falseNote:
- Never use
lib/main.dartas your target; always usemain_development.dartfor development. - All Android builds must use
--flavor developmentfor proper configuration. - App will not function if required env variables are missing.
- Production and staging use different entrypoints and vars.
- The included Maestro flows will work out of the box with
AUTOSIGNIN=true, so the login screen will be skipped and dummy/mock UI will be shown for screenshot and tab navigation tests. - For login form tests, run Maestro with
--dart-define=AUTOSIGNIN=false.
For Maestro testing or more platform-specific notes, see maestro_rules.txt and setup.md.