Personal Expense
Tracker
A web app for recording your expenses and seeing where your money goes. Sign in, add what you spend, and follow your spending on a dashboard.
-
Data isolation
Every query is scoped to the user in the validated Keycloak token. Another user's expense returns
404, so its existence isn't revealed. Two-user integration tests verify it. -
Server-side querying
Search, filters, sorting and capped paging compile into one EF Core query, projected to DTOs and backed by a composite
(UserId, ExpenseDate)index. -
Dashboard in SQL
Totals and category breakdowns are aggregated in SQL. The trend chart picks daily, weekly or monthly buckets from the range length.
-
Tested for real
API tests run on PostgreSQL in Testcontainers with the real migrations, not an in-memory fake. CI builds, tests and publishes Docker images.
- Backend
- C#, .NET 10, ASP.NET Core, EF Core
- Frontend
- React, TypeScript, TanStack Query, Recharts
- Data & auth
- PostgreSQL, Keycloak, OIDC + PKCE
- Tooling
- xUnit, Testcontainers, Vitest, Docker, GitHub Actions