🚗Финальный проект: GoRent (API для аренды автомобилей)

Описание

GoRent — это проект финального уровня средней сложности для закрепления знаний по разработке API на языке Go. Он имитирует реальную задачу по созданию системы аренды автомобилей с ролевой моделью, управлением бронированием и финансовой аналитикой.

Цель проекта — научиться разрабатывать API, работать с реляционной БД, применять транзакции и реализовывать архитектуру с разделением прав доступа.


Стек

Go (1.21+) Gin PostgreSQL (15+) Docker

Сущности (PostgreSQL)

users

Поле Тип Описание
id UUID Идентификатор
name string Имя пользователя
email 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

API Endpoints

🔐Аутентификация

👤Роль client

🧑‍💼Роль manager

👑Роль admin


Особенности реализации


Этапы разработки (15 дней)

1. Проект и БД (2 дня)

  • Настройка проекта и Docker
  • Создание схемы БД
  • Базовые миграции

2. Аутентификация и роли (3 дня)

  • Регистрация и авторизация
  • JWT-аутентификация
  • Ролевая модель

3. Работа с автомобилями (3 дня)

  • CRUD для автомобилей
  • Фильтрация и поиск
  • Валидация данных

4. Аренда и логика брони (4 дня)

  • Транзакции бронирования
  • Проверка доступности
  • Расчёт стоимости

5. Аналитика и тесты (3 дня)

  • Финансовая аналитика
  • Интеграционные тесты
  • Документирование API

Критерии приемки


Дополнительно (по желанию)


💬 Рекомендация: Несмотря на необязательный статус проекта, выполнение этого задания укрепит ваши знания и повысит ценность вашего портфолио!