API sederhana untuk mengelola catatan menggunakan Node.js, Express.js, dan Supabase (PostgreSQL). Aplikasi ini siap di-deploy ke Vercel.
- Menampilkan semua catatan
- Menambahkan catatan baru
- Menampilkan satu catatan berdasarkan ID
- Memperbarui catatan berdasarkan ID
- Menghapus catatan berdasarkan ID
- Clone repository ini:
git clone <repo_url>
- Masuk ke direktori proyek:
cd express-notes-api - Install dependensi:
npm install
- Buat file
.envberdasarkan.env.exampledan isi dengan kredensial Supabase Anda:cp .env.example .env
- Buat database di Supabase dan jalankan SQL dari file
supabase-schema.sql
Aplikasi ini menggunakan Supabase (PostgreSQL) sebagai database. Model utama adalah notes dengan struktur sebagai berikut:
id: BIGINT (Primary Key, Auto Increment)title: TEXT (Required)content: TEXT (Required)tags: JSONB (Optional)created_at: TIMESTAMP WITH TIME ZONEupdated_at: TIMESTAMP WITH TIME ZONE
File supabase-schema.sql berisi SQL untuk membuat tabel dan kebijakan keamanan di Supabase.
Jalankan perintah berikut untuk menjalankan server:
npm startServer akan berjalan di http://localhost:9876.
Proyek ini sudah dikonfigurasi untuk di-deploy ke Vercel. Pastikan untuk menambahkan variabel lingkungan berikut di Vercel:
SUPABASE_URL: URL Supabase AndaSUPABASE_KEY: Kunci Anon/Service Role Supabase Anda
Kemudian deploy dengan menggunakan Vercel CLI atau menghubungkan repositori GitHub Anda ke Vercel.
- URL:
/api/notes - Method:
GET - Response:
{ "status": "success", "data": { "notes": [ { "id": "abc123", "title": "Judul Catatan", "tags": ["tag1", "tag2"], "content": "Isi catatan", "createdAt": "2024-03-13T10:00:00.000Z", "updatedAt": "2024-03-13T10:00:00.000Z" } ] } }
- URL:
/api/notes - Method:
POST - Body:
{ "title": "Judul Baru", "tags": ["tag1", "tag2"], "content": "Isi catatan baru" } - Response:
{ "status": "success", "message": "Catatan berhasil ditambahkan", "data": { "noteId": "xyz789" } }
- URL:
/api/notes/{id} - Method:
GET - Response:
{ "status": "success", "data": { "note": { "id": "abc123", "title": "Judul Catatan", "tags": ["tag1", "tag2"], "body": "Isi catatan", "createdAt": "2024-03-13T10:00:00.000Z", "updatedAt": "2024-03-13T10:00:00.000Z" } } }
- URL:
/api/notes/{id} - Method:
PUT - Body:
{ "title": "Judul Baru", "tags": ["tag1", "tag2"], "content": "Isi catatan diperbarui" } - Response:
{ "status": "success", "message": "Catatan berhasil diperbarui" }
- URL:
/api/notes/{id} - Method:
DELETE - Response:
{ "status": "success", "message": "Catatan berhasil dihapus" }
- Node.js
- Express.js
- Supabase (PostgreSQL database)
- express-async-handler (untuk penanganan error asinkron)
- cors (untuk mengelola Cross-Origin Resource Sharing)
- dotenv (untuk mengelola variabel lingkungan)