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, Nudge entities)
  • 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

  1. Clean Architecture learning curve - Keeping domain layer pure required discipline, but paid off in maintainability
  2. TypeScript configuration - Shared types between monorepo needed careful tsconfig setup
  3. Production deployment - Next.js rewrites pointed to localhost; fixed with environment-aware configuration
  4. Real-time aggregation performance - Optimized with parallel requests, smart caching, reduced from 3-4s to <500ms
  5. 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

Share this project:

Updates