Stop quitting. Start sharing. Progress Pals is a social habit-tracking application built with Flutter and Firebase that leverages accountability to help users stick to their goals.
Progress Pals was born out of a simple idea: habits are easier to keep when you aren't doing them alone. As a student at UNISA, I developed this app to solve the "silent quitter" problem by allowing a friend to see and cheer each other's progress in real-time.
- Social Accountability: Add a friend via email and share specific habits with them.
- Visual Analytics: Custom-built Bezier curve charts to visualize completion streaks over time.
- Hybrid Data Architecture: Seamlessly syncs between a local SQLite database and Firebase Cloud Firestore.
- Privacy First: Full user control with secure Firebase Authentication and a mandatory Account Deletion feature.
- Themed Experience: Full support for Light and Dark modes.
- Frontend: Flutter (Dart)
- Backend: Firebase (Auth, Firestore, Cloud Functions/Extensions)
- Local Storage: sqflite (SQLite for Flutter)
- State Management: Provider
- Architecture: Clean Architecture with MVVM (Model-View-ViewModel)
The project follows a modular structure to ensure maintainability and scalability:
└── lib
└── core
└── theme
├── app_colors.dart
├── app_theme.dart
├── theme_extensions.dart
├── theme_provider.dart
└── data
└── datasources
└── local
├── database_service.dart
└── remote
├── firebase_service.dart
└── models
├── friend_model.dart
├── habit_model.dart
└── repositories
├── habit_repository.dart
└── presentation
└── pages
└── analytics
├── analytics_page.dart
├── friend_analytics_page.dart
└── auth
├── welcome_page.dart
└── friends
├── add_friend.dart
├── friends_page.dart
└── habit
├── add_habit.dart
├── habit_detail_page.dart
└── home
├── home_content.dart
├── home_page.dart
└── profile
├── profile_page.dart
└── viewmodels
├── friends_viewmodel.dart
├── home_viewmodel.dart
└── widgets
├── app_button.dart
├── date_bubble.dart
├── habit_card.dart
├── app_router.dart
├── app_state.dart
├── firebase_options.dart
└── main.dart
🚀 Getting Started Prerequisites Flutter SDK (3.x or higher)
CocoaPods (for iOS builds)
A Firebase Project
Installation Clone the repo:
git clone [https://github.com/your-username/progress-pals.git](https://github.com/your-username/progress-pals.git)
Install dependencies:flutter pub getConfigure Firebase:
Add your google-services.json (Android) and GoogleService-Info.plist (iOS).
Run the app:
flutter run📄 Privacy & Support
Support: lesetja.dev/support
Privacy Policy: lesetja.dev/privacy
👨💻 Developer Lesetja Student at UNISA, South Africa
Portfolio: lesetja.dev
LinkedIn: Lesetja
Email: progresspals@lesetja.dev
📜 License Distributed under the MIT License. See LICENSE for more information.