Repository ini adalah API backend yang dirancang untuk mendukung aplikasi pelacakan kesehatan mental, jurnal harian, dan analisis psikologis berbasis AI yang akan digunakan di aplikasi BeinBout. Dibangun dengan fokus pada performa dan keamanan menggunakan Node.js, Express, dan Prisma ORM.
- CFS250D6Y309 - Muhamad Nadira Fabyansyah (Project Manager & AI Engineer)
- CFS134D6Y504 - Agung Arya Dwipa Laksana (Back-end Developer)
- CFS134D6Y415 - Kaka Kendra Nugraha (Front-end Developer)
- CFS296D6Y591 - Muhammad Irfan Daffa' Ardianto (Front-end Developer)
- CFS134D6Y584 - Denisyal Hendra Putra (Front-end Developer)
- Autentikasi: Sistem registrasi dan login menggunakan JWT (JSON Web Tokens).
- Daily Journal: Pencatatan jurnal harian yang mencakup metrik mood, intensitas, jam tidur, dan kualitas tidur.
- Dashboard Analytics: Penyediaan data chart harian untuk memantau fluktuasi mood dan durasi tidur selama 7 hari terakhir.
- User Persona & Questionnaires: Asesmen psikologis awal dan mingguan berbasis standar medis (PHQ-9, GAD-7, PSQI, dll).
- AI Integration: Analisis sentimen, deteksi anomali, dan refleksi AI pada setiap entri jurnal (Via External AI Service).
- API Documentation: Dokumentasi interaktif menggunakan Swagger UI.
- Runtime: Node.js
- Framework: Express.js
- ORM: Prisma
- Database: PostgreSQL (Supabase)
- Caching/Session: Redis
- Deployment: Vercel (Serverless Functions) atau Docker
Pastikan kamu sudah menginstal perangkat lunak berikut di komputermu:
- Node.js (v16 atau lebih baru)
- npm atau yarn
- Git
Clone repositori ini dan instal semua dependensi:
git clone [https://github.com/USERNAME_KAMU/beinbout-backend.git](https://github.com/USERNAME_KAMU/beinbout-backend.git)
cd beinbout-backend
npm installBuat file .env di root directory proyek. Copy format di bawah ini dan isi nilainya sesuai dengan kredensial database dan layanan pihak ketiga (merujuk pada konfigurasi Vercel):
PORT=3000
API_VERSION=/api/v1
JWT_SECRET=your_secret_jwt_in_here
# Database (Supabase / PostgreSQL)
DIRECT_URL=postgresql://postgres.xxx:password@aws-1-ap-northeast-2.pooler.supabase.com:5432/postgres
# Redis
REDIS_URL=rediss://default:password@host:port
# AI Service
AI_SERVICE_URL=your_url_ai_service
AI_SERVICE_CREDS=your_secret_ai_service_tokenProyek ini menggunakan metode db push untuk sinkronisasi skema karena lebih aman untuk data prototyping saat ini. Jalankan perintah berikut untuk memastikan tabel database sudah siap:
npx prisma generate
npx prisma db pushWarning
Hindari menggunakan npx prisma migrate dev jika database sudah berisi data berharga tanpa melakukan backup terlebih dahulu untuk menghindari Drift Detected yang mereset tabel.
Mulai server untuk proses development:
npm run dev
# atau
node index.jsServer akan berjalan di http://localhost:3000
Proyek ini dilengkapi dengan Swagger UI untuk memudahkan testing dan integrasi dengan Frontend. Setelah server berjalan, buka URL berikut di browser kamu:
http://localhost:3000/api-docs(Sesuaikan dengan rute Swagger kamu)
beinbout/
├── prisma/ # Skema database Prisma (schema.prisma)
├── src/
│ ├── config/ # Konfigurasi Database (db.js), Redis, dll
│ ├── controllers/ # Logika bisnis (dashboard, journal, auth)
│ ├── middleware/ # Autentikasi JWT, validasi request
│ ├── routes/ # Definisi endpoint API
│ └── index.js # Entry point aplikasi
├── .env # Variabel environment (jangan di-commit!)
├── package.json # Dependensi dan script project
└── vercel.json # Konfigurasi deployment serverless Vercel
- BigInt Serialization: Proyek ini sudah diatur untuk meng-handle masalah serialisasi
BigIntdari PostgreSQL ke JSON agar kompatibel dengan Expressres.json(). - Timezone Handling: Semua pengiriman tanggal via API (seperti fitur jurnal) telah dinormalisasi menggunakan UTC (
setUTCHours) untuk mencegah bug zona waktu saat di-deploy ke Vercel.