A Professional Community Donation & Investment Platform
Stake Grow is a comprehensive Flutter-based mobile application designed to empower communities through collective financial growth. It facilitates transparent donation management, collective investments, and community-based micro-loans. Built with a focus on scalability, security, and modern architecture, it leverages Firebase for backend services and Riverpod for state management.
- Create & Join: Users can create communities or join existing ones via invite codes.
- Role-Based Access: Distinct roles for Admins, Moderators, and Members.
- Subscription Tracking: Monitors monthly subscriptions and tracks member join dates.
- Fund Management: Real-time tracking of total community funds.
- Flexible Donations: Support for both Monthly subscriptions and Random one-time donations.
- Payment Gateways: Integrated tracking for local payment methods: Bkash, Rocket, Nagad, and Manual entries.
- Verification: Robust status system (Pending, Approved, Rejected) with rejection reasons and transaction ID tracking.
- Project Tracking: Create and manage investment projects with details, start/end dates, and status (Active/Completed).
- Profit/Loss Calculation: Track invested amounts, expected profits, actual returns, and profit/loss status.
- Share Distribution: Automatically tracks user shares (
userShares) to calculate individual returns based on contribution.
- Borrowing: Members can request loans with specific reasons and repayment dates.
- Lender Tracking: Tracks which members' funds were used for the loan (
lenderShares) to ensure fair repayment distribution. - Lifecycle Management: Manages loan status from Request -> Pending -> Approved -> Repaid.
- Professional Identity: Users can showcase their profession alongside standard contact details.
- History: Tracks joined communities and account creation dates.
- Framework: Flutter (SDK ^3.9.2)
- Language: Dart
- Routing:
go_routerfor deep linking and smart navigation. - UI Components: Material 3 Design,
google_fonts,cupertino_icons.
- State Management:
flutter_riverpod&hooks_riverpod. - Pattern: Feature-First Architecture (MVCR - Model View Controller Repository).
- Functional Programming:
fpdartfor error handling (Either<Failure, Success>). - Equality:
equatablefor value comparisons.
- Core:
firebase_core. - Authentication:
firebase_authfor secure login/registration. - Database:
cloud_firestore(NoSQL with ACID transactions).
- PDF Generation:
pdf&printingfor generating reports. - Localization:
intlfor date and currency formatting. - Code Generation:
build_runner,json_serializablefor type-safe JSON serialization.
The project follows a Feature-First directory structure for better scalability:
lib/
├── core/ # Global utilities, common widgets, type definitions
├── features/
│ ├── auth/ # Authentication (Login, Signup, User Model)
│ ├── community/ # Community creation, dashboard, member list
│ ├── donation/ # Donation creation, history, validation
│ ├── investment/ # Investment projects, ROI tracking
│ └── loan/ # Loan requests, approvals, repayment
├── router/ # GoRouter configuration
├── firebase_options.dart # Firebase configuration
└── main.dart # Entry point
- Flutter SDK installed.
- Dart SDK installed.
- A Firebase project set up.
- Clone the repository:
git clone https://github.com/your-username/stake-grow.git
cd stake-grow
- Install dependencies:
flutter pub get
- Firebase Setup:
- Install the FlutterFire CLI.
- Configure your app:
flutterfire configure
- Ensure
firebase_options.dartis generated inlib/.
- Run Code Generation:
This project uses
json_serializable. Run the builder to generate model code:
dart run build_runner build --delete-conflicting-outputs
- Run the App:
flutter run
(Add screenshots of your Dashboard, Community View, and Investment screens here)
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new feature branch (
git checkout -b feature/amazing-feature). - Commit your changes.
- Push to the branch.
- Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.