Lewati ke konten utama

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​

VariabelPeran
DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORDKoneksi PostgreSQL
JWT_SECRET, JWT_ISSUER, JWT_TTL_HOURSToken pengguna
CORS_ALLOW_ORIGINSOrigin frontend yang diizinkan
STORAGE_DRIVER, STORAGE_LOCAL_ROOTStorage lokal
STORAGE_S3_*Bucket, endpoint, region, dan kredensial MinIO/S3
OCR_SERVICE_URL, OCR_SERVICE_TOKENSubmit dan polling OCR
OCR_WEBHOOK_TOKENVerifikasi 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.