Add first-run setup wizard, README, remove default users, add easter egg
This commit is contained in:
@@ -1,88 +1,103 @@
|
||||
# InviteMe
|
||||
|
||||
Приложение для регистрации гостей на корпоративные мероприятия. Аналог Timepad с упрощённым функционалом.
|
||||
Система регистрации гостей, рассылки приглашений и контроля входа на мероприятия.
|
||||
|
||||
## Возможности
|
||||
|
||||
- Управление пользователями (админ, организатор, сотрудник на входе)
|
||||
- Создание и управление несколькими мероприятиями
|
||||
- Загрузка списка гостей из Excel в рамках мероприятия
|
||||
- Хранение фото гостей и привязка по названию файла
|
||||
- Генерация персональных QR-кодов
|
||||
- Автоматическая рассылка приглашений на email
|
||||
- Ручное добавление/удаление/блокировка участников
|
||||
- Проверка входа по QR-коду или поиску по ФИО
|
||||
- Аналитика посещаемости для администратора
|
||||
- Выгрузка отчётов в Excel
|
||||
|
||||
## Стек
|
||||
|
||||
- Python 3.10+
|
||||
- Flask + Flask-SQLAlchemy
|
||||
- SQLite
|
||||
- Bootstrap 5
|
||||
- html5-qrcode
|
||||
- SMTP
|
||||
- Создание мероприятий и управление ими.
|
||||
- Импорт гостей из Excel.
|
||||
- Генерация QR-кодов и персональных пригласительных билетов.
|
||||
- Конструктор билетов с логотипом, цветами и предпросмотром.
|
||||
- Рассылка приглашений по SMTP, EWS (Exchange) или через локальный Outlook.
|
||||
- Проверка приглашений на входе (сканирование QR / поиск по списку).
|
||||
- Ролевая модель: администратор, организатор, стафф.
|
||||
- Аудит действий пользователей.
|
||||
- Поддержка Docker.
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
### Вариант 1: Docker (рекомендуется)
|
||||
|
||||
Требования: установленный Docker и Docker Compose.
|
||||
|
||||
```bash
|
||||
cd C:\Projects\Integrita\InviteMe
|
||||
git clone ssh://git@192.168.1.101:2222/insight/inviteme.git
|
||||
cd inviteme
|
||||
|
||||
# Собрать и запустить
|
||||
docker compose up -d --build
|
||||
|
||||
# Приложение будет доступно по адресу http://localhost:8888
|
||||
```
|
||||
|
||||
При первом запуске откройте `http://localhost:8888` — вас встретит страница создания первого администратора.
|
||||
|
||||
### Вариант 2: Запуск вручную
|
||||
|
||||
Требования: Python 3.12.
|
||||
|
||||
```bash
|
||||
git clone ssh://git@192.168.1.101:2222/insight/inviteme.git
|
||||
cd inviteme
|
||||
|
||||
python -m venv venv
|
||||
venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
# Windows:
|
||||
venv\Scripts\pip install -r requirements.txt
|
||||
# Linux/macOS:
|
||||
# venv/bin/pip install -r requirements.txt
|
||||
|
||||
# Запуск
|
||||
venv\Scripts\python run_waitress.py
|
||||
```
|
||||
|
||||
Создайте файл `.env` в корне проекта (см. `docs/DEPLOY.md`) и запустите:
|
||||
Приложение запустится на `http://localhost:8888`.
|
||||
|
||||
```bash
|
||||
flask --app run.py run --host=0.0.0.0 --port=5000
|
||||
```
|
||||
## Первый запуск
|
||||
|
||||
## Учётные записи по умолчанию
|
||||
1. Откройте приложение в браузере.
|
||||
2. На странице приветствия создайте первого администратора.
|
||||
3. Войдите под созданной учётной записью.
|
||||
4. Создайте мероприятие и настройте почту в разделе «Рассылка → Настройки почты».
|
||||
|
||||
При первом запуске автоматически создаются:
|
||||
## Настройка почты
|
||||
|
||||
- Админ: `admin` / `admin`
|
||||
- Сотрудник на входе: `staff` / `staff`
|
||||
В разделе **Рассылка → Настройки почты** можно выбрать один из способов отправки:
|
||||
|
||||
После входа администратор может создавать новых пользователей и мероприятия через веб-интерфейс.
|
||||
- **SMTP** — указать сервер, порт, логин и пароль.
|
||||
- **EWS** — для Microsoft Exchange, указать URL вида `https://mail.company.com/EWS/Exchange.asmx`.
|
||||
- **Локальный Outlook** — работает только если приложение запущено на Windows-компьютере с установленным Outlook.
|
||||
|
||||
> Обязательно смените пароли в production через переменные окружения или `.env`.
|
||||
## Безопасность
|
||||
|
||||
- Сразу после первого запуска задайте сильный `SECRET_KEY` через переменную окружения.
|
||||
- Не храните реальные пароли в репозитории — используйте `.env` файл или переменные окружения.
|
||||
- Папка `instance/` (SQLite) и `app/static/uploads/` не попадают в git.
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
| Переменная | Описание | По умолчанию |
|
||||
|------------|----------|--------------|
|
||||
| `SECRET_KEY` | Секретный ключ для сессий | `dev-secret-key-change-in-production` |
|
||||
| `BASE_URL` | Базовый URL приложения | — |
|
||||
| `TIMEZONE` | Часовой пояс | `Europe/Moscow` |
|
||||
| `DATABASE_URL` | URI базы данных (SQLite по умолчанию) | `sqlite:///instance/inviteme.db` |
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
InviteMe/
|
||||
├── app/
|
||||
│ ├── __init__.py
|
||||
│ ├── models.py # Модели User, Event, Guest и CheckIn
|
||||
│ ├── routes.py # Все маршруты приложения
|
||||
│ ├── services/ # QR, email, Excel
|
||||
│ ├── static/
|
||||
│ │ ├── css/
|
||||
│ │ ├── js/
|
||||
│ │ └── uploads/ # Фото и QR-коды
|
||||
│ └── templates/
|
||||
│ ├── admin/
|
||||
│ ├── checkin/
|
||||
│ └── email/
|
||||
├── config.py # Конфигурация
|
||||
├── docs/
|
||||
│ └── DEPLOY.md # Подробная инструкция по развёртыванию
|
||||
├── requirements.txt
|
||||
├── run.py
|
||||
└── README.md
|
||||
├── app/ # Flask-приложение
|
||||
│ ├── services/ # QR, билеты, почта, Excel
|
||||
│ ├── templates/ # HTML-шаблоны
|
||||
│ ├── static/ # CSS, JS, изображения
|
||||
│ └── utils/ # Вспомогательные утилиты
|
||||
├── instance/ # SQLite-база (не в git)
|
||||
├── app/static/uploads/ # Загруженные файлы (не в git)
|
||||
├── Dockerfile
|
||||
├── docker-compose.yml
|
||||
└── requirements.txt
|
||||
```
|
||||
|
||||
## Контекст проекта
|
||||
## Лицензия
|
||||
|
||||
Проект разрабатывается для компании **Integrita**. Планируется развёртывание на виртуальной машине.
|
||||
|
||||
- Подробный контекст, бизнес-процесс и чеклист — в `docs/CONTEXT.md`.
|
||||
- Инструкции по настройке SMTP, запуску в production и резервному копированию — в `docs/DEPLOY.md`.
|
||||
|
||||
## Ссылки на документацию
|
||||
|
||||
- `docs/CONTEXT.md` — контекст, роли, поток данных, чеклист
|
||||
- `docs/DEPLOY.md` — развёртывание, настройка SMTP, запуск в production
|
||||
Проект распространяется как есть для внутреннего использования.
|
||||
|
||||
Reference in New Issue
Block a user