DevFest Pescara app - A modular Flutter app for event and quest management.
Filch is organized as a melos workspace with modular architecture. Here's the main structure:
The Flutter project is divided into several modular packages:
packages/app/- Main Flutter app that integrates all modulespackages/core/- Shared core functionality (utilities, configurations)packages/auth/- Firebase authentication managementpackages/ui/- Reusable UI components and themepackages/i18n/- Internationalization managementpackages/quests/- Quest and challenges systempackages/user/- User profile managementpackages/staff/- Staff functionalitypackages/schedule/- Event schedule managementpackages/sorting_ceremony/- Sorting ceremonypackages/media_manager/- Media and image managementpackages/assets/- Shared assets
functions/- Python Firebase Functions for server-side logicnode-functions/- Node.js TypeScript Firebase Functionsfirebase_command_line_scripts/- Scripts for Firestore data management
firebase.json- Firebase configurationfirestore.rules- Firestore security rulesfirestore.indexes.json- Firestore indexespubspec.yaml- Melos workspace configuration
- Flutter SDK (version >=3.32.5)
- Dart SDK (version ^3.8.1)
- Node.js (version 20+) for Firebase Functions
- Python (version 3.12+) for Python Firebase Functions
- Firebase CLI
- Git
git clone <repository-url>
cd filchInstall melos to manage the workspace:
dart pub global activate melosBootstrap the workspace (install dependencies for all packages):
melos bootstrapnpm install -g firebase-toolsfirebase logindart pub global activate flutterfire_cliflutterfire configureSelect your Firebase project and continue to generate firebase_options.dart.
cd node-functions
npm install
cd ..cd functions
pip install -r requirements.txt
cd ..cd firebase_command_line_scripts
npm install
cd ..Create the following configuration files (see "Required Secret Files" section):
.env(for Flutter).keystoreandsecrets.properties(for Android)Secrets.xcconfig(for iOS)- Service Account Key for Firebase Admin SDK
Generate all necessary code (localizations, models, etc.):
melos run generatedart run slangFor local development with emulators:
cd node-functions
npm run servecd packages/app
flutter build apk # For Android
flutter build ios # For iOScd node-functions
npm run deployRun tests for all packages:
melos run test- Main app: Work primarily in
packages/app/ - New features: Create business logic in specific packages
- UI Components: Add reusable components in
packages/ui/ - API calls: Use
packages/core/for shared services
Thanks to the modular structure, you can develop with hot reload active:
cd packages/app
flutter runFor local debugging of functions:
cd node-functions
npm run serveThis will start Firebase emulators for local testing.
.env- Environment variables file
.keystore- Keystore for APK signingsecrets.properties- Secret properties for Android build
Secrets.xcconfig- Secret configuration file for iOS
Filch app uses Firebase Functions for server-side logic. To deploy functions you need:
- A Firebase project
- Service Account Key for Firebase Admin SDK
- Functions are located in
functionsfolder (Python) andnode-functionsfolder (TypeScript)
To manage Firestore data there's a project called firebase_command_line_scripts used to seed data into Firestore.
This project provides a set of scripts to manage Firestore data. Read the README.md in the project to learn how to use it.
- Go to Firebase Console
- Go to Project Settings > Service accounts
- Generate a new private key
- Save the JSON file as
serviceAccountKey.jsoninfirebase_command_line_scripts/
- "Flutter SDK not found": Make sure Flutter is in PATH
- "Firebase project not configured": Run
flutterfire configure - "Melos command not found": Run
dart pub global activate melos - Build errors: Make sure all secrets are configured correctly
If you have issues, you can do a complete reset:
melos clean
melos bootstrap- Create a branch for your feature
- Follow the project's code conventions
- Add tests if necessary
- Create a pull request
For specific questions about individual modules, check the README.md files in the respective package folders.
To manage Firestore data there is a project called firebase_command_line_scripts that is used to seed data into Firestore.
This project provide a set of scripts to manage Firestore data.
read the README.md in the project to know how to use it.
Questi endpoint sono stati testati nell'emulatore locale.
- scan_other_attendee (Utilizzato Request con dati mockati e non Callable) -> Da testare deployato
- submit_answer (Utilizzato Request con dati mockati e non Callable) -> Da testare deployato
- user_points_sentinel (Modificato record direttamente da firestore e verificata la modifica)