Skip to content

alifirfandi/simple-cashier-inventory

Repository files navigation

Golang Simple Boilerplate with Gofiber & Gorm

Boilerplate Structure

  • config/
  • controller/
  • entity/
  • exception/
  • helper/
  • middleware/
  • model/
  • repository/
  • seed/
  • service/
  • test/
  • validation/
  • .env.example
  • .env
  • .env.test
  • .gitignore
  • main.go
  • README.md

Definisi

  • config/ - Konfigurasi API, contohnya konfigurasi koneksi Elasticsearch, Mysql, MongoDB, Redis, Kafka, etc.
  • controller/ - Tempat Controller semua route Gofiber, contohnya mengatur endpoint, request ke Service, etc.
  • entity/ - Entity yang biasanya berisi field-field yang akan digunakan/dipanggil dari database.
  • contohnya insert/get data dari redis, ubah type string ke type int, etc.
  • middleware/ - Mirip seperti helper, middleware biasa digunakan pada Controller untuk diproses sebelum controller berjalan/selesai.
  • model/ - Mirip seperti entity, model biasanya digunakan untuk memberikan response atau sebagai value return.
  • repository/ - Tempat proses transaksi dari/ke database.
  • seed/ -
  • service/ - Sebagai jembatan antara Controller dan Service. Biasa digunakan untuk handle/validasi data sebelum dilanjut ke Repository.
  • test/ - Tempat file-file Unit Test Golang.
  • validation/ - Mirip seperti helper, validation biasanya digunakan/dipanggil di Service.
  • .env.example - Contoh/format environment untuk disalin
  • .env - Environment utama/production
  • .env.test - Environment untuk testing
  • .gitignore - Ignore file/folder saat push ke git
  • main.go - File utama/main Golang, tempat panggil Repository, Service, Controller.
  • README.md - File README

Trivial & Tips

  • Lebih baik gunakan Service untuk logic sebelum masuk ke repository.
  • Lebih baik gunakan Struct dari Model untuk Response, supaya lebih mudah penggunaannya.
  • Selalu gunakan .env.test untuk Unit Testing.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published