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

Node.jsTypeScriptJWT Auth

AWS Infrastructure

AWS CDKCloudFormationLambdaAPI GatewayECR

Database & ORM

Neon PostgresDrizzle ORMMigrations

DevOps & Tooling

GitHub ActionsJestTurboYarn Workspaces

Frontend

Vue 3ViteTailwindCSS

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.