A Flutter-based mobile application that supports real-time geofencing, user authentication, and data collection, designed to provide seamless functionality with intuitive features.
- Authentication: Secure login and registration using Firebase Authentication.
- Geofencing: Dynamically check user location within predefined boundaries.
- Real-time Database: Store and fetch data using Firebase Firestore.
- Dark Mode: Mobile app supports dark mode for better usability.
- Releases: Automatically publish APK files to a public repository as GitHub Releases.
- Frontend: Flutter, Dart
- Backend: Firebase Firestore, Firebase Authentication
- Version Control: Git, GitHub
- Build System: GitHub Actions
- Design: Adobe Illustrator
Follow these steps to set up the project locally:
-
Clone the Repository:
git clone https://github.com/HimalThapaMagar/Public-SOCRATES.git cd socrates
-
Install Flutter Dependencies:
flutter pub get
-
Configure Firebase:
- Add your
google-services.json
(for Android) andGoogleService-Info.plist
(for iOS) files to the respective directories. - Ensure
firebase_options.dart
is generated locally usingflutterfire configure
.
- Add your
-
Run the App:
flutter run
To build the release APK, run:
flutter build apk --release
The generated APK will be located in build/app/outputs/flutter-apk/
.
lib/
├── main.dart # Entry point of the application
├── firebase_options.dart # Firebase configuration (local only)
├── pages/
│ ├── add_data_page.dart # Handles data input and geofence addition
│ └── ... # Other app pages
├── services/
│ ├── geofence_service.dart # Geofence logic and validations
│ └── ... # Other services
build/ # APK and build artifacts
Manual testing was employed to validate:
- UI/UX functionality across modules.
- Geofencing logic and accuracy.
- Firebase integration for data storage and authentication.
Automated testing is planned for future iterations.
- Implement automated testing for geofencing and Firebase integrations.
- Optimize APK release workflow for faster deployments.
This project is licensed under the Creative Commons Attribution-NonCommercial (CC BY-NC) license.
We welcome contributions! Please fork the repository and submit a pull request for review.