SmartSave is a GDPR-compliant smart savings application designed for users in the EU, focusing on transparency, collaboration, and security.
It combines traditional savings with AI-powered financial insights via the SaveBuddy AI assistant, allowing users to manage personal and group savings easily, while keeping their data private and secure.
| Developer | GitHub Username | Responsibilities |
|---|---|---|
| Daniel Adediran | @heisdanielade | Core Backend, DevOps & Frontend - repo management, authentication, profile & wallet management, savings, GDPR, notifications, CI/CD, SaveBuddy AI & frontend dev |
| Danylo Samedov | @DanSamedov | Core Backend & Frontend - authentication, profile & wallet management, transactions, savings, testing, SaveBuddy AI & frontend dev |
| Artem Ruzhevych | @ArtemRuzhevych | AI & Backend integrations - SaveBuddy AI system, logging, notifications, user analytics, GDPR, API metrics, research and testing |
- Features
- Snapshots
- Architecture
- Authentication
- Authorization
- GDPR Compliance
- Core Savings
- Technologies & Design Decisions
- Future Improvements
- Closing Note
- Individual and group savings management
- AI savings assistant (SaveBuddy) for automation, requires user consent
- GDPR-compliant data handling and user privacy management
- Email-based OTP verification and secure login (JWT & OAuth)
- Detailed requests logging with hashed IPs
- Rate limiting, and background email notifications
- CI/CD integration for automated deployments
- Redis caching and PostgreSQL indexing for performance
- Modular and scalable monorepo architecture
SmartSave uses a modular architecture within a monorepo setup.
Each feature lives in its own module under the modules/ directory, designed for separation of concerns and ease of scaling.
Modules:
auth— authentication and authorization logicgdpr— GDPR compliance and user data managementuser— user profile and preferencesrbac— admin actions and access controlwallet— wallet creation and balance managementsavings— individual and group savingsnotifications— email-based user notificationsshared— reusable schemas and utilities
Each module contains:
repository.py # Database access layer
models.py # Database models (except Auth module)
schemas.py # Pydantic schemas
service.py # Business logic
helpers.py # Utility functions (optional)- Versioning:
/v1/...URL structure for all endpoints - Docs: Swagger & ReDoc available at
/v1/docs(protected with Basic Auth) - Rate Limiting:
Per-minute/hourrestrictions per IP - Redis: Used for
cachingand fast data retrieval with reasonable TTLs + manual cache invalidation - Logging: Structured
JSON logsper request, with hashed IP addresses - Makefile: Common commands for Docker, Alembic, and Pytest
- Scripts: Dev and prod startup scripts in
scripts/ - Database: PostgreSQL + Alembic for
DB migrations - CI/CD: GitHub Actions workflows (
ci.yml,cd.yml) - Environment:
.env.exampleprovided for configuration variables
Backend System Flow:
Middleware → Router → Service → Repository → DatabaseSmartSave uses a secure, stateless authentication system built with JWT (JSON Web Tokens) and Email-based OTP (One-Time Password) verification.
- Registration: Secure onboarding with 6-digit OTP verification.
- Security: Account locking after failed attempts and real-time login notifications.
- Global Logout: Immediate token invalidation via versioning.
👉 Read the full Authentication breakdown here
Permissions are managed through a fine-grained Role-Based Access Control (RBAC) system, ensuring data integrity and user privacy.
- Roles: Distinct permissions for
USER,ADMIN, andSUPER_ADMIN. - Integrity: Financial data (wallets and transactions) is immutable and append-only.
- RBAC: Guarded endpoints using FastAPI dependency injection.
👉 Read the full Authorization breakdown here
Privacy is a first-class citizen in SmartSave. The application is built around the core principles of the General Data Protection Regulation (GDPR).
- Data Rights: Full support for Right to Access (Encrypted PDF exports) and Right to Forget (Anonymization).
- Log Privacy: Irreversible hashing of IP addresses in all system logs.
- Consent: AI-powered features like SaveBuddy require explicit user consent.
👉 Read the full GDPR Compliance breakdown here
To improve performance and reduce database load, we implemented Redis caching for frequently accessed endpoints, optimizing both latency and scalability.
👉 Read the full Caching breakdown here
SmartSave provides a comprehensive system for individual and collaborative savings, backed by a secure virtual wallet.
- Individual Goals: Set personal targets and track progress.
- Group Squads: Save together with shared goals and real-time history.
- Wallet Hub: Centralized balance management with multi-currency support.
👉 Read the full Savings & Wallet breakdown here
| Technology | Purpose | Design Relation |
|---|---|---|
| FastAPI | High-performance backend & auto-generated docs | Enables clear dependency injection and modular design |
| Pydantic | Data validation and serialization | Supports DRY and type-safe schema sharing |
| SQLModel + SQLAlchemy | ORMs for PostgreSQL | Enforces consistent data access layer (Repository pattern) |
| Alembic | Database migrations | Streamlined schema versioning |
| Slow-api | Rate-limiting | For security and simplified implementation |
| Redis | Caching | Optimizes performance and scalability |
| Docker | Containerization | Simplifies setup and deployment |
| Pytest | Automated testing | Ensures reliability and regression safety |
| GitHub Actions | CI/CD pipeline | Automates testing and deployment |
| React | Frontend | User interface and experience |
| Tailwind CSS | Styling | Responsive and modern design |
| Vite | Build tool | Fast and modern frontend development |
- SOLID: Dependency Injection in routers promotes modular and testable code.
- DRY: Shared helpers and reusable service methods minimize duplication.
- Separation of Concerns: Clear flow: Middleware → Router → Service → Repository.
- Extensibility: Notification service follows the ABC pattern, allowing easy integration of SMS or push services in the future.
- Factory + Registry Pattern: The email notification system uses a combination of design patterns:
- Factory Pattern (
EmailProviderFactory): Dynamically selects the email provider (SMTP or Resend) based on configuration, enabling easy switching between providers without code changes. - Registry Pattern (
EMAIL_TEMPLATES): Maps notification types to their corresponding templates, subjects, and context models in a centralized dictionary, making it simple to add new notification types. - Strategy Pattern (
EmailProviderABC): Defines a common interface for different email providers, allowing interchangeable implementations while maintaining consistent behavior. - This architecture ensures the notification system is flexible, maintainable, and easily extensible for new providers or notification types.
- Factory Pattern (
Few snapshots of the frontend screens, backend endpoints, email templates & API responses.
| Description | Preview |
|---|---|
| Landing Page | ![]() |
| Login Page | ![]() |
| User Dashboard | ![]() |
| User Profile | ![]() |
| Transactions | ![]() |
| Group Details | ![]() |
| Group Members | ![]() |
| Group Chat | ![]() |
| Withdraw from Group | ![]() |
| Data Report Request | ![]() |
| Description | Preview |
|---|---|
| Mobile Dashboard | ![]() |
| Mobile Groups | ![]() |
| Mobile Chat | ![]() |
| Mobile Transactions | ![]() |
| Description | Preview |
|---|---|
| Authentication | ![]() |
| Account & GDPR | ![]() |
| Wallet & Transactions | ![]() |
| Admin & Groups | ![]() |
| Description | Preview |
|---|---|
| Login Notification | ![]() |
| Reset Password | ![]() |
| GDPR Data Export | ![]() |
| Wallet Deposit | ![]() |
| Description | Preview |
|---|---|
| Wallet Deposit | ![]() |
| Wallet Transactions | ![]() |
- Introduce referral system for user growth.
- Split modules into dedicated microservices for better scalability.
- Integrate real banking APIs for live savings and transactions.
- Add SMSNotificationService and push notifications.
- Expand SaveBuddy AI to provide personalized financial recommendations.
SmartSave was initially designed as a final-year project by 3 students from the University of Zielona Gora - Computer Science & Econometrics but advanced to a production-grade system. It's not just a financial tool but a trustworthy digital companion for responsible saving.
Built with transparency, collaboration, and user privacy at its core; this project is a foundation for modern, ethical financial technology.
Thank you for checking out SmartSave! 💚























