Baseline setup for anonymous reveal-based social app. Uses Firebase Auth, Firestore, Storage, Riverpod, and GoRouter.
- Flutter SDK 3.38+
- Firebase CLI (
npm i -g firebase-tools) - FlutterFire CLI (
dart pub global activate flutterfire_cliand add$HOME/.pub-cache/binto PATH)
Run from project root after logging into Firebase CLI:
flutter pub get
~/.pub-cache/bin/flutterfire configure --project <your-project-id> --platforms=ios,android,macos,web
This generates lib/firebase_options.dart and platform configs. Re-run if bundle IDs change.
flutter run
Use the script importer when you want to load many daily/weekly prompts into question_bank at once.
CSV format:
type,prompt,scheduledFor,status
daily,What is one small win you had today?,2026-03-10,scheduled
weekly,What is one goal you want to focus on this week?,2026-03-16,scheduledColumns:
type:dailyorweeklyprompt: required question textscheduledFor: requiredYYYY-MM-DDstatus: optional, defaults toscheduled
Notes:
- Weekly rows should usually use a Monday
scheduledFordate. - The importer writes to
question_bank, not livequestions. - Existing Cloud Functions still publish scheduled rows into
questionson their scheduled dates.
Template file:
scripts/question_bank_import_template.csvRun a dry run first:
bash scripts/import_question_bank.sh --file="../scripts/question_bank_import_template.csv" --dry-runImport for real:
bash scripts/import_question_bank.sh --file="../scripts/question_bank_import_template.csv" --on-duplicate=skipDuplicate modes:
fail: stop if a matchingtype + scheduledForrow already existsskip: keep the existing row and skip the import rowoverwrite: update the existing bank row for that date/type
Auth:
- For local imports against a real Firebase project, use Application Default Credentials, for example by setting
GOOGLE_APPLICATION_CREDENTIALSto a service account JSON file. - For emulator usage, point the script at your local Firestore emulator environment.