Backend API untuk aplikasi MyWallet yang ditulis dengan Go (Golang).
- Go 1.21 atau lebih tinggi
- PostgreSQL (Neon Database)
- Redis (Upstash)
- Framework: Gin
- Database: PostgreSQL via pgx driver (Neon compatible)
- Cache/Rate Limiting: Redis via go-redis (Upstash compatible)
- Cron Jobs: robfig/cron
- Environment: godotenv
-
Install Go dari https://go.dev/dl/
-
Install dependencies:
cd backend-go
go mod tidy- Edit
.envdengan kredensial yang sesuai
go run main.gobackend-go/
├── main.go # Entry point
├── config/
│ ├── db.go # Database configuration
│ ├── redis.go # Redis configuration
│ └── cron.go # Cron job configuration
├── controllers/
│ └── transaction_controller.go # Transaction handlers
├── middleware/
│ └── ratelimiter.go # Rate limiting middleware
├── models/
│ └── transaction.go # Data models
├── routes/
│ └── routes.go # Route definitions
├── go.mod # Dependencies
├── .env.example # Environment variables template
└── README.md
GET /api/health- Check server status
GET /api/transactions/:userId- Get all transactions for a userPOST /api/transactions- Create a new transactionDELETE /api/transactions/:id- Delete a transactionGET /api/transactions/summary/:userId- Get financial summary
Create Transaction:
POST /api/transactions
{
"user_id": "user_123",
"title": "Salary",
"amount": 5000000,
"category": "income"
}API menggunakan rate limiting dengan Redis:
- Limit: 100 requests per 60 detik
- Response: 429 Too Many Requests jika melebihi limit
Jika NODE_ENV=production, server akan menjalankan cron job yang melakukan ping ke API setiap 14 menit.
Pastikan UPSTASH_REDIS_REST_URL dan TOKEN benar di .env
Format DATABASE_URL:
postgresql://username:password@host:port/database?sslmode=require
Ubah PORT di .env jika 5001 sudah digunakan
MIT
Ardha Tavada