Featured Project
Hour Tracker
Instead of a collection of different projects, here you'll find a showcase for clean code, solid testing and efficient automation pipelines all wrapped up in a monorepo.
A serverless hour and expense tracking application still being developed. The idea and motivation for the project was driven by a request from a friend.
Backend & API Architecture
- Docker based AWS Lambda functions
- Node.js/TypeScript backend services
- API Gateway integration and routing
- JWT-based authentication flow
- Lambda authorizer pattern
- RESTful API design principles
- Error handling and structured logging
AWS Infrastructure & DevOps
- AWS CDK (Infrastructure as Code)
- ECR for container image management
- GitHub Actions CI/CD pipeline
- Monorepo with Yarn workspaces & Turbo
- 1-Click release pipeline
Database & Data Layer
- Neon Postgres serverless database
- Drizzle ORM for type-safe queries
- Database migrations with Drizzle Kit
- Multi-tenant data schema design
User Interface Layer
- Vue 3 with TailwindCSS
- Vite build tooling
- Component-based UI architecture
Technical Stack
Backend & API
AWS Infrastructure
Database & ORM
DevOps & Tooling
Frontend
Architecture Highlights
The application follows a serverless-first approach where all compute happens in Lambda functions. The authentication flow uses a dedicated Authenticator Lambda that issues JWTs, which are then validated by an Authorizer Lambda attached to API Gateway.
The database layer uses Neon Postgres with Drizzle ORM for type-safe database operations. Connection pooling is optimized for serverless environments. A Vue 3 interface provides user access to the backend API.
Current Status
With the Lambda functions currently being containerized, I want to switch to S3 for hosting the zipped source code instead of ECR. I noticed a higher cold start penalty and given that this is a side project, S3 storage costs are lower compared to the container registry.