MyMoney
A personal finance tracker that brings savings, investments and goals spread across different platforms into one dashboard.
The problem
Savings and investments often sit across several apps and platforms, so there's no single view of net worth or of progress toward a goal.
MyMoney gives people one place to record them and see the whole picture. Entries are added manually; it doesn't connect to bank accounts.
What I built
- Dashboard
- Net worth overview, allocation chart, contribution history and recent activity.
- Savings and investments
- Create, edit and delete savings accounts and investments (stocks, ETFs, bonds and crypto) across platforms.
- Goals and reports
- Financial targets with progress tracking and deadline countdowns, plus monthly reports with charts.
- Accounts
- Email and Google sign-in with Firebase Authentication. Forms are validated with Zod and react-hook-form.
Technical decisions
- 01
Security lives in the data layer
Next.js middleware redirects signed-out users as a convenience, but Firestore security rules are what stop anyone reading or writing data they don't own.
- 02
A service per domain
Savings, investments, goals and activity each have their own Firestore service, so data access stays out of the UI components. A Zustand store holds client state.