Huddle

A real-time, multi-tenant workspace platform built end to end, NestJS backend, Next.js frontend, production infrastructure included.

Full-Stack Build NestJS + PostgreSQL Live in Production
View Live Site ↗
Huddle Workspace Dashboard
Huddle Real-Time Notes

The Brief

Most side projects stop at CRUD. This one didn't.

I set out to build something past the portfolio-project ceiling, a real multi-tenant workspace tool with the parts that actually separate a working demo from production software: authentication that survives a stolen token, permissions that hold up when three people share a workspace, and infrastructure that doesn't fall over under load. Huddle is the result, built solo, backend to frontend to deploy.

The Problem

Tutorials teach features. Production teaches failure modes.

Anyone can wire up a login form. Fewer people handle what happens after: a refresh token needs rotating without logging the user out, a workspace invite needs a role attached before it means anything, a background job needs to fail safely instead of silently. Those are the decisions this project was built around.

My Approach

Three decisions that defined the architecture.

01

Auth that assumes it will be attacked

JWT access tokens paired with rotating refresh tokens in httpOnly cookies, plus Google OAuth as a second entry path. Tokens are revocable server-side, so a compromised session can actually be shut down, not just expired.

02

Permissions, not just a login wall

Workspaces are multi-tenant with owner, editor, and viewer roles. Invites go through an accept/reject flow, ownership can transfer, and every action checks both identity and role, not just whether a token is valid.

03

Infrastructure that expects real traffic

Redis handles per-user caching with real invalidation, and BullMQ processes background jobs like thumbnail generation asynchronously. The whole backend runs in Docker on a non-root user with a health check, deployed independently from the frontend.

What Shipped

Not a demo. A running product.

Huddle Workspace Dashboard
Interface 01

Workspace Dashboard

Members, roles, and an invite flow with a pending-invite queue, accept or reject per invite, live in the UI shown here.

Huddle Real-Time Notes
Interface 02

Real-Time Notes

Notes sync across sessions over WebSockets. Two tabs open, one edit, both update. No refresh, no polling.

Under the Hood

Tested like it has to stay up.

17 verified Pact contract interactions between frontend and backend, k6 load testing against the live deployment, structured logging through nestjs-pino, and Sentry catching errors in production, not just in a terminal during development.

Huddle system architecture overview

The Outcome

Built solo. Deployed for real.
Nothing about it is a tutorial.

Every piece here, auth, permissions, caching, queues, testing, monitoring, was built and shipped inside this one codebase. Frontend on Vercel, backend on Render via Docker, database on Supabase-hosted Postgres, all wired to a live domain.

17 Pact contract
tests verified
9+ Backend systems
shipped
1 Codebase,
front to back
NestJS PostgreSQL Redis Docker Next.js
More Work

Keep exploring.