The Pariyatti mobile app.
- Design Docs & Wireframes (public)
- Install Java:
sudo apt-get install openjdk-14-jdk
orsudo apt-get install openjdk-11-jdk
- Install Android Studio: https://developer.android.com/studio
- Install Android SDK Tools (obsolete) in
Tools > SDK Manager
- Install Android SDK Command-line Tools in
Tools > SDK Manager
- Install the Android Studio Flutter Plugin
- (Optional) Configure udev to collect logs from a hardware device attached by USB:
sudo apt-get install adb && sudo usermod -aG plugdev $LOGNAME
- Install Android SDK Tools (obsolete) in
- Install Flutter: https://flutter.dev/docs/get-started/install
- run
flutter doctor
and follow any remaining instructions
- run
- Install Java:
- Download JDK 14: https://jdk.java.net/14/
cd ~/Downloads && tar xzf tar xzf openjdk-14.0.2_osx-x64_bin.tar.gz
sudo mv jdk-14.0.2.jdk /Library/Java/JavaVirtualMachines/.
echo 'export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-14.0.2.jdk/Contents/Home' >> ~/.zshrc
# or.bash_profile
- Install Xcode
- Install Flutter: https://flutter.dev/docs/get-started/install
- run
flutter precache
andflutter doctor
and follow any remaining instructions
- run
# Copy example config file to provide configuration secrets
cp config/app_config.sample.json config/app_config.json
# Fill in values of secrets/keys inside config/app_config.json
# (At the moment, the app doesn't require any.)
# Grab dependencies
flutter pub get
# Generate code for part-files. This generated code is used to
# parse/deserialize JSON and db data into model objects.
flutter pub run build_runner build
# Target sandbox environment
# This uses a `main` specific to the sand[box] server
flutter run --target lib/main_sand.dart
# Target production environment
# This uses a `main` specific to the prod[uction] server
flutter run --target lib/main_prod.dart
🌄 Everything below this point is for project admins. If this is your first time building patta
, you can stop here. :) 🌄
master
is for release builds. Merging changes intomaster
causes a build in CodeMagic which publishes to the Play Store.development
is for debug builds. These are not published to the Play Store but are automatically emailed to developers. Do version bumps in thedevelopment
branch only.- Feature Branches are used for all active development. Branch off of the
development
branch either in thepariyatti/patta
repo or in your own personal repo. When you are finished a User Story, submit a PR to thedevelopment
branch. Stories should be thoroughly tested before they are merged intomaster
.
Promotion:
[feature] ==> [development] ==> [master]
| | | | |
dev PR debug/test PR release
In order of preference:
-
Use a build from CodeMagic. Avoid locally signed release builds.
-
If for some reason CodeMagic isn't available: Get the
keystore.jks
andkeystore.properties
files from the Vault, copy them locally, and build locally.
# Create these files:
/android/keystore.jks
/android/keystore.properties
# Build + Run signed Android app with production environment:
flutter run --release --target lib/main_prod.dart
- Do it all by hand:
# Generate Android signing keystore from these instructions
# https://flutter.dev/docs/deployment/android#create-a-keystore
# Make sure to name the file "keystore.jks" and put it right inside the `/android` directory
# Copy sample properties file
cp android/keystore.sample.properties android/keystore.properties
# Fill in the key-alias, store-password and key-password as per your
# keystore inside the copied keystore.properties file
# Run signed Android app with production environment
flutter run --release --target lib/main_prod.dart
Ask Steven Deobald or Varun Barad for an account if you cannot see the app:
https://codemagic.io/app/5ea7faa6ab38b5000ac85f7b
We have two builds:
- Sandbox, which emails builds to developers
- Production, which publishes signed release builds to App/Play Stores
We should only ever have one published track in the Play Store. At this stage, our only track is the Internal
track. When the first public release is ready, this will change to the Production
track. Both of these tracks use the same signed release build targetting the production
kosa server. The only difference is that the Production
track is publicly visible.
When we're ready for our first public release, we will need to change Publish => Google Play => Track
to Production
and Build => Trigger on Push
to false
(public builds will be manual).
If you have answers to these questions, please move them to the top and put the answer in a sub-bullet.
-
What is the
delete(card)..where()
double-dot syntax in Moor?- This is not Moor-specific but rather a feature of Dart. The double-dot returns you the previous instance so you can keep operating on one object rather than chaining methods over previous methods' return values. For instance:
A.b()..c()
runsb()
on the instanceA
but it also runsc()
on the instanceA
, instead of on the return value ofb()
asA.b().c()
would.
- This is not Moor-specific but rather a feature of Dart. The double-dot returns you the previous instance so you can keep operating on one object rather than chaining methods over previous methods' return values. For instance:
-
What's the Right Way to do i18n?
-
Why are the emulators broken and can we fix them?
-
Philsophical: What's the deal with
State
vs.StatefulWidget
? -
Could the HomeScreen state switch be a tiny object unto itself?
-
How does the
factory
keyword work? -
If Santu comments on the
*Card.dart
files, are they readable to a newbie? -
Can Moor Converters move into multiple files?