https://github.com/dimdevs/sentuh-interview-go-test
sentuh-interview-go-test
https://github.com/dimdevs/sentuh-interview-go-test
Last synced: 9 months ago
JSON representation
sentuh-interview-go-test
- Host: GitHub
- URL: https://github.com/dimdevs/sentuh-interview-go-test
- Owner: Dimdevs
- Created: 2025-03-14T12:17:04.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-03-14T12:29:53.000Z (10 months ago)
- Last Synced: 2025-03-14T13:28:25.148Z (10 months ago)
- Language: Go
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# ๐ฆ Proyek REST API Golang โ GO-TEST
RESTful API sederhana menggunakan **Golang**, **Echo**, **GORM**, **MySQL**, dan **JWT**. Proyek ini mendukung autentikasi, manajemen user, produk, dan kategori lengkap dengan fitur pagination dan pencarian.
---
## ๐ Struktur Folder Proyek
```
GO-TEST/
โโโ config/ # Konfigurasi database
โโโ controllers/ # Handler untuk setiap endpoint API
โโโ logs/ # File log
โโโ middleware/ # Middleware untuk JWT & logging
โโโ models/ # Model untuk GORM
โโโ routes/ # Routing semua endpoint
โโโ utils/ # Fungsi utilitas (contoh: hash password)
โโโ .env # Variabel environment
โโโ main.go # Entry point aplikasi
โโโ go.mod # File modul Go
โโโ README.md # Dokumentasi proyek
```
---
## ๐ Cara Menjalankan Aplikasi
### 1. Clone repository
```bash
git clone https://github.com/username/go-test.git
cd go-test
```
### 2. Install dependency
```bash
go mod tidy
```
### 3. Konfigurasi file `.env`
```env
DB_USER=mascen
DB_PASS=mascen
DB_NAME=test_db
DB_HOST=127.0.0.1
DB_PORT=3306
JWT_SECRET=kangen_mas_cen
```
### 4. Jalankan aplikasi
```bash
go run main.go
```
Aplikasi akan berjalan di http://localhost:5050.
---
## โ
Fitur
- ๐ Autentikasi JWT (Login & Register)
- ๐ค CRUD untuk User
- ๐ฆ CRUD untuk Produk (dengan kategori)
- ๐๏ธ CRUD untuk Kategori
- ๐ Pencarian produk berdasarkan nama/kategori
- ๐ Pagination
- ๐ GORM Hooks
- ๐ Logging ke file
- ๐งผ Struktur folder clean code
---
## ๐ Autentikasi
### Register
```http
POST /register
```
**Body:**
```json
{
"name": "Nama Kamu",
"email": "email@example.com",
"password": "123456"
}
```
### Login
```http
POST /login
```
**Body:**
```json
{
"email": "email@example.com",
"password": "123456"
}
```
**Response:**
```json
{
"token": "token_jwt_mas_cendi"
}
```
> Gunakan token di header Authorization:
```
Authorization: Bearer token_jwt_mas_cendi
```
---
## ๐ฅ Endpoint User (`/api/users`)
| Method | Endpoint | Keterangan |
|--------|------------------|--------------------|
| POST | `/api/users` | Tambah user |
| GET | `/api/users/:id` | Ambil user by ID |
| PUT | `/api/users/:id` | Update user |
| DELETE | `/api/users/:id` | Hapus user |
---
## ๐ฆ Endpoint Produk (`/api/products`)
| Method | Endpoint | Keterangan |
|--------|----------------------|--------------------------------|
| POST | `/api/products` | Tambah produk |
| GET | `/api/products/:id` | Ambil produk by ID |
| PUT | `/api/products/:id` | Update produk |
| DELETE | `/api/products/:id` | Hapus produk |
| GET | `/api/products` | Ambil semua produk (dengan filter dan pagination) |
**Query Parameters (opsional):**
- `page`: halaman keberapa
- `limit`: jumlah data per halaman
- `name`: filter berdasarkan nama produk
- `category`: filter berdasarkan nama kategori
---
## ๐๏ธ Endpoint Kategori (`/api/categories`)
| Method | Endpoint | Keterangan |
|--------|------------------------|------------------------|
| POST | `/api/categories` | Tambah kategori |
| GET | `/api/categories` | Ambil semua kategori |
| GET | `/api/categories/:id` | Ambil kategori by ID |
| PUT | `/api/categories/:id` | Update kategori |
| DELETE | `/api/categories/:id` | Hapus kategori |
---
## ๐งช Testing API
Info tools :
- [Postman](https://warped-rocket-810602.postman.co/workspace/My-Workspace~cba4b606-39dd-4c77-860e-37b6bf7186b6/folder/22097543-ab04b4ee-4cc8-4033-982c-607ecc4a30e2)
- [curl](https://curl.se/)
- Swagger (dalam pengembangan)
---
## ๐ Log File
Semua log disimpan otomatis ke dalam:
```
logs/server.log
```
---
## ๐จโ๐ป Developer
**dimdevs**
Instagram: [https://www.instagram.com/dimdevs_/](https://www.instagram.com/dimdevs_/)