A secure, modern Node.js backend for user authentication, rate limiting, and bot protection using Arcjet, Drizzle ORM, Neon, and Express 5.
- User authentication (JWT, bcrypt)
- Rate limiting and bot detection (Arcjet)
- Secure headers (Helmet)
- Logging (Winston, Morgan)
- RESTful API endpoints
- Dockerized for dev/prod
- CI/CD with GitHub Actions
- Test coverage with Jest & Supertest
- express
- drizzle-orm
- @neondatabase/serverless
- @arcjet/node
- helmet
- cors
- cookie-parser
- winston
- morgan
- jsonwebtoken
- bcrypt
- zod
- dotenv
- jest
- supertest
- drizzle-kit
- eslint
- prettier
git clone https://github.com/Sainava/Acquisitions.git
cd Acquisitions
npm installCopy .env.example to .env and fill in your secrets:
PORT=3000
NODE_ENV=development
DATABASE_URL=...
ARCJET_KEY=...
npm run devnpm test- Development:
docker-compose -f docker-compose.dev.yml up - Production:
docker-compose -f docker-compose.prod.yml up
GET /health— Health checkGET /api— API statusPOST /api/auth/sign-up— RegisterPOST /api/auth/sign-in— LoginPOST /api/auth/sign-out— LogoutGET /api/users— List users
- Arcjet middleware protects all endpoints in dev/prod (rate limiting, bot detection, shields)
- In test mode (
NODE_ENV=test), Arcjet is bypassed for reliable test runs
- Lint, format, test, and Docker build/push workflows via GitHub Actions