REST API for managing user subscriptions.
- Go 1.25
- PostgreSQL 16
- Chi Router
- Docker & Docker Compose
- Swagger/OpenAPI
- Clone the repository:
git clone <repo-url>
cd subscription-service- Setup configuration:
cp -r secrets.example secrets
cp config/example.config.yaml config/config.yaml- Start services:
docker compose up --build- API is available at:
http://localhost:8080
Swagger UI: http://localhost:8080/swagger/index.html
| Method | Path | Description |
|---|---|---|
| POST | /api/subscriptions |
Create subscription |
| GET | /api/subscriptions |
List subscriptions (filters: user_id, service_name) |
| GET | /api/subscriptions/{id} |
Get subscription by ID |
| PUT | /api/subscriptions/{id} |
Update subscription |
| DELETE | /api/subscriptions/{id} |
Delete subscription |
| POST | /api/subscriptions/total |
Calculate total cost for period |
The application reads configuration from config.yaml. Example structure:
env: "local"
http_server:
address: "0.0.0.0:8080"
timeout: 4s
idle_timeout: 60s
database:
host: "postgres"
port: 5432
sslmode: "disable"Database credentials are read from Docker secrets in production or from defaults in development.