Go Fiber v2 REST API dengan GORM + Neon PostgreSQL.
| Technology | Version | Purpose |
|---|---|---|
| Go | 1.26+ | Language |
| Fiber v2 | v2.52+ | HTTP Framework |
| GORM | v1.25+ | ORM |
| PostgreSQL | (Neon Cloud) | Database |
| JWT | v5 | Authentication |
| Bcrypt | - | Password Hashing |
# 1. Copy environment file
cp .env.example .env
# 2. Edit .env dengan kredensial database dan JWT secret
# 3. Jalankan server
go run ./cmd/main.goServer berjalan di http://localhost:8090
| Variable | Required | Deskripsi |
|---|---|---|
SERVER_PORT |
✅ | Port server (default: 8090) |
DB_HOST |
✅ | PostgreSQL host |
DB_PORT |
✅ | PostgreSQL port (5432) |
DB_USER |
✅ | Database user |
DB_PASSWORD |
✅ | Database password |
DB_NAME |
✅ | Database name |
DB_SSLMODE |
✅ | SSL mode (require/disable) |
JWT_SECRET |
✅ | JWT signing key |
JWT_EXPIRY_HOURS |
❌ | Token expiry (default: 24) |
ALLOWED_ORIGINS |
✅ | CORS allowed origins |
backend/
├── cmd/main.go # Entry point — setup Fiber + routes + DB
├── config/ # Environment config loader
├── database/ # DB connection + AutoMigrate + Seeder
├── handlers/
│ ├── auth.go # Login, ChangePassword
│ └── user.go # User CRUD + archive/restore
├── middleware/
│ └── auth.go # JWT Bearer token validation
├── models/
│ ├── user.go # User model (GORM + soft delete)
│ ├── service.go # Service model
│ └── transaction.go # Transaction model
├── routes/
│ └── routes.go # Route registration
└── utils/
├── hash.go # Bcrypt helpers
└── jwt.go # JWT generator/validator
| Method | Path | Auth | Deskripsi |
|---|---|---|---|
GET |
/health |
❌ | Health check |
POST |
/api/auth/login |
❌ | Login → JWT |
POST |
/api/auth/change-password |
✅ | Ganti password |
GET |
/api/users |
✅ | List users (paginated) |
POST |
/api/users |
✅ | Buat user |
GET |
/api/users/:id |
✅ | Detail user |
PUT |
/api/users/:id |
✅ | Update user |
DELETE |
/api/users/:id |
✅ | Archive user |
POST |
/api/users/:id/restore |
✅ | Restore user |
DELETE |
/api/users/:id/permanent |
✅ | Hapus permanen |
Dokumentasi lengkap: ../docs/API.md
Menggunakan Docker multi-stage build:
docker build -t laundry-backend .
docker run -p 8090:8090 --env-file .env laundry-backend