- Overview
- Features
- Technology Stack
- Architecture
- Getting Started
- Firebase Configuration
- Payment Integration
- Blockchain Features
- UI/UX Design
- Monetization
- Roadmap
- Contributing
- License
- Contact
Savessa is a cutting-edge mobile app designed to revolutionize community-based savings groups. Developed by CharaD7, founder of CharaTech, Savessa is built with scalability and inclusivity in mind, combining intuitive design, advanced analytics, and blockchain transparency to empower users across Africa and beyond.
Starting in Ghana with plans to expand across Africa and globally, Savessa addresses the challenges faced by traditional community savings groups by providing a secure, transparent, and user-friendly platform for managing group savings and contributions.
-
👤 User Registration & Authentication
- Secure login with email/phone verification
- Admin and member role management
- Profile customization
-
💵 Savings Management
- Monthly savings input and tracking
- Contribution history and logs
- Receipt uploads and verification
-
👥 Group Management
- Create and join savings groups
- Invite members via shareable codes
- Group rules and contribution settings
-
📊 Analytics & Reporting
- Group-wide savings analytics
- Personal savings progress tracking
- Year-end summaries and reports
- Visual dashboards with charts and milestones
-
🔔 Smart Notifications
- Due date reminders
- Missed payment alerts
- Milestone celebrations
- Group announcements
-
📱 Offline Access
- Core functionality available in low-connectivity regions
- Data synchronization when connection is restored
-
🌐 Multi-language Support
- Initial support for English and French
- Expandable to other African languages
-
🔒 Enhanced Security
- Biometric authentication
- End-to-end encryption for sensitive data
- Secure transaction processing
Savessa is built using modern technologies to ensure reliability, scalability, and security:
- Frontend: Flutter for cross-platform mobile development
- Backend: Firebase for authentication and real-time features
- Database: PostgreSQL for relational data storage
- Payments: Flutterwave and Paystack integration
- Blockchain: Algorand for transparent transaction records
- State Management: Provider and Bloc patterns
- Localization: Easy Localization for multi-language support
- Analytics: Firebase Analytics and custom analytics dashboard
- Storage: Firebase Storage and local secure storage
Savessa follows a clean architecture approach with separation of concerns:
lib/
├── core/ # Core utilities, constants, and theme
├── features/ # Feature modules (auth, savings, groups, etc.)
├── shared/ # Shared widgets and services
├── models/ # Data models
├── services/ # API and service integrations
└── main.dart # Application entry point
- Flutter SDK (3.0.0 or higher)
- Dart SDK (2.17.0 or higher)
- Android Studio / VS Code with Flutter extensions
- Firebase account
- Algorand development account
Depending on which platform you're targeting, you'll need additional build tools:
For Android:
- Android SDK
- Android NDK
For iOS/macOS:
- Xcode
- CocoaPods
For Linux:
- Clang or GCC (C++ compiler)
- Ninja build system
- GTK development headers
- Other dependencies:
sudo apt-get update sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
For Windows:
- Visual Studio with C++ build tools
- Windows 10 SDK
- CMake
- Ninja build system
# Using chocolatey choco install cmake ninja visualstudio2019-workload-nativedesktop
-
Clone the repository:
git clone https://github.com/CharaD7/savessa.git cd savessa -
Install dependencies:
flutter pub get
-
Configure Firebase:
- Create a Firebase project
- Add Android and iOS apps to your Firebase project
- Download and add the configuration files
- Configure Environment Variables: Copy
.env.exampleto.envand update with your Firebase credentials (see Firebase Configuration below)
-
Configure Algorand:
- Set up Algorand development environment
- Configure API keys in the app
-
Run the app:
flutter run
Savessa uses environment variables to store Firebase credentials securely. This approach improves security by keeping sensitive information out of version control and allows for different configurations across development, staging, and production environments.
-
Copy the example file:
cp .env.example .env
-
Get your Firebase credentials:
- Go to the Firebase Console
- Select your project
- Navigate to Project Settings (gear icon)
- Scroll down to the "Your apps" section
- For each platform (Web, Android, iOS, etc.), copy the respective configuration values
-
Update your
.envfile with the actual values:
# Firebase Configuration
# Shared across all platforms
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_MESSAGING_SENDER_ID=your-sender-id
FIREBASE_STORAGE_BUCKET=your-project-id.firebasestorage.app
# Platform-specific API Keys
FIREBASE_WEB_API_KEY=your-web-api-key
FIREBASE_ANDROID_API_KEY=your-android-api-key
FIREBASE_IOS_API_KEY=your-ios-api-key
FIREBASE_MACOS_API_KEY=your-macos-api-key
FIREBASE_WINDOWS_API_KEY=your-windows-api-key
# Platform-specific App IDs
FIREBASE_WEB_APP_ID=1:123456789:web:abcdef123456
FIREBASE_ANDROID_APP_ID=1:123456789:android:abcdef123456
FIREBASE_IOS_APP_ID=1:123456789:ios:abcdef123456
FIREBASE_MACOS_APP_ID=1:123456789:ios:abcdef123456 # Usually same as iOS
FIREBASE_WINDOWS_APP_ID=1:123456789:web:abcdef123456
# Web-specific configuration
FIREBASE_WEB_AUTH_DOMAIN=your-project-id.firebaseapp.com
FIREBASE_WEB_MEASUREMENT_ID=G-XXXXXXXXXX
# Windows-specific configuration
FIREBASE_WINDOWS_AUTH_DOMAIN=your-project-id.firebaseapp.com
FIREBASE_WINDOWS_MEASUREMENT_ID=G-YYYYYYYYYY
# iOS/macOS-specific configuration
FIREBASE_IOS_BUNDLE_ID=com.your-company.savessaWeb App Configuration:
FIREBASE_WEB_API_KEY→apiKeyFIREBASE_WEB_APP_ID→appIdFIREBASE_WEB_AUTH_DOMAIN→authDomainFIREBASE_WEB_MEASUREMENT_ID→measurementId
Android App Configuration:
FIREBASE_ANDROID_API_KEY→ Fromgoogle-services.json→client[0].api_key[0].current_keyFIREBASE_ANDROID_APP_ID→ Fromgoogle-services.json→client[0].client_info.mobilesdk_app_id
iOS App Configuration:
FIREBASE_IOS_API_KEY→ FromGoogleService-Info.plist→API_KEYFIREBASE_IOS_APP_ID→ FromGoogleService-Info.plist→GOOGLE_APP_IDFIREBASE_IOS_BUNDLE_ID→ FromGoogleService-Info.plist→BUNDLE_ID
Shared Values:
FIREBASE_PROJECT_ID→ Project ID (same across all platforms)FIREBASE_MESSAGING_SENDER_ID→ Sender ID (same across all platforms)FIREBASE_STORAGE_BUCKET→ Storage bucket (same across all platforms)
- ✅ DO: Keep
.envfile in your local development environment only - ✅ DO: Use different
.envfiles for different environments (dev, staging, prod) - ✅ DO: Add
.envto your.gitignorefile (already done in this project) - ❌ DON'T: Commit
.envfiles to version control - ❌ DON'T: Share
.envfiles via email or messaging - ❌ DON'T: Include real credentials in screenshots or documentation
The app automatically validates your Firebase configuration on startup:
- ✅ Success: "Firebase environment configuration validated successfully"
- ❌ Error: Detailed error message showing which variables are missing or invalid
For different environments, create separate .env files:
.env.development # Local development
.env.staging # Staging environment
.env.production # Production environmentThen load the appropriate file:
// In main.dart, you can conditionally load different env files
await dotenv.load(fileName: '.env.${Environment.current}');Savessa integrates with popular payment providers in Africa:
- Flutterwave: For mobile money and bank transfers in Ghana and other African countries
- Paystack: For additional payment options and wider coverage
These integrations allow users to:
- Make contributions directly from their mobile money accounts
- Set up recurring payments
- Receive payment confirmations and receipts
- Track all financial transactions securely
Savessa leverages Algorand blockchain technology for:
- Immutable Records: Transparent and tamper-proof tracking of monthly contributions
- End-of-Year Summaries: Blockchain-verified annual reports
- Smart Contracts: Automated verification of savings milestones
- Reward System: Smart contract automation for savings goals and achievements
Savessa features a clean, intuitive interface designed with all users in mind:
-
Color Palette:
- Primary – Royal Purple (#6A0DAD): Suggests wealth, ambition, and wisdom
- Accent – Metallic Gold (#FFD700): Signals premium quality and success
- Contrast – Pure White (#FFFFFF): Clean backdrop for high readability
- Dark Mode: Elegant dark theme with appropriate color adaptations
-
Theme Support:
- Light/Dark mode toggle for user preference
- System theme detection for automatic adjustment
- Persistent theme settings across app sessions
-
Accessibility: Support for older users and those with limited tech experience
-
Progressive Complexity: Simple interfaces that scale up as users become more familiar
-
Guided Onboarding: Step-by-step tutorials for all features
-
Animations: Engaging animations to enhance understanding and user experience
Savessa offers multiple revenue streams:
-
Tiered Subscription Plans:
- Free: Basic features with ads
- Premium: Advanced features, no ads
- Enterprise: Custom solutions for large groups
-
Transaction Fees:
- Small percentage on money transfers
- Withdrawal fees (with transparent pricing)
-
Optional Advertising:
- Non-intrusive ads for free-tier users
- Targeted financial service promotions
- Q3 2025: Launch in Ghana with core features
- Q4 2025: Expand to Nigeria and Kenya
- Q1 2026: Add advanced blockchain features
- Q2 2026: Implement AI-powered savings recommendations
- Q3 2026: Expand to other African countries
- Q4 2026: Global expansion planning
Error Message:
CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
Error: Unable to generate build files
Solution:
-
Install the Ninja build system and C++ compiler:
- Linux:
sudo apt-get install ninja-build cmake clang - Windows:
choco install ninja cmakeand install Visual Studio with C++ build tools - macOS:
brew install ninja cmake
- Linux:
-
If you can't install Ninja, you can configure Flutter to use a different CMake generator:
# For Linux/macOS export CMAKE_GENERATOR="Unix Makefiles" flutter run # For Windows set CMAKE_GENERATOR="Visual Studio 16 2019" flutter run
Solution:
- Try running with the
--no-pub-getflag first:flutter pub get --no-pub-get
- If that doesn't work, try upgrading dependencies:
flutter pub upgrade --major-versions
- If issues persist, check the
pubspec.yamlfor conflicting dependencies
We welcome contributions to Savessa! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add some amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Please read our Contributing Guidelines for more details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Developer: CharaD7, Founder of CharaTech
- Project Website: savessa.com
- Email: info@savessa.com
- Twitter: @savessaapp
- LinkedIn: Savessa
- GitHub: CharaD7
Made with ❤️ by CharaD7, Founder of CharaTech
Copyright © 2025 CharaD7 (CharaTech). All rights reserved.