Skip to content

Sigit-Wasis/gochi-boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Go Chi API Boilerplate πŸš€

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.


✨ Fitur Utama

  • 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 pgx yang 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 Makefile untuk menyederhanakan perintah-perintah umum seperti menjalankan, membangun, dan migrasi database.
  • Konfigurasi Berbasis Environment: Membaca konfigurasi dari file .env untuk fleksibilitas antar lingkungan (development, production).
  • Respon JSON Standar: Utilitas untuk memastikan semua respon API memiliki format yang konsisten.

πŸ› οΈ Tumpukan Teknologi (Tech Stack)

  • 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

πŸ“‚ Struktur Proyek

/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

πŸš€ Memulai (Getting Started)

Ikuti langkah-langkah ini untuk menjalankan proyek di lingkungan lokal Anda.

Prasyarat

Pastikan Anda sudah menginstal perangkat lunak berikut:

Instalasi

  1. Clone repositori ini:

    git clone https://github.com/username/gochi-boilerplate.git
    cd gochi-boilerplate
  2. Konfigurasi Environment: Salin file .env.example menjadi .env dan sesuaikan nilainya jika perlu.

    cp .env.example .env
  3. Instal Dependensi Go: Perintah ini akan mengunduh semua library yang dibutuhkan.

    go mod tidy
  4. Jalankan Database: Perintah ini akan memulai container PostgreSQL di latar belakang menggunakan Docker Compose.

    make db-up
  5. Jalankan Migrasi Database: Perintah ini akan membuat tabel users dan products sesuai skema di file .sql.

    make db-migrate

πŸ“¦ Penggunaan

Menjalankan Server Development

Untuk menjalankan server dengan hot-reload (memerlukan instalasi air), atau cukup jalankan dengan perintah standar:

make run

Server akan berjalan di http://localhost:8080.

Membangun Binary untuk Produksi

Untuk meng-kompilasi aplikasi menjadi satu file binary yang siap di-deploy:

make build

Hasilnya akan berada di folder bin/.


πŸ“œ Daftar Perintah Makefile

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.

πŸ“– Endpoint API

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

Ringkasan Endpoint

Autentikasi

Metode Path Deskripsi
POST /auth/register Mendaftarkan pengguna baru.
POST /auth/login Login untuk mendapatkan token JWT.

Produk (Memerlukan Autentikasi)

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).

About

πŸš€ Boilerplate REST API dengan Go (Golang), Chi, JWT, PostgreSQL, Swagger, Docker, dan Makefile.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors