Full-Stack · Serverless · Portfolio Case Study
TaskQuest Tracker
A gamified task tracker that turns daily routines into points, streaks, and rewards — deployed as a production full-stack app on Netlify.
task-quest-tracker.netlify.appArchitecture
Browser
React SPA
React SPA
↓
Netlify CDN
Static assets + SPA routing
Static assets + SPA routing
↓ /api/*
Netlify Function
Express · api.cjs · serverless-http
Express · api.cjs · serverless-http
↓
Neon Postgres
Users · Tasks · Sessions
Users · Tasks · Sessions
Monorepo: Vite frontend + Express API bundled for serverless at build time
Core Features
- Task gamificationEarn points and build streaks
- Rewards shopRedeem points for custom rewards
- Guest modeTry the app without an account
- Auth & sessionsRegister, login, persistent sessions
- Stats & historyTrack progress over time
- Calendar importGoogle Calendar integration
Tech Stack
React 18
TypeScript
Vite
Express
Drizzle ORM
Neon Postgres
Passport.js
TanStack Query
Tailwind CSS
Radix UI
Netlify Functions
esbuild
Deployment Highlights
-
Serverless Express on NetlifyBundled the full Express API into a single CommonJS function (api.cjs) with lazy init — no Vite deps at runtime.→ 2.2 MB self-contained function artifact
-
Session store in Lambdaconnect-pg-simple tried to read table.sql from disk — unavailable in /var/task.→ Inline SQL session table creation via Neon pool
-
Neon + serverless constraintsWebSocket DB driver and multi-statement queries fail in Netlify functions.→ poolQueryViaFetch + split SQL statements
-
Build pipelineNODE_ENV=production skipped devDependencies needed by Vite/esbuild.→ NPM_CONFIG_PRODUCTION=false in netlify.toml
7
App pages
20+
API routes
8
DB tables
100%
Serverless