Files
go-watermill-template/README.md
2025-10-06 19:28:49 +07:00

66 lines
2.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧩 Watermill PostgreSQL Template
Template ini adalah **boilerplate siap pakai** untuk membangun sistem **Publish / Subscribe (Event-driven)** menggunakan [Watermill](https://watermill.io) dan **PostgreSQL** sebagai backend message store.
Cocok digunakan untuk:
- Integrasi antar microservice (event-driven)
- Streaming data dari sistem eksternal
- Pengganti message broker seperti Kafka/RabbitMQ berbasis PostgreSQL
- Middleware antar aplikasi HIS, klaim, billing, atau sistem logistik
---
## 🚀 Fitur Utama
| Fitur | Keterangan |
|-------|-------------|
| ⚙️ **Watermill v1.3.x stable** | Versi stabil terbaru dengan dukungan PostgreSQL schema & offset adapter |
| 🧱 **Auto-create table** | Semua tabel `watermill_<topic>` dan `watermill_offsets_<topic>` dibuat otomatis |
| 🔧 **Konfigurasi lewat `.env`** | Semua koneksi & daftar topik diatur lewat environment variable |
| 🧰 **Makefile command** | Jalankan, build, atau buat tabel hanya dengan 1 perintah |
| 📡 **Contoh Publisher & Subscriber** | Sudah ada implementasi minimal yang langsung jalan |
| 🐘 **PostgreSQL ready** | Menggunakan driver `lib/pq` yang kompatibel dengan Watermill-SQL |
---
## 📁 Struktur Folder
```text
watermill-template/
├── cmd/
│ └── main.go # Entry point aplikasi
├── internal/
│ ├── config/ # Loader file .env
│ ├── db/ # Koneksi ke PostgreSQL
│ └── pubsub/ # Implementasi Watermill (publisher, subscriber, table helper)
├── .env.example # Contoh konfigurasi environment
├── Makefile # Shortcut command untuk run, build, create-table
├── go.mod # Modul Go
├── go.sum # Dependency checksum
└── README.md # Dokumentasi proyek
---
## ⚙️ Setup Langkah Demi Langkah
### 1⃣ Clone Repository & Install Dependency
```bash
git clone https://github.com/yourname/watermill-template.git
cd watermill-template
go mod tidy
cp .env.example .env
# PostgreSQL Connection
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=middleware
DB_SSLMODE=disable
# Watermill Topics (comma separated)
WATERMILL_TOPICS=mdw_close_bill,mdw_claim_request,mdw_kd_inacbg,mdw_berkas
# Logger
LOG_DEBUG=false