- Fungsi Utama: Mengelola tugas pengguna melalui API, menyimpan data di Firebase, dan menyediakan pengingat otomatis berbasis tanggal.
- Teknologi:
- Server Framework: Node.js, Express.js
- Database dan Penyimpanan: Firebase
- Keamanan: JSON Web Token (JWT) untuk autentikasi
- Pengingat: Firebase Cloud Functions atau Node-Cron
Modul ini menyediakan API yang memungkinkan klien (frontend atau chatbot) untuk berinteraksi dengan aplikasi. API menyediakan endpoint CRUD (Create, Read, Update, Delete) untuk tugas, serta fitur autentikasi menggunakan JWT. Firebase digunakan untuk penyimpanan data, termasuk penyimpanan tugas, pengguna, dan pengaturan pengingat.
- Autentikasi:
- Saat pengguna melakukan login, backend akan memverifikasi identitas dan mengeluarkan token JWT yang digunakan untuk akses aman ke API.
- CRUD Tugas:
- API menyediakan endpoint untuk membuat, membaca, memperbarui, dan menghapus tugas di Firebase.
- Pengingat Otomatis:
- Firebase Cloud Functions atau Node-cron akan memeriksa tugas dengan
dueDate
yang mendekati dan mengirim notifikasi pengingat kepada pengguna.
- Firebase Cloud Functions atau Node-cron akan memeriksa tugas dengan
- Request Autentikasi ➔ Generate JWT ➔ Store Token
- API CRUD Tugas ➔ Store/Update/Delete Task di Firebase ➔ Response ke Klien
- Pengingat Otomatis ➔ Firebase Cloud Function ➔ Kirim Notifikasi ke Klien
- Tugas: Membuat struktur proyek dan menginstal dependensi yang diperlukan.
- Langkah:
- Inisialisasi proyek Node.js:
npm init -y npm install express firebase-admin jsonwebtoken dotenv
- Konfigurasi
.env
untuk Firebase dan JWT.
- Inisialisasi proyek Node.js:
- Tugas: Integrasi Firebase untuk penyimpanan tugas dan JWT untuk autentikasi.
- Langkah:
- Setup akun Firebase, buat project, dan unduh file konfigurasi Firebase (
firebase-adminsdk
). - Setup JWT secret di
.env
file untuk keamanan. - Buat file konfigurasi
firebaseConfig.js
untuk menginisialisasi Firebase SDK.
- Setup akun Firebase, buat project, dan unduh file konfigurasi Firebase (
- Tugas: Membuat middleware untuk autentikasi menggunakan JWT.
- Langkah:
- Buat middleware
authMiddleware.js
untuk memeriksa token JWT di setiap request. - Buat endpoint login yang menghasilkan JWT setelah pengguna berhasil autentikasi.
- Buat middleware
-
Tugas: Membuat endpoint untuk pengelolaan tugas.
-
Langkah:
- Create Task: Endpoint untuk menambahkan tugas baru.
- Read Task: Endpoint untuk mendapatkan detail tugas berdasarkan ID.
- Update Task: Endpoint untuk memperbarui tugas yang ada.
- Delete Task: Endpoint untuk menghapus tugas.
- Contoh Endpoint:
app.post('/tasks', authMiddleware, createTask) app.get('/tasks/:id', authMiddleware, getTaskById) app.put('/tasks/:id', authMiddleware, updateTask) app.delete('/tasks/:id', authMiddleware, deleteTask)
-
Tugas: Menjalankan pengingat otomatis saat
dueDate
mendekati. -
Langkah:
- Buat Firebase Cloud Function atau gunakan Node-Cron untuk penjadwalan pengingat.
- Kirim notifikasi jika
dueDate
mendekati.
- Contoh Firebase Cloud Function:
const functions = require('firebase-functions'); exports.sendReminder = functions.pubsub.schedule('every 24 hours').onRun(async (context) => { // Logic to check tasks and send reminders });
ChatTasker-Backend/
├── src/
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── taskController.js
│ ├── middleware/
│ │ ├── authMiddleware.js
│ ├── config/
│ │ ├── firebaseConfig.js
│ ├── routes/
│ │ ├── authRoutes.js
│ │ ├── taskRoutes.js
│ ├── index.js
├── .env
├── package.json
└── README.md
FIREBASE_PROJECT_ID=<YOUR_PROJECT_ID>
FIREBASE_CLIENT_EMAIL=<YOUR_CLIENT_EMAIL>
FIREBASE_PRIVATE_KEY=<YOUR_PRIVATE_KEY>
JWT_SECRET=<YOUR_SECRET_KEY>
const admin = require('firebase-admin');
const serviceAccount = require('path/to/firebase-adminsdk.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const db = admin.firestore();
module.exports = { db };
HTTP Method | Endpoint | Description | Authorization |
---|---|---|---|
POST | /login |
Login pengguna | Tidak perlu |
POST | /tasks |
Membuat tugas baru | JWT |
GET | /tasks/:id |
Mendapatkan detail tugas | JWT |
PUT | /tasks/:id |
Memperbarui tugas | JWT |
DELETE | /tasks/:id |
Menghapus tugas | JWT |
- Gunakan JWT untuk semua endpoint yang memerlukan autentikasi.
- Simpan token JWT di klien (misalnya, localStorage di frontend).
- Middleware
authMiddleware.js
memverifikasi JWT pada setiap request yang terautentikasi.
-
Clone Repositori:
git clone https://github.com/yourusername/ChatTasker-Backend.git cd ChatTasker-Backend
-
Instalasi Dependensi:
npm install
-
Jalankan Aplikasi:
npm start
-
Testing API: Gunakan Postman untuk menguji endpoint CRUD dan autentikasi.
- Unit Testing: Pastikan untuk menulis test pada tiap controller menggunakan Jest atau Mocha.
- Integration Testing: Uji autentikasi dan API CRUD dengan data di Firebase.
- E2E Testing: Lakukan uji end-to-end untuk memastikan pengingat berfungsi dengan benar.