Help us shape the future of Go! Take the 2026 Go Developer Survey

go-auction

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 11, 2026 License: MIT Imports: 13 Imported by: 0

README

go-auction

Sistem lelang online berbasis web — dibangun untuk kegiatan Unduh-Unduh Bulan Keluarga, GKI Sepanjang (Panitia Hari Besar Gerejawi / PHBG), tapi cukup generik untuk dipakai di acara lelang lainnya.

Backend ditulis dengan Go, disajikan server-side (dengan bantuan htmx untuk interaktivitas) dan Server-Sent Events untuk dashboard publik yang update secara real-time tanpa reload halaman.

Fitur

  • Dashboard publik — menampilkan barang yang sedang dilelang (gambar, harga tertinggi, nama penawar) secara real-time lewat SSE, dengan tampilan kosong saat belum ada barang aktif
  • Panel kontrol lelang — operator bisa memilih barang aktif dari antrean, menambahkan tawaran (nama + harga), dan menutup sesi lelang untuk barang yang sedang berjalan
  • Manajemen barang — form tambah barang lengkap dengan upload & crop gambar (atur dimensi crop secara presisi langsung di browser)
  • Katalog publik — daftar barang yang akan dilelang (layout card di desktop, list di mobile) beserta halaman detail per barang, lengkap dengan Open Graph meta tags untuk preview saat dibagikan
  • Hasil lelang — tabel barang yang sudah terjual dengan fitur pencarian, sort per kolom, dan edit inline
  • Autentikasi — halaman login dengan htmx dan notifikasi toast saat gagal masuk
  • Mode SSR statis — bisa men-generate seluruh halaman menjadi file statis untuk hosting tanpa server (lihat perintah ssr-gen / ssr-serve)

Tumpukan Teknologi

Layer Teknologi
Backend Go
Database SQLite (glebarez/go-sqlite, driver tanpa cgo)
Frontend interaktivitas htmx + htmx-ext-sse
Styling CSS murni — custom design system ("Balai Lelang"), token warna, Fraunces (serif) + Inter (sans)

Arsitektur

Proyek ini mengikuti pola hexagonal / ports & adapters:

internals/
├── core/
│   └── service/          # business logic (AuctionService, AuthService)
└── adapter/
    ├── inbound/
    │   ├── http/          # HTTP handler + template (Go html/template) + static assets
    │   └── ssr/            # static-site generator & server untuk mode SSR
    └── outbound/
        └── sqlite/         # implementasi repository (Stock, Auction, User) via SQLite

Service di core/service tidak bergantung pada detail HTTP maupun database — keduanya diinject sebagai interface (repository), sehingga logic lelang bisa diuji maupun diganti adapter-nya tanpa mengubah core.

Menjalankan Secara Lokal

Prasyarat
  • Go 1.21+ (sesuaikan dengan versi di go.mod)
  • Tidak perlu instalasi SQLite terpisah — driver yang dipakai (glebarez/go-sqlite) berjalan tanpa cgo
Instalasi
git clone https://github.com/galaparadi/go-auction.git
cd go-auction
go mod download
Menjalankan server HTTP (mode utama)
go run main.go

Secara default server berjalan di http://localhost:9999 dengan database data.db di direktori kerja.

Flag yang tersedia
Flag Default Keterangan
-port 9999 Port HTTP server
-ip localhost IP/host yang di-listen
-assets ./internals/adapter/inbound/http Path ke view & static assets
-dbpath data.db Path file database SQLite

Contoh menjalankan di port lain dengan database berbeda:

go run main.go -port=8080 -dbpath=./storage/lelang.db
Mode SSR (static site)

Selain berjalan sebagai server, aplikasi ini juga bisa men-generate halaman statis — berguna untuk hosting di layanan static hosting (mis. GitHub Pages):

# Generate seluruh halaman menjadi file statis di folder ssr/
go run main.go ssr-gen

# Jalankan hasil generate sebagai server statis (untuk preview lokal)
go run main.go ssr-serve -ssrport=5500 -ssrip=localhost

Struktur Route (UI)

Beberapa route yang dipakai oleh halaman-halaman di atas:

Route Keterangan
GET / Dashboard publik (live, via SSE di /dashboardsse)
GET /login, POST /login Halaman & proses login
GET /stocks Daftar barang (admin)
GET /stock, POST /stock Form tambah barang & submit (multipart, termasuk foto)
GET /dashboard-control Panel kontrol lelang
POST /dashboard-control Update tawaran berjalan
POST /dashboard-control/activate Set barang aktif dari antrean
POST /dashboard-control/close Tutup sesi lelang barang aktif
GET /hasil-lelang Tabel barang yang sudah terjual

Build untuk Produksi

go build -o bin/go-auction main.go
./bin/go-auction -port=9999 -dbpath=./data.db

Lisensi

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internals

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL