GoRent — это проект финального уровня средней сложности для закрепления знаний по разработке API на языке Go. Он имитирует реальную задачу по созданию системы аренды автомобилей с ролевой моделью, управлением бронированием и финансовой аналитикой.
Цель проекта — научиться разрабатывать API, работать с реляционной БД, применять транзакции и реализовывать архитектуру с разделением прав доступа.
users| Поле | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| name | string | Имя пользователя |
| string | Уникальный Email | |
| password_hash | string | Пароль (хеш) |
| role | enum | admin, manager, client |
cars| Поле | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| model | string | Модель автомобиля |
| brand | string | Бренд |
| year | int | Год выпуска |
| price_per_day | float | Цена аренды в день |
| is_available | boolean | Доступность для аренды |
rentals| Поле | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| car_id | UUID | Ссылка на cars |
| user_id | UUID | Ссылка на users |
| start_date | timestamp | Дата начала |
| end_date | timestamp | Дата окончания |
| total_price | float | Итоговая цена |
| status | enum | pending, active, completed, canceled |
POST /auth/register – регистрация (роль: client)POST /auth/login – авторизация (возвращает JWT)GET /cars?available=true&brand=...POST /rentalsPUT /rentals/:id/cancelPOST /carsDELETE /cars/:idPUT /rentals/:id/approvePUT /users/:id/roleGET /analytics/profit?from=...&to=...SELECT FOR UPDATE при бронированииend > start)total_price при изменениях💬 Рекомендация: Несмотря на необязательный статус проекта, выполнение этого задания укрепит ваши знания и повысит ценность вашего портфолио!