Skip to content

Hivemind-Studio/golang_strarter_kit_2025

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

49 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Starter Kit Backend Golang (swagger)

Deskripsi

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.

Fitur Utama

  • 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

Konfigurasi Environment

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

Cara Menjalankan Aplikasi

  1. Clone repository:
    git clone https://github.com/RahmatRafiq/golang_strarter_kit_2025.git
  2. Masuk ke direktori project:
    cd golang_strarter_kit_2025
  3. Instal dependencies:
    go install github.com/cosmtrek/air@latest
    go install github.com/swaggo/swag/cmd/swag@latest
  4. Generate dokumentasi Swagger:
    swag init
  5. Jalankan aplikasi dengan Air:
    air
  6. Akses halaman API dengan URL:
    http://localhost:8080/swagger/index.html

Perintah CLI untuk Migrasi

1. Membuat File Migrasi Baru

go run main.go make:migration <nama_migrasi>

Membuat dua file kosong:

  • YYYYMMDDHHMMSS_<nama_migrasi>.up.sql
  • YYYYMMDDHHMMSS_<nama_migrasi>.down.sql

2. Menjalankan Satu File Migrasi

go run main.go migrate --file <nama_file_migration>

Menjalankan hanya <nama_file_migration>.up.sql.

3. Menjalankan Semua Migrasi yang Tertunda

go run main.go migrate:all
  • Membuat batch baru.
  • Menjalankan hanya file .up.sql yang belum tercatat di tabel migrations.
  • Mencatat setiap file ke batch tersebut.

4. Rollback Satu File Migrasi

go run main.go rollback --file <nama_file_migration>

Menjalankan hanya <nama_file_migration>.down.sql (tanpa mengubah batch).

5. Rollback Semua Batch

go run main.go rollback:all
  • Loop dari batch tertinggi โ†’ 1.
  • Menjalankan semua .down.sql per batch.
  • Menghapus seluruh catatan di tabel migrations.

6. Rollback Batch Tertentu

go run main.go rollback:batch --batch <nomor_batch>

Meng-rollback hanya migrasi di batch <nomor_batch>, lalu menghapus catatannya.

7. Rollback Batch Terakhir (Default)

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 menjalankan migrate:all atau rollback:batch.
  • Selalu cek folder app/database/migrations/ untuk memastikan file .up.sql dan .down.sql sudah lengkap sebelum menjalankan migrate/rollback.

Perintah CLI untuk Seeder

1. Membuat File Seeder Baru

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

2. Menjalankan Semua Seeder

go run main.go db:seed

Menjalankan semua seeder yang ada di direktori app/database/seeds/.

3. Rollback Batch Seeder Terakhir (Default)

go run main.go rollback:seeder

Menghapus data yang dimasukkan oleh batch seeder terakhir.

4. Rollback Batch Seeder Tertentu

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! ๐Ÿ˜Š

Kontribusi

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.

Selamat mencoba, dan semoga proyek ini membantu kamu dalam pengembangan aplikasi backend! ๐Ÿ˜Š

Terima kasih atas dukunganmu! ๐Ÿ™

Struktur Proyek

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.

๐Ÿ’ธ Dukung Proyek Ini

๐Ÿ‡ฎ๐Ÿ‡ฉ Donasi via Saweria (Indonesia)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.1%
  • Other 0.9%