Backend Go
apps/api/ adalah implementasi Go/Fiber untuk menggantikan API Lumen. Entry point ada di cmd/api/main.go, konfigurasi environment di internal/config/config.go, dan route di internal/server/server.go.
Menjalankan stack lokal
cd apps/api
cp -n .env.example .env
docker compose up -d --build
Layanan Compose: postgres, minio, createbuckets, dan api. API menggunakan Air untuk hot reload. Port host mengikuti API_PORT dalam .env, default 8080. HTTP_ADDR adalah alamat listener di container. Pada konfigurasi lokal ini, API_PORT=8082; port 8081 dipakai server mock frontend.
Untuk database baru dan kosong, terapkan migrasi sekali:
make db-apply-migrations
Penting: target Makefile menjalankan seluruh .up.sql dan tidak mencatat migrasi mana yang sudah diterapkan. Jangan mengulanginya tanpa memeriksa skema aktif. Panduan database menjelaskan target lain yang bersifat destruktif.
Environment utama
| Variabel | Peran |
|---|---|
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD | Koneksi PostgreSQL |
JWT_SECRET, JWT_ISSUER, JWT_TTL_HOURS | Token pengguna |
CORS_ALLOW_ORIGINS | Origin frontend yang diizinkan |
STORAGE_DRIVER, STORAGE_LOCAL_ROOT | Storage lokal |
STORAGE_S3_* | Bucket, endpoint, region, dan kredensial MinIO/S3 |
OCR_SERVICE_URL, OCR_SERVICE_TOKEN | Submit dan polling OCR |
OCR_WEBHOOK_TOKEN | Verifikasi callback dari OCR |
Untuk proses Go di host, muat .env ke environment shell karena config.Load() membaca environment proses:
set -a
source .env
set +a
make run
Sesuaikan host database dan storage untuk proses yang berjalan di host. Compose sendiri mengganti DB_HOST menjadi postgres dan endpoint MinIO menjadi alamat internal.
Health dan dokumentasi API
Dengan contoh API di port 8081:
curl -fsS http://localhost:8082/health
curl -fsS http://localhost:8082/ready
/health adalah liveness API. /ready melakukan ping PostgreSQL. Swagger tersedia di /docs/swagger, ReDoc di /docs/redoc, dan YAML OpenAPI di /docs/openapi.yaml.
Modul utama
Handler dan repository di internal/server/ mengelola pengguna, role, perusahaan, bank, karyawan, supplier, kategori memo, jalur persetujuan, inbox, pembayaran, lampiran, notifikasi, dan laporan. API v2 memo menggunakan API key perusahaan. Test unit berada di paket internal; test bertag integration menggunakan PostgreSQL dan dapat menulis data.
Lihat referensi API, alur memo, serta status implementasi untuk batasan yang masih ada.