Skip to content

Repository files navigation

Kumpulin Backend

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.

Stack

  • 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 + tsx untuk integration test

Prerequisites

  • Node.js 22 atau lebih baru
  • npm
  • PostgreSQL yang dapat diakses dari mesin development

Environment variables

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=development

CLIENT_ORIGIN dapat berisi beberapa origin yang dipisahkan koma. Browser origin yang tidak terdaftar akan ditolak. Jangan commit .env atau connection string nyata.

Setup

npm install
npm run prisma:generate
npx prisma migrate deploy
npm run seed

Untuk membuat migration saat mengembangkan schema:

npx prisma migrate dev --name nama_perubahan
npm run prisma:generate

Jangan menjalankan migrate reset pada database berisi data yang ingin dipertahankan.

Menjalankan project

Development:

npm run dev

Build dan production start:

npm run build
npm start

Quality commands

npm run typecheck
npm test
npm run build
npm run prisma:validate
npm run prisma:migrate:status

Integration 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.

Endpoint overview

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.

Dokumentasi belajar

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages