Kumpulin adalah REST API untuk platform event. User dapat membuat dan memublikasikan event, mendaftar sebagai peserta, masuk waiting list ketika kapasitas penuh, melakukan pembatalan, menerima promosi otomatis, dan membaca notification. Organizer dapat mengelola peserta, melakukan check-in, mengirim announcement, dan membatalkan event tanpa menghapus historical data.
- Node.js dan Express 5
- TypeScript strict mode
- PostgreSQL
- Prisma ORM dengan PostgreSQL driver adapter
- Zod untuk runtime validation
- Argon2 untuk password hashing
- Server-side session dengan HttpOnly cookie
- Node test runner +
tsxuntuk integration test
- Node.js 22 atau lebih baru
- npm
- PostgreSQL yang dapat diakses dari mesin development
Salin .env.example menjadi .env, lalu sesuaikan nilainya:
PORT=3000
DATABASE_URL=postgresql://USER:PASSWORD@localhost:5432/kumpulin
CLIENT_ORIGIN=http://localhost:5173
NODE_ENV=developmentCLIENT_ORIGIN dapat berisi beberapa origin yang dipisahkan koma. Browser origin yang tidak terdaftar akan ditolak. Jangan commit .env atau connection string nyata.
npm install
npm run prisma:generate
npx prisma migrate deploy
npm run seedUntuk membuat migration saat mengembangkan schema:
npx prisma migrate dev --name nama_perubahan
npm run prisma:generateJangan menjalankan migrate reset pada database berisi data yang ingin dipertahankan.
Development:
npm run devBuild dan production start:
npm run build
npm startnpm run typecheck
npm test
npm run build
npm run prisma:validate
npm run prisma:migrate:statusIntegration test memakai database dari DATABASE_URL, tetapi hanya membuat dan membersihkan record dengan prefix khusus kumpulin-mvp-test. Tetap gunakan database development/test, bukan production.
| Area | Endpoint utama |
|---|---|
| Auth | POST /auth/register, POST /auth/login, GET /auth/me, POST /auth/logout |
| Events | POST /events, GET /events, GET /events/mine, GET/PATCH /events/:eventId |
| Lifecycle | POST /events/:eventId/publish, POST /events/:eventId/cancel |
| Registration | POST /events/:eventId/register, POST /events/:eventId/registration/cancel |
| Management | GET /events/:eventId/registrations, POST .../check-in |
| Announcement | POST /events/:eventId/announcements |
| Notification | GET /notifications, PATCH /notifications/:notificationId/read |
Detail request, response, auth, dan error tersedia di API Reference.