MyDuit - Personal Finance Aggregation Platform
Inspiration
Young Malaysians juggle 5-7 financial apps daily, Ryt Bank for salary, Touch 'n Go for tolls, GrabPay for food, ShopeePay for shopping. Without a unified view, they're overspending, missing savings opportunities, and making financial decisions blindly. So we saw an opportunity to build something that helps our generation take control of their financial lives while promoting sustainable spending.
What it does
MyDuit aggregates all your banks and e-wallets (Ryt Bank, RHB, GrabPay, Touch 'n Go, ShopeePay) into one intelligent dashboard. It provides:
- Unified view of all accounts with real-time synchronization
- Smart analytics with 6-month spending trends and category breakdowns
- Behavioral nudges like "Food spending is up 31% this month—save RM300 by cooking 3x/week"
- Sustainability tracking to monitor environmental impact of spending
- Multi-currency support with real-time exchange rates (MYR, USD, SGD, EUR, etc.)
How we built it
We implemented Clean Architecture (Hexagonal) for scalability:
- Domain Layer: Pure business logic (
User,Account,Transaction,Nudgeentities) - Application Layer: Services for dashboard, transactions, nudges, currency conversion
- Infrastructure Layer: Prisma ORM, Virtual Bank API, Exchange Rate API
- API Layer: Express.js RESTful controllers
- Frontend: Next.js 14 with App Router, Chart.js visualizations, TypeScript
Tech Stack: TypeScript, Node.js, Express, Prisma, SQLite/PostgreSQL, Next.js 14, React, Chart.js, PM2
We created shared types between frontend/backend for type safety and automated deployment scripts for rapid production deployment.
Challenges we ran into
- Clean Architecture learning curve - Keeping domain layer pure required discipline, but paid off in maintainability
- TypeScript configuration - Shared types between monorepo needed careful tsconfig setup
- Production deployment - Next.js rewrites pointed to localhost; fixed with environment-aware configuration
- Real-time aggregation performance - Optimized with parallel requests, smart caching, reduced from 3-4s to <500ms
- Intelligent nudges - Made them contextual with comparative analysis, not generic advice
Accomplishments that we're proud of
Clean Architecture from day one - Production-ready, testable, zero coupling in domain layer
Beautiful, responsive UI - Modern design with interactive charts that works on mobile
Shared type system - Type safety across frontend/backend prevents integration bugs
Comprehensive documentation - README, architecture docs, API docs, deployment guides
What we learned
Technical:
- Clean Architecture's initial investment pays off immediately in maintainability
- TypeScript prevents countless bugs when shared between frontend/backend
- Next.js 14 App Router is powerful but has a learning curve
- Real-time data aggregation needs parallel requests and smart caching
- Documentation-as-you-go keeps teams aligned
Business:
- Open Finance infrastructure is ready in Southeast Asia
- Young professionals desperately need unified financial tools
- Sustainability in fintech is completely unexplored
We're not just building an app. We're building financial empowerment for a generation.
Built with ❤️ in Malaysia for Malaysians (and the world)
Built With
- express.js
- next.js
- prisma
- react
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.