Arsitektur
Frontend utama berada di apps/web/ dan backend Go di apps/api/ dalam monorepo Bucket. Situs Docusaurus berada di apps/documentation/, sedangkan OCR berada di ~/Workshop/. Backend PHP dan Vue di repo eksternal ../../Bucket/ adalah implementasi legacy.
Browser / apps/web (React + Vite)
│ Axios + Bearer JWT
▼
apps/api (Go/Fiber)
│
┌────────┼───────────┐
│ │ │
PostgreSQL MinIO/S3 ~/Workshop/ocr_service
│
Redis + PostgreSQL OCR
│
Provider OCR
Legacy: Bucket/memo_front (Vue 2) → Bucket/memo_backend (PHP/Lumen)
Komponen dan tanggung jawab
| Lokasi dari root monorepo | Tanggung jawab | Teknologi |
|---|---|---|
apps/web/ | Route, halaman, state, autentikasi dan pemanggilan API | React 19, Vite 6, TypeScript |
apps/documentation/ | Situs dokumentasi | Docusaurus |
apps/api/ | API memo, JWT, API key, database, storage, OCR | Go 1.25, Fiber v2, pgx |
../../../Workshop/ocr_service/ | Job OCR, antrean, ekstraksi, callback | Python 3.11, FastAPI, Redis |
../../Bucket/memo_front/ dan ../../Bucket/memo_backend/ | Implementasi legacy | Vue 2 dan PHP/Lumen 8 |
Path relatif di tabel mengasumsikan monorepo Bucket/ berada di Workspace/new bucket/ dan OCR di ~/Workshop/.
Alur permintaan
- React mengirim
POST /api/auth/loginke Go. Token dibaca dariresponse.data.data.tokendan disimpan sebagaijob-match-auth-tokendilocalStorage. - Axios client di
apps/web/lib/api/client.tsmemasang Bearer token pada request dan mengarahkan ke login bila respons 401. - TanStack Query hooks di
apps/web/lib/api/membaca atau mengubah data memo, perusahaan, supplier, karyawan, dan modul lain. - Backend Go menyimpan data bisnis di PostgreSQL dan lampiran di storage lokal atau S3/MinIO.
- Jika OCR perusahaan aktif, Go mengirim job ke layanan OCR. OCR memproses file melalui Redis dan provider, lalu menyediakan polling serta callback.
Pengaitan job OCR dengan lampiran di backend Go belum lengkap. Lihat status implementasi.
Sumber kebenaran konfigurasi
- Route frontend:
apps/web/src/App.tsx. - Base URL dan Bearer token:
apps/web/lib/api/client.tssertaVITE_API_URL. - Route Go:
apps/api/internal/server/server.go. - Konfigurasi Go:
apps/api/internal/config/config.godan Compose Go. - Route OCR:
../../../Workshop/ocr_service/app/main.py. - Konfigurasi OCR:
../../../Workshop/ocr_service/app/core/config.pydan Compose OCR.