Backend service untuk proyek Emovision, sebuah platform journaling yang menyediakan RESTful API untuk mengelola autentikasi pengguna, menyimpan riwayat jurnal, kalkulasi streak, serta menyimpan hasil deteksi emosi dari AI.
- Manajemen Jurnal & Mood: Endpoint untuk menyimpan teks jurnal pengguna beserta hasil deteksi emosinya.
- Otentikasi Pengguna: Sistem registrasi dan login aman menggunakan enkripsi password (bcrypt).
- Kalkulasi Statistik: Menghitung streak harian dan merangkum statistik rata-rata emosi mingguan.
- Afirmasi Harian: Menyimpan dan mengambil data afirmasi positif pengguna.
- Runtime/Framework: Node.js / Express.js
- Database: PostgreSQL (Driver
pg) & Supabase - Security: bcrypt (Password Hashing), CORS
- Development: nodemon, dotenv
Sebelum memulai, pastikan kamu sudah menginstal:
- Node.js (versi 18.x atau lebih baru)
- Git
- Database PostgreSQL berjalan di lokal atau koneksi remote (Supabase).
1. Clone repositori
git clone [https://github.com/](https://github.com/)[EmoVision-Capstone-Project]/emovision-backend.git
cd emovision-backend2. Instal Depedensi
npm install3. Konfigurasi Environment Variables
Buat file .env di root direktori dan tambahkan kredensial database Supabase/PostgreSQL Anda:
PORT=3000
DATABASE_URL=postgresql://[user]:[password]@[host]:[port]/[database]?sslmode=require4. Jalankan Aplikasi
Untuk mode pengembangan (dengan auto-reload):
npm run devUntuk mode produksi:
npm startServer akan berjalan di http://localhost:3000.
Berikut adalah daftar endpoint utama yang tersedia:
Autentikasi (/api/auth)
- POST /register - Mendaftarkan pengguna baru (Body: full_name, username, password).
- POST /login - Autentikasi pengguna dan mengembalikan data user (Body: username, password).
Jurnal & Mood (/api/journals)
- GET / - Mengambil seluruh data riwayat jurnal.
- POST / - Menyimpan entri jurnal baru beserta hasil deteksi AI (Body: user_id, content, mood_result, ai_accuracy_score, ai_feedback). Endpoint ini juga otomatis memperbarui streak harian pengguna.
- GET /stats/weekly/:user_id?month={mm}&year={yyyy} - Mendapatkan data statistik rata-rata nilai mood per minggu untuk visualisasi grafik.
- GET /stats/:userId - Mendapatkan informasi current streak pengguna.
Afirmasi (/api/affirmations)
- GET / - Mengambil semua afirmasi yang tersimpan.
- POST / - Menyimpan afirmasi harian pengguna dan memperbarui streak (Body: user_id, content).
Pengguna (/api/users)
- GET /:id - Mengambil data profil spesifik pengguna berdasarkan ID.
- PUT /:id - Memperbarui nama lengkap, username, atau password pengguna.
emovision-backend/
├── node_modules/ # (Otomatis dibuat saat npm install dijalankan)
├── src/
│ ├── routes/
│ │ ├── affirmationRoutes.js
│ │ ├── authRoutes.js
│ │ ├── journalRoutes.js
│ │ └── userRoutes.js
│ ├── db.js
│ └── index.js
├── .env # (Direferensikan di .gitignore dan kode index.js/db.js)
├── .gitignore
├── package-lock.json
├── package.json
└── README.md
Backend ini dirancang khusus untuk mendukung kebutuhan frontend dan machine learning (deteksi wajah/teks) pada proyek capstone EmoVision. Jika ingin menambahkan skema database atau endpoint baru, silakan buat branch baru dan ajukan Pull Request.