Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hadihammurabi/go-app
Configurable full feature web service project structure for Go
https://github.com/hadihammurabi/go-app
golang grpc mongodb rabbitmq redis rest-api sql
Last synced: 2 months ago
JSON representation
Configurable full feature web service project structure for Go
- Host: GitHub
- URL: https://github.com/hadihammurabi/go-app
- Owner: hadihammurabi
- License: mpl-2.0
- Created: 2020-09-19T13:49:39.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-06T01:27:44.000Z (8 months ago)
- Last Synced: 2024-11-05T11:59:10.103Z (2 months ago)
- Topics: golang, grpc, mongodb, rabbitmq, redis, rest-api, sql
- Language: Go
- Homepage:
- Size: 44.8 MB
- Stars: 57
- Watchers: 5
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Belajar Go REST API
Belajar REST API dengan bahasa pemrograman Go.# Daftar Isi
* [Fitur](#fitur)
* [Konsep Arsitektural](#konsep-arsitektural)
* [Stack Teknologi](#stack-teknologi)
* [Utilitas Pihak Ketiga](#utilitas-pihak-ketiga)
* [Menjalankan Projek](#menjalankan-projek)
* [Persiapan](#persiapan)
* [Mode Development](#mode-development)
* [Mode Production](#mode-production)# Fitur
Projek ini sudah siap dijalankan dan dapat dimodifikasi sesuai kebutuhan masing-masing. Adapun kemampuan projek ini:
1. Dapat menjadi backend dari REST API dan GRPC.
2. Dapat mengoperasikan message broker, seperti mengirim dan menerima message.
3. Dapat menjadi service dalam rangkaian microservices.
4. Dapat menyediakan dokumentasi API melalui Swagger.
5. Support berbagai koneksi database, seperti MySQL, PostgreSQL, SQLite, dan SQL Server.
6. Support migrasi database dalam bentuk file SQL.
7. Support [dependency injection](https://en.wikipedia.org/wiki/Dependency_injection).# Konsep Arsitektural
Struktur proyek ini mengikuti konsep-konsep arsitektural seperti:
- DRY (Don't Repeat Yourself)
- SOLID Principle# Stack Teknologi
Nama | Kegunaan
-|-
[Go](https://golang.org) | Bahasa Pemrograman
[Fiber](https://docs.gofiber.io) | Web Framework
[GRPC](https://grpc.io) | Transport RPC
[RabbitMQ](https://www.rabbitmq.com) | Message Broker
[PostgreSQL](https://www.postgresql.org), [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), [SQLite](https://www.sqlite.org/index.html), [MongoDB](https://www.mongodb.com/), [Redis](https://redis.io/) | Database Management System
[Gorm](https://gorm.io/index.html) | Object-Relational Mapper
[Jwt](https://jwt.io) | Token untuk Otentikasi# Utilitas Pihak Ketiga
Nama | Kegunaan
-|-
[Validator](https://github.com/go-playground/validator) | Validasi data
[GNU/Make](https://www.gnu.org/software/make/) | Build tool# Menjalankan Projek
## Mode Development
1. Clone projek ke komputer lokal, dengan perintah:
```bash
git clone https://github.com/hadihammurabi/go-app
```
2. Menjalankan projek dengan mode development (pengembangan) dengan perintah:
```bash
make dev
```## Mode Production
1. Clone projek ke komputer lokal, dengan perintah:
```bash
git clone https://github.com/hadihammurabi/go-app
```
2. Menjalankan projek siap guna dengan perintah:
```bash
make && ./main
```