A new Flutter project for managing expenses with role-based authentication and offline support.
No backend and cloud storage so I have use glcloud to setup notification so access token may expires and need to be refresh by me and set it to remote config to refresh
- 🔲 Set up Flutter project and configure Firebase
- 🔲 Implement role-based authentication (Admin, Manager, Employee)
- 🔲 Create dynamic accounts creation for each role (for tesing and expirenment)
- 🔲 Set up navigation for role-based routing
- 🔲 Implement expense creation for Employees (title, description, amount, receipt upload)
(Note: receipt upload is limited due to Firebase storage restrictions on the free tier) - 🔲 Store expenses locally using
sqflitefor offline support - 🔲 Sync offline data to the server when reconnected (Not done)
- 🔲 Implement Managers’ ability to approve/reject expenses
- 🔲 Admin can view all expenses with filtering options (user, date, status)
- 🔲 Create graphical dashboard views for each role (Currently normal view)
- 🔲 Implement push notifications using Firebase
(Note: iOS notifications are limited due to APNs system requiring an Apple Developer account) - 🔲 Employees get notified on approval/rejection
- 🔲 Managers get notified on new submissions
- 🔲 Implement expense pagination and search filtering
- 🔲 Write unit tests for expense management (Not done)
- 🔲 Refactor code to follow clean architecture (data, domain, presentation layers)
- 🔲 Write README with setup instructions and explanations
- 🔲 Final testing on Android & iOS
- 🔲 Upload project to GitHub and submit
- Flutter SDK
- Firebase setup (Authentication, Firestore, Firebase Messaging)
- sqflite for local database storage
- Firebase Cloud Storage (if needed for receipt upload)
-
Clone the repository:
git clone https://github.com/siriusanjan/expe_traking.git
-
Navigate to the project folder:
cd expe_traking -
Install dependencies:
flutter pub get
-
Set up Firebase for your project as described in the Firebase documentation.
-
Run the project:
flutter run
Feel free to fork this project and make improvements. Open a pull request with any suggestions or bug fixes.
This project is licensed under the MIT License - see the LICENSE file for details.