Catatan Akademik: Proyek ini merupakan implementasi tugas besar perkuliahan mata kuliah Teknologi Web Service (TWS). Dikembangkan sebagai demonstrasi integrasi RESTful API PHP Native dengan aplikasi mobile Flutter. Tidak ada klaim atas konsep asli studi kasus ini.
Repositori Frontend (Mobile): Lihat aplikasi Flutter di vigenesia-mobile
Backend REST API berbasis PHP Native untuk aplikasi Vigenesia (Visi Generasi Indonesia) — platform berbagi motivasi & inspirasi. API ini melayani seluruh permintaan dari aplikasi mobile Flutter.
| Komponen | Detail |
|---|---|
| Bahasa | PHP 8.x |
| Database | MySQL 8.x |
| Web Server | Apache (Laragon / XAMPP) |
| Arsitektur | PHP File-Based Routing (Native, tanpa framework) |
| Response | JSON |
1. Clone & Letakkan di Web Root
# Jika menggunakan Laragon:
git clone <url-repo> C:/laragon/www/vigenesia
# Jika menggunakan XAMPP:
git clone <url-repo> C:/xampp/htdocs/vigenesia2. Import Database
- Buka
http://localhost/phpmyadmin. - Buat database baru bernama
vigenesia. - Pilih database
vigenesia→ klik tab Import. - Pilih file
database/init_db.sql→ klik Go.
3. Konfigurasi Koneksi Database
# Salin file template
cp api/koneksi.php.example api/koneksi.php
# Buka api/koneksi.php dan sesuaikan jika perlu:
# $host = "localhost";
# $user = "root";
# $pass = ""; <-- Isi password jika ada
# $db = "vigenesia";4. Jalankan
- Aktifkan Apache & MySQL di Laragon/XAMPP.
- Backend siap diakses di:
http://localhost/vigenesia/api/
vigenesia-backend/
├── api/
│ ├── koneksi.php.example # Template konfigurasi DB (commit aman)
│ ├── koneksi.php # Konfigurasi DB asli (DIABAIKAN git)
│ ├── Login.php
│ ├── registrasi.php
│ ├── get_motivasi_public.php
│ ├── get_motivasi_user.php
│ ├── get_motivasi_deleted.php
│ ├── post_motivasi.php
│ ├── PUTmotivasi.php
│ ├── delete_motivasi.php
│ ├── delete_permanen.php
│ ├── restore_motivasi.php
│ ├── like_motivasi.php
│ ├── toggle_favorit.php
│ └── update_profile.php
├── database/
│ └── init_db.sql # Skema database lengkap
├── images/ # Folder upload foto profil
│ ├── .gitkeep # Penjaga agar folder tetap ada di repo
│ ├── index.php # Proteksi directory listing
│ └── .htaccess # Proteksi directory listing
├── index.php # Proteksi root
├── index.html # Proteksi root
├── .gitignore
└── README.md
Base URL: http://<server-ip>/vigenesia/api
| Method | Endpoint | Deskripsi | Parameter |
|---|---|---|---|
POST |
/Login.php |
Login pengguna | email, password |
POST |
/registrasi.php |
Daftar akun baru | nama, profesi, email, password |
GET |
/get_motivasi_public.php |
Ambil semua motivasi publik | - |
GET |
/get_motivasi_user.php |
Ambil motivasi milik user | iduser, filter (milik_saya/pribadi/public) |
GET |
/get_motivasi_deleted.php |
Ambil motivasi di trash bin | iduser |
GET |
/get_motivasi.php |
Ambil semua motivasi (admin) | - |
POST |
/post_motivasi.php |
Tambah motivasi baru | judul, isi_motivasi, iduser, is_public |
POST |
/PUTmotivasi.php |
Edit motivasi | id, judul, isi_motivasi, is_public |
POST |
/delete_motivasi.php |
Soft delete (pindah ke trash) | id |
POST |
/delete_permanen.php |
Hapus permanen dari trash | id |
POST |
/restore_motivasi.php |
Pulihkan dari trash | id |
POST |
/like_motivasi.php |
Toggle like pada motivasi | id_motivasi, iduser |
POST |
/toggle_favorit.php |
Toggle favorit motivasi | id, is_favorit |
POST |
/update_profile.php |
Update profil & upload foto | iduser, nama, profesi, foto (multipart) |
// Sukses
{ "status": "success", "message": "...", "data": { ... } }
// Gagal
{ "status": "error", "message": "Deskripsi error" }| Tabel | Deskripsi |
|---|---|
user |
Data akun pengguna (nama, profesi, foto, email, password MD5, role) |
role |
Peran pengguna: 1=Member, 2=Admin |
motivasi |
Konten motivasi (judul, isi, is_public, is_deleted, is_favorit) |
likes |
Relasi like antara user dan motivasi |
kategori |
Kategori konten motivasi |
report_apk |
Laporan bug / masukan dari pengguna |
Proyek ini adalah implementasi akademik (v1.0). Beberapa hal yang perlu diperhatikan sebelum digunakan di lingkungan produksi:
- Password menggunakan hash MD5 (disarankan upgrade ke
bcrypt/Argon2). - Belum ada mekanisme JWT / Bearer Token.
- Validasi input masih menggunakan
if-elsemanual.
Dikembangkan oleh @drizaldi — Tugas Mata Kuliah Teknologi Web Service (TWS)