Сервис аренды складских боксов: клиент выбирает склад и бокс, оформляет аренду онлайн, оплачивает через ЮKassa и получает QR-код для доступа к боксу.
Демо-стенд: selfstorage.kislyakov.pro
Клиент
- каталог из 5 складов и боксы разной площади с фильтром по размеру;
- оформление аренды визардом из нескольких шагов с серверной валидацией каждого шага;
- промокоды со сроком действия и расчёт стоимости аренды;
- оплата через ЮKassa: редирект на оплату, возврат по
return_urlи webhook о смене статуса; - QR-код для открытия бокса, личный кабинет с активными арендами и историей платежей;
- профиль в кабинете: смена имени и загрузка аватара;
- уведомления в кабинете (колокольчик со счётчиком непрочитанных, список уведомлений);
- отзывы о сервисе: форма с фото на главной, публикация после модерации;
- письма: приветственное, «оплата получена», напоминания об окончании аренды (за 30/14/7/3 дня) и о просрочке;
- регистрация, вход и восстановление пароля — и в модальных окнах, и на отдельных страницах.
Владелец и администратор
- кастомный дашборд владельца: занятость боксов, заказы, выручка, заявки на доставку, источники трафика и рекламные кампании, ссылки на адреса в Яндекс.Картах;
- конструктор UTM-ссылок в админке:
utm_source,utm_medium,utm_campaignсобираются в готовую рекламную ссылку; - управление складами, боксами, заказами, промокодами и платежами в Django Admin в фирменной теме;
- модерация отзывов: публикация и снятие с публикации;
- ручной запуск рассылки уведомлений из админки.
# 1. Клонируем репозиторий
cd SelfStorage
# 2. Создаём окружение: зависимости uv и git-хуки pre-commit
./scripts/bootstrap.ps1
# 3. Создаём и заполняем .env (локальный запуск)
Copy-Item .env.example .env
# 4. Применяем миграции
uv run python manage.py migrate
# 5. Заполняем демо-данными
uv run python manage.py seed_demo
# 6. Запускаем сервер
uv run python manage.py runserverПоявляются после seed_demo:
| Роль | Пароль | |
|---|---|---|
Администратор (/admin/) |
admin@selfstorage.ru |
admin12345 |
Пользователь (кабинет Екатерины, my-rent) |
ekatyusha89@yandex.ru |
111111111 |
# тесты (SECRET_KEY обязателен: настройки читают его через django-environ)
$env:SECRET_KEY="test-key"; uv run python manage.py test
# линтер и формат
uv run ruff check .
uv run ruff format --check .
# типы
uv run mypy .
# всё сразу — те же хуки, что и в pre-commit
uv run pre-commit run --all-files- docs/architecture.md — стек технологий и структура проекта
- docs/TODO.md — открытые задачи проекта (что осталось сделать)
- CONVENTIONS.md — договорённости проекта (URL, сигналы, переменные шаблонов)
- AGENTS.md — окружение, команды и правила работы агентов в этом репозитории
- docs/deployment.md — деплой, переменные окружения
- docs/utm.md — UTM-метки и источники трафика
- docs/qr-access.md — QR-доступ и статус бокса
- docs/notifications.md — напоминания и просрочки (systemd)
MIT





