A backend-only REST API for managing projects, tasks, and comments. Built with NestJS — no frontend included; consume it via Swagger/Postman or your own client.
User
└── owns many Projects
└── has many Tasks
├── assigned to a User
└── has many Comments
└── written by a User
- Project — name, description, owned by a User
- Task — title, description, status (
TODO|PENDING|DONE), priority (low|medium|high), belongs to a Project, optionally assigned to a User - Comment — content, belongs to a Task, written by a User
- NestJS — Node.js framework, Express adapter
- Prisma — ORM
- PostgreSQL — database
- Better Auth — authentication (email + password, session-based)
- Arcjet — rate limiting / bot protection / security
- Biome — linting and formatting
- Husky + commitlint — git hooks, conventional commit enforcement
- Bun installed
- A running PostgreSQL instance
bun install
cp .env.example .env # fill in DATABASE_URL and auth secret
bunx prisma migrate dev
bun run start:devThe API will be available at http://localhost:3000.
| Command | Description |
|---|---|
bun run start:dev |
Start in watch mode |
bun run build |
Compile to dist/ |
bun run start:prod |
Run the compiled build |
bun run lint |
Check lint/format issues (Biome) |
bun run lint:fix |
Auto-fix lint/format issues |
bun run test |
Run unit tests |
bun run test:e2e |
Run end-to-end tests |
bun run typecheck |
Type-check without emitting |
Full steps in
DEPLOYMENT.md
Push to main → GitHub Actions builds the Docker image, pushes to GHCR, then triggers Render to pull and deploy.
- API: taskforge-api-9i9h.onrender.com
- Swagger Docs: taskforge-api-9i9h.onrender.com/docs
Note: Hosted on Render's free tier — the service sleeps after 15 minutes of inactivity. If the first request hangs, it's waking up (~30 seconds). Just wait and retry.
Swagger UI is available at /docs once the server is running.
MIT — see LICENSE.