Weather Subscription API — це REST-сервіс для отримання поточних погодних умов у заданому місті та підписки користувачів на email-оновлення погоди з гнучкою частотою.
- Отримання поточної погоди за містом (через WeatherAPI)
- Підписка на email-оновлення погоди (щогодинно або щоденно)
- Підтвердження email-у через посилання
- Відписка за токеном
- Планове надсилання оновлень відповідно до вибраної частоти
- Листи з підтвердженням
- Swagger-документація для API
- Go 1.24+
- Gin (HTTP фреймворк)
- SQLite + modernc.org/sqlite
- SMTP (через SendGrid або інші провайдери)
- Goose (міграції бази)
- Swagger + swag CLI
- Docker + Docker Compose
.
├── cmd/WeatherSubscriptionAPI
├── internal/
│ ├── handlers
│ ├── services
│ ├── repository
│ └── templates/
├── notifier/
├── migrations/
├── docs/
├── api/swagger.yaml
├── Dockerfile
├── docker-compose.yml
└── .env
-
Створи
.env
файл у корені:WEATHER_API_KEY=your_weatherapi_key SMTP_USER=verified_user SMTP_PASS=your_smtp_password SMTP_HOST=smtp.sendgrid.net SMTP_PORT=587 SMTP_FROM=verified_sender@example.com
Потрібно зареєструватись на
-
Запуск проєкту:
docker-compose up --build
-
Перевірка:
- Swagger: http://localhost:8080/swagger/index.html
- Форма підписки: http://localhost:8080/
GET /api/weather?city=Lviv
POST /api/subscribe
Content-Type: application/x-www-form-urlencoded
data: email=test@example.com&city=Lviv&frequency=hourly
GET /api/confirm/{token}
GET /api/unsubscribe/{token}
Оновлення прогнозу погоди надсилаються автоматично залежно від обраної частоти (hourly/daily).
MIT License © 2025 Nazar Parnosov