Gathering Place is a Node.js + Express API for authentication, backed by PostgreSQL with Prisma. It already includes request hardening with Helmet, Arcjet bot/shield/rate-limit rules, and cookie-based JWT auth.
- User signup (
/api/auth/sign-up) - User signin (
/api/auth/sign-in) - User signout (
/api/auth/sign-out) - Health endpoint (
/health) - Basic API metadata endpoint (
/api)
- Node.js (ESM)
- Express 5
- Prisma + PostgreSQL
- Arcjet (
shield,detectBot, rate limiting) - JWT + httpOnly cookies
- Winston + Morgan logging
- Docker + Docker Compose
src/app.js: Express app and middleware wiringsrc/server.js: HTTP server bootstrapsrc/controllers/*: Route handlerssrc/services/*: Domain/data logicsrc/middleware/*: Security middlewaresrc/config/*: Logger, DB, Arcjet configsrc/prisma/schema.prisma: Data model
- Install dependencies:
pnpm install- Set environment values (copy from
.env.exampleor use your own.env). - Start dev server:
pnpm devThe app runs on http://localhost:3000 by default.
pnpm build
pnpm startFor local development:
PORTNODE_ENVDATABASE_URLJWT_SECRETARCJET_KEYLOG_LEVEL(optional)
For production (must be present):
NODE_ENV=productionDATABASE_URLJWT_SECRETARCJET_KEY
GET /GET /healthGET /apiPOST /api/auth/sign-upPOST /api/auth/sign-inPOST /api/auth/sign-out