Monorepo untuk microservices TemuLokal: Gateway, Auth Service, dan UMKM Service. Dokumen ini menjelaskan cara menjalankan masing-masing service, menyiapkan environment (.env), migrasi database, serta daftar endpoint beserta host dan port yang digunakan.
Gunakan rentang port terorganisir agar mudah diingat dan mencegah konflik:
- Gateway:
8000 - Auth Service:
8001 - UMKM Service:
8002
Jika perlu menambah service baru, lanjutkan urutan berikutnya (8003, 8004, ...). Hindari mencampur dengan port acak agar konfigurasi terstandarisasi.
Catatan: Sesuaikan
.envUMKM Service ke8002bila ingin mengikuti pola ini secara ketat.
- Sudah ter-install Go (versi sesuai project) dan MySQL server berjalan.
- Buat database kosong untuk masing-masing service (atau satu database terpisah sesuai kebutuhan saat ini):
- Auth:
temulokal_auth_db(contoh pada.env) - UMKM:
temulokal_umkm_db
- Auth:
- Clone repository dan masuk ke direktori root.
Setiap service memiliki file .env.example. Copy menjadi .env dan sesuaikan nilai variabelnya.
Variabel penting:
APP_PORT(default 8000)JWT_SECRETAUTH_SERVICE_ORIGIN(misalhttp://localhost:8001)UMKM_SERVICE_ORIGIN(tambahkan bila belum, contohhttp://localhost:8002)
Tambahkan baris berikut jika belum ada untuk origin UMKM:
UMKM_SERVICE_ORIGIN="http://localhost:8002"
Variabel penting:
APP_NAME,APP_PORT=8001,APP_ENV,APP_ORIGINDB_HOST,DB_USER,DB_PASS,DB_NAME- SMTP config (
SMTP_HOST,SMTP_PORT,SMTP_PASSWORD,SMTP_SENDER) jika fitur email digunakan JWT_SECRET
Contoh minimal (sesuaikan password & host DB):
APP_NAME="Authentication Service"
APP_PORT=8001
APP_ENV=development
APP_ORIGIN="http://localhost:8001"
DB_HOST="localhost:3306"
DB_USER=root
DB_PASS=your_password
DB_NAME=temulokal_auth_db
JWT_SECRET="replace-with-secure-random"
Variabel penting:
UMKM_APP_NAME,UMKM_APP_PORT=8002(ubah dari 8082 agar konsisten),APP_ENV,APP_ORIGINDB_HOST,DB_USER,DB_PASS,DB_NAME
Contoh:
UMKM_APP_NAME="UMKM Service"
UMKM_APP_PORT=8002
APP_ENV=development
APP_ORIGIN="http://localhost:8002"
DB_HOST="localhost:3306"
DB_USER=root
DB_PASS=your_password
DB_NAME=temulokal_umkm_db
Jalankan migrasi setelah .env dibuat dan database tersedia.
cd auth-service
go run main.go migrate
cd umkm-service
go run main.go migrate
Pastikan tidak ada error. Tabel akan dibuat sesuai model.
Gunakan file umkm-service/seeds/umkm_seed.sql untuk mengisi data contoh:
mysql -h <host> -u <user> -p temulokal_umkm_db < umkm-service/seeds/umkm_seed.sql
Jalankan masing-masing service (disarankan urutan: auth, umkm, gateway).
cd auth-service
go run main.go start
cd umkm-service
go run main.go start
cd gateway
go run main.go start
Cara cepat menjalankan seluruh service sekaligus:
make run
- Untuk menghentikan: tekan
Ctrl + Cpada terminal yang menjalankanmake run(menghentikan proseswait), lalu jalankan:
make stop
Perintah make stop akan mencoba menghentikan proses gateway, auth-service, dan umkm-service yang masih berjalan.
Alternatif orkestrasi container menggunakan Docker:
docker compose build
docker compose up -d
Service yang berjalan:
- MySQL: port 3306 (container
db) - Auth Service: port 8001 (container
auth-service) - UMKM Service: port 8002 (container
umkm-service) - Gateway: port 8000 (container
gateway)
Log salah satu service:
docker compose logs -f auth-service
Hentikan semua:
docker compose down
Database otomatis dibuat lewat skrip docker/initdb/01-create-databases.sql. Jalankan migrasi di dalam container bila tabel belum terbentuk:
docker compose exec auth-service /app/auth-service migrate
docker compose exec umkm-service /app/umkm-service migrate
Semua request diproxy ke service terkait berdasarkan prefix.
- Auth:
http://localhost:8000/auth/* - UMKM:
http://localhost:8000/umkm/*
Prefix: /auth
POST /auth/loginPOST /auth/register
Prefix: /umkm
GET /umkm/— list semua UMKM dengan struktur nested (owner, gallery, location, opening_hours, rating aggregate)
Gunakan target build pada Makefile untuk menghasilkan binary masing-masing service ke dalam folder bin/:
make build
Output:
bin/gatewaybin/auth-servicebin/umkm-service
Menjalankan binary yang sudah dibuild (pastikan .env setiap service sudah benar):
./bin/auth-service
./bin/umkm-service
./bin/gateway
Catatan: Setiap service adalah binary terpisah (bukan digabung jadi satu proses). Target make build mempermudah build “semua jadi satu langkah” namun tetap menghasilkan tiga executable terpisah.
- Tambah service baru: pilih port berikutnya dalam rentang 8000+.
- Hindari port 8080/3000 default untuk menjaga konsistensi internal.
- Simpan semua seed SQL di folder
seeds/masing-masing service.