По техническому заданию.
- Функционал 1 — квиз из 6 шагов: тип помещения (одиночный выбор); зоны (множественный выбор, минимум один); площадь (ползунок 20–300 м², шаг 5, значение по умолчанию 60); стиль интерьера (одиночный выбор); бюджет (одиночный выбор); форма — имя, телефон (обязательно), email, комментарий, чекбокс согласия на обработку данных.
- Функционал 2 — навигация и интерфейс: кнопки «Назад» и «Далее»; индикация прогресса (прогресс-бар или подпись вида «Шаг N из 6»); ответы сохраняются при переходе назад; валидация обязательных полей; анимация переходов между шагами; адаптивная вёрстка под ширины 320px, 375px, 768px и 1024px и выше.
- Функционал 3 — отправка, состав заявки и аналитика: все ответы уходят на сервер одним JSON; кнопка отправки блокируется до завершения запроса; после успеха показывается экран успеха, при ошибке — понятное сообщение; в заявке фиксируются ответы квиза, дата и время, URL страницы и UTM-метки; отправляются аналитические события (в т.ч.
quiz_start,quiz_step_1…quiz_step_5,quiz_form_view,quiz_submit,quiz_success).
Дополнительные возможности сверх ТЗ.
- Киллерфича-1: конструктор / редактор схемы квиза в админке (визуальная схема и сохранение конфигурации шагов).
- Киллерфича-2: админ-панель — роли, создание менеджеров, сводная аналитика и воронка, экспорт данных (в т.ч. CSV).
- Киллерфича-3: кабинет менеджера по лидам (статусы, заметки, голосовые с транскрипцией, напоминания) и Telegram-бот для уведомлений о новых заявках и смены статусов по кнопкам; опционально — ИИ-резюме лида, страница статуса заявки для клиента.
- LEMP (Linux, nginx как обратный прокси и отдача собранного фронтенда в контейнерной сборке).
- HTML, CSS, JavaScript, TypeScript.
- PostCSS, Tailwind CSS.
- Vue 3, Vite.
- Python 3.12, FastAPI, Uvicorn, SQLAlchemy, PostgreSQL (через async-драйвер).
- Git.
- Docker, Docker Compose.
Демо сервиса доступно по адресу: https://itdon-smartquiz-hack.ru
Реквизиты теста для менеджера: xana@ex.com: , пароль: 123123 Реквизиты теста для админа: admin@studio.local , пароль: ADMIN123123
(Для входа в панель администратора или менеджера при локальном запуске без изменения конфигурации по умолчанию используются учётные данные из переменных ADMIN_EMAIL и ADMIN_PASSWORD в файле окружения backend; подставьте их вместо тестовой пары, если развёрнули демо с другими значениями.)
- Развёртывание удобно на Debian-подобном Linux (Debian 9+) или иной ОС с установленным Docker и Docker Compose;
- Для ручного запуска без контейнеров: Python 3.11+ (рекомендуется 3.12), Node.js для сборки фронтенда, PostgreSQL (версия 14+);
- Требуется nginx (в compose входит отдельный образ) или эквивалентный прокси при промышленной схеме;
- Для Telegram-бота в файле окружения указываются токен и идентификатор чата менеджеров; для транскрипции и внешних LLM — ключи провайдеров по необходимости.
Выполните в корне репозитория (предварительно создайте файл .env в корне с корректным DATABASE_URL, согласованным с параметрами сервиса базы в docker-compose.yml, и при необходимости скопируйте/создайте backend/.env с секретами JWT, Telegram и API):
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y docker.io docker-compose-plugin git
git clone <URL-репозитория>
cd <каталог-клона>
docker compose up -d --buildПосле успешного старта API доступен на порту backend-сервиса (по умолчанию 8000), веб-интерфейс — через nginx (по умолчанию 80). Один раз выполняется контейнер инициализации БД (db-bootstrap), создающий таблицы и начальные данные.
Создайте пользователя и базу в PostgreSQL (при использовании compose это делается через переменные окружения сервиса db). Строка подключения задаётся в DATABASE_URL (в корневом .env для Compose и/или в backend/.env для локального запуска), формат async-драйвера, например:
postgresql+asyncpg://ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ@ХОСТ:5432/ИМЯ_БД
Схема и системные записи создаются при старте приложения и отдельным шагом bootstrap в Docker. Для ручного применения без полного стека API выполните из каталога backend при настроенном backend/.env:
python -m app.bootstrapBackend — зависимости из requirements.txt:
cd backend
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txtFrontend — зависимости через npm:
cd frontend
npm ci
npm run buildСобранные статические файлы подключаются к nginx согласно используемой конфигурации (см. docker/nginx).
- Томилко Михаил, фронтенд — https://t.me/devindow
- Кириченко Тимур, девопс — https://t.me/tim_maklover
- Лебедев Андрей, бэкенд — https://t.me/etogavrusha
- Гарифулин Юрий, фронтенд — https://t.me/esecca