Skip to content

About

Сервис аренды складских боксов: каталог складов, оформление визардом, оплата через ЮKassa, QR-доступ к боксу, уведомления и письма. Django + Bootstrap.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SelfStorage

Сервис аренды складских боксов: клиент выбирает склад и бокс, оформляет аренду онлайн, оплачивает через ЮKassa и получает QR-код для доступа к боксу.

Python Django SQLite Bootstrap uv nginx

CI ruff mypy pre--commit License

Демо-стенд: 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

Скриншоты

Главная страница

Склады и боксы

Правила хранения

Вход

Панель владельца — дашборд заказов, выручки, заявок на доставку и источников трафика

Конструктор UTM-ссылок в админке

Демо-доступы

Появляются после seed_demo:

Роль E-mail Пароль
Администратор (/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

About

Сервис аренды складских боксов: каталог складов, оформление визардом, оплата через ЮKassa, QR-доступ к боксу, уведомления и письма. Django + Bootstrap.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages