About Projects Contact
Case Study

Expense API

Expense API adalah RESTful backend service untuk pengelolaan data pengeluaran secara aman. Sistem ini dirancang dengan fokus pada autentikasi token-based, otorisasi berbasis kepemilikan data, serta arsitektur backend yang modular dan mudah dikembangkan untuk kebutuhan production.

Laravel REST API Sanctum Docker CI/CD

Problem

Pengelolaan data keuangan pribadi menuntut tingkat keamanan dan integritas data yang tinggi. Setiap request harus dipastikan hanya dapat mengakses data milik pengguna yang bersangkutan, tanpa bergantung pada validasi manual di sisi controller. Di sisi lain, sistem juga harus dirancang agar mudah diaudit, diuji, dan dikembangkan dalam jangka panjang.

Goals

    • Menyediakan autentikasi token-based dan otorisasi berbasis kepemilikan data
    • Menerapkan pemisahan tanggung jawab antar layer backend
    • Mendukung alur deployment yang mendekati lingkungan production
    • Memastikan reliabilitas sistem melalui pengujian otomatis

Architecture

Backend Expense API dibangun menggunakan pendekatan arsitektur berlapis. Controller dijaga tetap ringan dengan hanya menangani validasi request dan respons HTTP, sementara logika bisnis dipusatkan pada service layer. Aturan otorisasi diterapkan melalui policy untuk memastikan bahwa akses data selalu mengikuti prinsip kepemilikan dan keamanan.

Diagram Arsitektur Backend Expense API
Diagram alur request dan pemisahan tanggung jawab antar layer backend

Security Considerations

  • Autentikasi berbasis token menggunakan mekanisme stateless authentication
  • Otorisasi berbasis kepemilikan data untuk mencegah akses lintas pengguna (BOLA)
  • Validasi input terpusat untuk mencegah data tidak valid atau berbahaya
  • Pencatatan aktivitas untuk mendukung audit dan penelusuran perubahan data

Deployment

Aplikasi dikontainerisasi menggunakan Docker untuk memastikan konsistensi lingkungan antara development dan production. Pipeline Continuous Integration dijalankan untuk melakukan pengujian otomatis setiap kali terjadi perubahan kode. Deployment ke server VPS dilakukan secara terkontrol untuk menjaga stabilitas dan keandalan sistem production.

Lessons Learned

Menerapkan desain keamanan dan otorisasi sejak awal pengembangan secara signifikan mengurangi kebutuhan refactoring di tahap selanjutnya. Pemisahan tanggung jawab antar layer backend juga terbukti mempermudah proses pengujian, debugging, dan pengembangan fitur baru.

Links