When Happily Ever After started, we had a vision for universal preventive healthcare. Our initial approach was a superapp that did everything, which we quickly realised was vastly inferior to a solution promoting collaboration and a federation of interoperable apps (go web3!). Thus, Happily Ever After evolved from an all-in-one health super app, to an ecosystem that prides itself on collaboration, open-source tools and shared meaning.
We are archiving this project here to remind us of our roots, and to be public about our past experiments and their outcomes ✨
- Flutter
- (Android) Android SDK
- Android Studio
- or Android SDK command-line tools and JDK
- Set
ANDROID_SDK_ROOTexport ANDROID_SDK_ROOT="$HOME/android-sdk"- Add the above to your
.bashrcor.zshrc
- Add the above to your
- Extract command-line tools into
$ANDROID_SDK_ROOT/cmdline-tools/latestmkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" cd "$ANDROID_SDK_ROOT/cmdline-tools" unzip $PATH_TO_ZIP mv cmdline-tools latest - Add
$ANDROID_SDK_ROOT/cmdline-tools/latest/bintoPATHexport PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH"- Add the above to your
.bashrcor.zshrc
- Add the above to your
- Install Android 12 SDK
sdkmanager "platform-tools" "build-tools;32.0.0" "platforms;android-32" - Accept licenses
flutter doctor --android-licenses
- Set
- or
brew install android-sdk
- (iOS) Xcode
- Install command-line tools
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer` sudo xcodebuild -runFirstLaunch - Accept licenses
sudo xcodebuild -license
- Install command-line tools
- Existing emulator
- (Android) Create device using AVD Manager or
avdmanagersdkmanager "system-images;android-31;google_apis_playstore;x86_64" avdmanager create avd --name flutter_emulator --package "system-images;android-31;google_apis_playstore;x86_64" --device pixel_5 flutter emulators --launch flutter_emulator - You might want to enable hardware keyboard by setting this property in
~/.android/avd/flutter_emulator.avd/config.ini:hw.keyboard = yes - (iOS) Start Simulator
flutter emulators --launch apple_ios_simulator
- (Android) Create device using AVD Manager or
- Check Flutter setup
flutter doctor
git clone git@github.com:happilyeveraftercorp/hea.git
cd hea/app
If you're working on iOS, run the following to obtain the code-signing certificates:
bundle exec fastlane development_pull
If you're working on Android, ask Ambrose for the debug keystore file. See the section on Google Maps and Google Fit for more details.
flutter pub run build_runner build # only when schemas have changed
flutter run
flutter run --device-id DEVICE_ID
# For a list of devices
flutter devices
flutter pub add NAME
Even on Linux, you might need to update Podfile.lock by installing CocoaPods
and running pod update:
gem install cocoapods
cd ios; pod update; cd ..
To synchronise the list of development devices, run:
bundle exec fastlane development_sync
For other operations, see the documentation for the match command-line tool.
You only need to do this to change the Firebase project
dart pub global activate flutterfire_cli- Depends on Firebase CLI
npm install -g firebase-tools- Login with your Google Account that has been granted access to the development Firebase project
- Depends on Firebase CLI
flutterfire configure --project happily-ever-after-4b2fe --ios-bundle-id care.hea.app --android-app-id care.hea.app
| Firebase project | Purpose |
|---|---|
| happily-ever-after-4b2fe | Development, testing and inital version |
Current API keys:
- Google Fit
- Relies on the app's certificate, so the debug keystore SHA-1 needs to be registered in CGP
- Ambrose owns an already-registered debug keystore file.
- Google Maps (Ambrose's private project)
- Eventually need to be replaced with an official release API key in the project and add security measures
git clone git@github.com:happilyeveraftercorp/hea.git
cd hea/backend
docker-compose -f docker-compose.dev.yml up -d db adminer