REST API sederhana untuk manajemen Task menggunakan Node.js, Express, dan PostgreSQL.
Project ini dibuat sebagai latihan dan technical test dengan fokus pada clean code, struktur project yang rapi, dan konsep backend dasar.
Membangun REST API untuk manajemen Task dengan fitur utama:
- CRUD Task
- Filter dan pagination
- Validasi input & error handling
- Struktur project yang konsisten
- Node.js
- Express.js
- PostgreSQL
- pg (node-postgres)
- dotenv
.
├── databases
│ └── task-management.sql
├── src
│ ├── config
│ │ └── db.js
│ ├── controllers
│ │ └── task.controller.js
│ ├── repositories
│ │ └── task.repo.js
│ ├── routes
│ │ └── task.route.js
│ ├── services
│ │ └── task.service.js
│ ├── app.js
│ └── server.js
├── .env
├── package.json
└── README.md
CREATE TYPE task_status AS ENUM ('todo', 'in_progress', 'done');CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
status task_status NOT NULL DEFAULT 'todo',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);Status yang tersedia:
todoin_progressdone
Buat file .env di root project:
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=password_anda
DB_NAME=task_management- Install dependency
npm install- Setup database
- Buat database PostgreSQL
- Jalankan file SQL di folder
databases/task-management.sql
- Jalankan server
npm startPOST /tasks
{
"title": "Belajar Backend",
"description": "Belajar Node.js",
"status": "todo"
}GET /tasks
Query Params:
status(opsional)page(default: 1)limit(default: 10)
Contoh:
/tasks?status=todo&page=1&limit=5
GET /tasks/:id
PUT /tasks/:id
{
"status": "done"
}DELETE /tasks/:id
Controller → Service → Repository → Database
- Authentication
- Unit test
- Docker
Rifqi Pratama