SWATI PORWAL
← Back to projects

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.app
Stack React · Express · Neon
Deploy Netlify Functions
Auth Passport + Postgres sessions
Year 2026

Architecture

Browser
React SPA
↓
Netlify CDN
Static assets + SPA routing
↓ /api/*
Netlify Function
Express · api.cjs · serverless-http
↓
Neon Postgres
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 Netlify
    Bundled 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 Lambda
    connect-pg-simple tried to read table.sql from disk — unavailable in /var/task.
    → Inline SQL session table creation via Neon pool
  • Neon + serverless constraints
    WebSocket DB driver and multi-statement queries fail in Netlify functions.
    → poolQueryViaFetch + split SQL statements
  • Build pipeline
    NODE_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