Inspiration
Managing personal finances is something that many people struggle to maintain consistency with. Existing budgeting apps are often bloated, expensive, or store your data in opaque ways. I wanted to build something simple, fast, and secure that puts the user in control, with real-time insights and a frictionless UI.
So I created Expenses Tracker — a modern, serverless expense tracker that helps users stay on top of their budgets and spending without compromising speed, scalability, or simplicity.
What it does
Expenses Tracker helps users track daily expenses, organise them into budgets, and visualise where their money goes. Users can log expenses, set budgets, view spending summaries, duplicate past entries, and search across categories — all within a fast, mobile-friendly UI.
How we built it
Frontend:
- Built with React, TypeScript, Tailwind CSS, and Vite
- Uses React Context for state sharing
- Authenticated with AWS Cognito
- Features: search (Fuse.js), duplication, and real-time budget tracking
Backend:
- Provisioned using AWS CDK (TypeScript)
- API Gateway (with Cognito authorizer + throttling + logging)
- Lambda functions for expenses, budgets, and users
- DynamoDB with GSI for querying by category/user
- Logs sent to CloudWatch with managed IAM roles and proper
CfnAccountconfiguration
Challenges we ran into
- CloudWatch log role registration: API Gateway failed deployment until
CfnAccountand IAM role dependencies were resolved - DynamoDB modelling: Designing a schema that supports both budget-bound and standalone expenses with flexible querying
- Token expiration and 401s: Properly handling expired tokens in the frontend while showing meaningful errors
- Route conflicts: Avoiding ambiguity in API Gateway routes like
/expenses/{id}vs.budgets/{id}/expenses/${id}
Accomplishments that we're proud of
- End-to-end secure and scalable infrastructure, all managed via CDK
- Seamless login, data storage, and usage with zero servers to manage
- Fully responsive and intuitive UI optimised for real-world use
- Real-time budget visualisations and exportable records
- Extremely clean and extendable codebase with production readiness
What we learned
- How to design serverless apps using AWS best practices
- Advanced use of CDK to manage roles, logging, and complex API Gateway setups
- How to structure flexible NoSQL schemas with GSIs
- Building smooth authentication UX with Cognito in React
What's next for Expenses Tracker
- Add a calendar view for expense activity
- Push/email notifications for nearing budget limits
- OCR integration to scan receipts using AWS Textract
- Multi-user budgets (family/teams)
- Charts and analytics dashboards (Recharts/Nivo)
- Add end-to-end tests and CI/CD pipeline
Built With
- amazon-dynamodb
- api-gateway
- cdk
- lambda
- node.js
- react
- typescript
Log in or sign up for Devpost to join the conversation.