Starter Kit Backend Golang adalah kit awal untuk memulai pengembangan aplikasi backend menggunakan bahasa Go. Proyek ini menyediakan struktur modular dengan komponen-komponen yang siap digunakan seperti:
- Controllers: Mengelola logika bisnis seperti autentikasi, kategori, produk, dan izin.
- Helpers: Fungsi bantuan untuk pengelolaan lingkungan, hashing, dan respons.
- Middleware: Pengelolaan autentikasi dan logging.
- Models: Definisi skema data (pengguna, produk, kategori).
- Services: Logika bisnis aplikasi.
- Routes: Pengaturan rute aplikasi.
- Database: Mengelola struktur dan data awal database, termasuk migrasi, seeder, serta CLI untuk pengelolaan skema data.
Proyek ini juga terintegrasi dengan Swagger untuk dokumentasi API. Kamu bisa mengakses dokumentasi Swagger melalui Swagger UI setelah menjalankan proyek.
- Autentikasi menggunakan JWT
- Manajemen pengguna dan otoritas
- Hot-reload dengan Air
- Dokumentasi API otomatis dengan Swagger
- Arsitektur modular dengan layanan terpisah
- Sistem migrasi database: migrate, rollback, fresh, make:migration
- Sistem seeder data awal: db:seed, rollback:seeder, make:seeder
Proyek ini menggunakan file .env
untuk mengatur konfigurasi. Berikut adalah contoh file .env
:
DB_HOST=localhost
DB_PORT=5432
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
JWT_SECRET=your_jwt_secret_key
- Clone repository:
git clone https://github.com/RahmatRafiq/golang_strarter_kit_2025.git
- Masuk ke direktori project:
cd golang_strarter_kit_2025
- Instal dependencies:
go install github.com/cosmtrek/air@latest go install github.com/swaggo/swag/cmd/swag@latest
- Generate dokumentasi Swagger:
swag init
- Jalankan aplikasi dengan Air:
air
- Akses halaman API dengan URL:
http://localhost:8080/swagger/index.html
go run main.go make:migration <nama_migrasi>
Membuat dua file kosong:
YYYYMMDDHHMMSS_<nama_migrasi>.up.sql
YYYYMMDDHHMMSS_<nama_migrasi>.down.sql
go run main.go migrate --file <nama_file_migration>
Menjalankan hanya <nama_file_migration>.up.sql
.
go run main.go migrate:all
- Membuat batch baru.
- Menjalankan hanya file
.up.sql
yang belum tercatat di tabelmigrations
. - Mencatat setiap file ke batch tersebut.
go run main.go rollback --file <nama_file_migration>
Menjalankan hanya <nama_file_migration>.down.sql
(tanpa mengubah batch).
go run main.go rollback:all
- Loop dari batch tertinggi โ 1.
- Menjalankan semua
.down.sql
per batch. - Menghapus seluruh catatan di tabel
migrations
.
go run main.go rollback:batch --batch <nomor_batch>
Meng-rollback hanya migrasi di batch <nomor_batch>
, lalu menghapus catatannya.
go run main.go rollback:batch
Jika flag --batch
tidak diset, akan otomatis meng-rollback batch terakhir.
๐ Catatan:
- Tabel
migrations
akan otomatis dibuat saat pertama kali menjalankanmigrate:all
ataurollback:batch
. - Selalu cek folder
app/database/migrations/
untuk memastikan file.up.sql
dan.down.sql
sudah lengkap sebelum menjalankan migrate/rollback.
go run main.go make:seeder --name=<nama_seeder>
Membuat file seeder baru di direktori app/database/seeds/
dengan format nama file:
YYYYMMDDHHMMSS_<nama_seeder>.go
go run main.go db:seed
Menjalankan semua seeder yang ada di direktori app/database/seeds/
.
go run main.go rollback:seeder
Menghapus data yang dimasukkan oleh batch seeder terakhir.
go run main.go rollback:seeder --batch=<nomor_batch>
Menghapus data yang dimasukkan oleh batch seeder dengan nomor <nomor_batch>
.
๐ Catatan:
- Seeder file yang dibuat akan memiliki template dasar untuk mempermudah implementasi.
- Pastikan untuk menyesuaikan isi file seeder dengan kebutuhan data aplikasi Anda.
- Gunakan perintah rollback untuk menghapus data yang tidak diperlukan atau untuk pengujian ulang.
Semoga bermanfaat! ๐
Aplikasi ini dikembangkan oleh Dzyfhuba dan RahmatRafiq. Jangan ragu untuk mengajukan pertanyaan atau memberikan saran. Kami sangat terbuka terhadap kontribusi dari siapa saja yang ingin terlibat.
Terima kasih atas dukunganmu! ๐
Berikut adalah struktur direktori proyek ini beserta deskripsi singkatnya:
golang_strarter_kit_2025/
โโโ app/
โ โโโ **controllers/** - Mengelola logika bisnis aplikasi
โ โ โโโ `authController.go` - Logika autentikasi
โ โ โโโ `productController.go` - Logika produk
โ โ โโโ `userController.go` - Logika pengguna
โ โโโ **helpers/** - Fungsi bantuan untuk berbagai kebutuhan
โ โ โโโ `environmentHelper.go` - Pengelolaan variabel lingkungan
โ โ โโโ `responseHelper.go` - Format respons API
โ โ โโโ `hashingHelper.go` - Fungsi hashing
โ โโโ **middleware/** - Middleware untuk aplikasi
โ โ โโโ `authMiddleware.go` - Middleware autentikasi
โ โ โโโ `loggingMiddleware.go` - Middleware logging
โ โ โโโ `errorHandlerMiddleware.go` - Middleware penanganan error
โ โโโ **models/** - Definisi skema data
โ โ โโโ `userModel.go` - Model pengguna
โ โ โโโ `productModel.go` - Model produk
โ โ โโโ `categoryModel.go` - Model kategori
โ โโโ **services/** - Logika bisnis aplikasi
โ โ โโโ `authService.go` - Layanan autentikasi
โ โ โโโ `productService.go` - Layanan produk
โ โ โโโ `userService.go` - Layanan pengguna
โ โโโ **routes/** - Pengaturan rute aplikasi
โ โ โโโ `authRoutes.go` - Rute autentikasi
โ โ โโโ `productRoutes.go` - Rute produk
โ โ โโโ `userRoutes.go` - Rute pengguna
โ โโโ **database/** - Pengelolaan database
โ โ โโโ **migrations/** - File migrasi database
โ โ โ โโโ `20230424010101_create_users_table.up.sql` - Membuat tabel pengguna
โ โ โ โโโ `20230424010101_create_users_table.down.sql` - Menghapus tabel pengguna
โ โ โ โโโ `20230424010202_create_products_table.up.sql` - Membuat tabel produk
โ โ โโโ **seeds/** - File seeder data awal
โ โ โ โโโ `20230424010101_users_seeder.go` - Seeder pengguna
โ โ โ โโโ `20230424010202_products_seeder.go` - Seeder produk
โ โ โโโ `database.go` - Koneksi dan konfigurasi database
โโโ **config/** - Konfigurasi aplikasi
โ โโโ `config.go` - Konfigurasi utama
โ โโโ `env.go` - Pengelolaan variabel lingkungan
โโโ **docs/** - Dokumentasi API
โ โโโ **swagger/** - File Swagger
โ โโโ `swagger.yaml` - Dokumentasi API Swagger
โโโ **bootstrap/** - Inisialisasi aplikasi
โ โโโ `main.go` - Entry point aplikasi
โ โโโ `init.go` - Inisialisasi komponen aplikasi
โโโ `.env` - File konfigurasi lingkungan
โโโ `go.mod` - File modul Go
โโโ `go.sum` - File checksum dependensi
โโโ `README.md` - Dokumentasi proyek
Struktur ini dirancang untuk mempermudah pengelolaan kode, meningkatkan keterbacaan, dan mendukung pengembangan aplikasi secara modular.
๐ฎ๐ฉ Donasi via Saweria (Indonesia)