Repositori ini berisi boilerplate yang siap pakai untuk membangun REST API modern dengan Go. Proyek ini sudah dilengkapi dengan fitur-fitur penting seperti routing, autentikasi JWT, interaksi database, dokumentasi API, dan alur kerja pengembangan yang efisien menggunakan Make dan Docker.
- Routing Cepat: Menggunakan Chi, router yang ringan, cepat, dan idiomatis.
- Autentikasi JWT: Sistem autentikasi lengkap dengan endpoint untuk registrasi, login, dan middleware untuk melindungi route.
- Database PostgreSQL: Integrasi dengan PostgreSQL menggunakan driver
pgxyang modern dan berperforma tinggi. - Repository Pattern: Struktur kode yang memisahkan logika bisnis dari logika akses data.
- Dokumentasi API Otomatis: Generate dokumentasi interaktif secara otomatis dari komentar kode menggunakan Swagger (swag).
- Manajemen Database: Setup database untuk development yang mudah dan konsisten menggunakan Docker Compose.
- Otomatisasi Tugas: Dilengkapi
Makefileuntuk menyederhanakan perintah-perintah umum seperti menjalankan, membangun, dan migrasi database. - Konfigurasi Berbasis Environment: Membaca konfigurasi dari file
.envuntuk fleksibilitas antar lingkungan (development, production). - Respon JSON Standar: Utilitas untuk memastikan semua respon API memiliki format yang konsisten.
- Bahasa: Go
- Web Framework/Router: Chi v5
- Database: PostgreSQL
- Driver Database: pgx v5
- Autentikasi: JSON Web Tokens (JWT)
- Dokumentasi: Swagger / OpenAPI
- Development Environment: Docker, Docker Compose
- Build/Task Runner: Makefile
/gochi-boilerplate
βββ /cmd/server/
β βββ main.go # Titik masuk aplikasi (setup server, router, db)
βββ /db/
β βββ /migrations/
β βββ 001_init_schema.sql # Skema dan migrasi database
βββ /docs/
β βββ ... # File yang di-generate oleh Swagger
βββ /internal/
β βββ /handler/ # Layer HTTP (logika request/response)
β βββ /middleware/ # Middleware kustom (misal: autentikasi)
β βββ /model/ # Struct untuk data (request, response, entitas)
β βββ /repository/ # Layer akses data (interaksi dengan database)
β βββ /utils/ # Fungsi helper (JWT, respon JSON, config, dll.)
βββ .env.example # Contoh file konfigurasi environment
βββ docker-compose.yml # Konfigurasi Docker untuk database
βββ go.mod # Manajemen dependensi Go
βββ Makefile # Shortcut untuk perintah-perintah development
βββ README.md # Dokumentasi proyek
Ikuti langkah-langkah ini untuk menjalankan proyek di lingkungan lokal Anda.
Pastikan Anda sudah menginstal perangkat lunak berikut:
- Go (versi 1.21 atau lebih baru)
- Docker dan Docker Compose
- Make
- psql (opsional, untuk koneksi manual ke database)
-
Clone repositori ini:
git clone https://github.com/username/gochi-boilerplate.git cd gochi-boilerplate -
Konfigurasi Environment: Salin file
.env.examplemenjadi.envdan sesuaikan nilainya jika perlu.cp .env.example .env
-
Instal Dependensi Go: Perintah ini akan mengunduh semua library yang dibutuhkan.
go mod tidy
-
Jalankan Database: Perintah ini akan memulai container PostgreSQL di latar belakang menggunakan Docker Compose.
make db-up
-
Jalankan Migrasi Database: Perintah ini akan membuat tabel
usersdanproductssesuai skema di file.sql.make db-migrate
Untuk menjalankan server dengan hot-reload (memerlukan instalasi air), atau cukup jalankan dengan perintah standar:
make runServer akan berjalan di http://localhost:8080.
Untuk meng-kompilasi aplikasi menjadi satu file binary yang siap di-deploy:
make buildHasilnya akan berada di folder bin/.
| Perintah | Deskripsi |
|---|---|
make run |
Menjalankan aplikasi Go dalam mode development. |
make build |
Meng-kompilasi aplikasi menjadi file binary di folder bin/. |
make test |
Menjalankan semua unit test di dalam proyek. |
make clean |
Menghapus artefak hasil build dari folder bin/. |
make tidy |
Merapikan dependensi di go.mod. |
make swag |
Men-generate atau memperbarui dokumentasi Swagger di folder docs/. |
make db-up |
Menjalankan container database PostgreSQL dengan Docker Compose. |
make db-down |
Menghentikan dan menghapus container database. |
make db-migrate |
Menjalankan skrip migrasi SQL ke database. |
make db-connect |
Membuka shell psql interaktif ke dalam container database. |
make help |
Menampilkan daftar semua perintah yang tersedia. |
Dokumentasi API yang lengkap dan interaktif tersedia melalui Swagger UI. Setelah server berjalan, buka URL berikut di browser Anda:
β‘οΈ http://localhost:8080/swagger/index.html
| Metode | Path | Deskripsi |
|---|---|---|
POST |
/auth/register |
Mendaftarkan pengguna baru. |
POST |
/auth/login |
Login untuk mendapatkan token JWT. |
| Metode | Path | Deskripsi |
|---|---|---|
POST |
/products |
Membuat produk baru. |
GET |
/products |
Mendapatkan daftar semua produk. |
GET |
/products/{id} |
Mendapatkan detail satu produk. |
PUT |
/products/{id} |
Memperbarui produk (memerlukan hak akses). |
DELETE |
/products/{id} |
Menghapus produk (memerlukan hak akses). |