# InviteMe Система регистрации гостей, рассылки приглашений и контроля входа на мероприятия. ## Возможности - Создание мероприятий и управление ими. - Импорт гостей из Excel. - Генерация QR-кодов и персональных пригласительных билетов. - Конструктор билетов с логотипом, цветами и предпросмотром. - Рассылка приглашений по SMTP, EWS (Exchange) или через локальный Outlook. - Проверка приглашений на входе (сканирование QR / поиск по списку). - Ролевая модель: администратор, организатор, стафф. - Аудит действий пользователей. - Поддержка Docker. ## Быстрый старт ### Вариант 1: Docker (рекомендуется) Требования: установленный Docker и Docker Compose. ```bash git clone cd InviteMe # Собрать и запустить docker compose up -d --build # Приложение будет доступно по адресу http://localhost:8888 ``` При первом запуске откройте `http://localhost:8888` — вас встретит страница создания первого администратора. ### Вариант 2: Запуск вручную Требования: Python 3.12. ```bash git clone cd InviteMe python -m venv venv # Windows: venv\Scripts\pip install -r requirements.txt # Linux/macOS: # venv/bin/pip install -r requirements.txt # Запуск venv\Scripts\python run_waitress.py ``` Приложение запустится на `http://localhost:8888`. ## Первый запуск 1. Откройте приложение в браузере. 2. На странице приветствия создайте первого администратора. 3. Войдите под созданной учётной записью. 4. Создайте мероприятие и настройте почту в разделе «Рассылка → Настройки почты». ## Настройка почты В разделе **Рассылка → Настройки почты** можно выбрать один из способов отправки: - **SMTP** — указать сервер, порт, логин и пароль. - **EWS** — для Microsoft Exchange, указать URL вида `https://mail.company.com/EWS/Exchange.asmx`. - **Локальный Outlook** — работает только если приложение запущено на Windows-компьютере с установленным Outlook. ## Безопасность - Сразу после первого запуска задайте сильный `SECRET_KEY` через переменную окружения. - Не храните реальные пароли в репозитории — используйте `.env` файл или переменные окружения. - Папка `instance/` (SQLite) и `app/static/uploads/` не попадают в git. - Пример переменных окружения — в файле `.env.example`. ## Переменные окружения | Переменная | Описание | По умолчанию | |------------|----------|--------------| | `SECRET_KEY` | Секретный ключ для сессий | `dev-secret-key-change-in-production` | | `BASE_URL` | Базовый URL приложения | — | | `TIMEZONE` | Часовой пояс | `Europe/Moscow` | | `DATABASE_URL` | URI базы данных (SQLite по умолчанию) | `sqlite:///instance/inviteme.db` | ## Структура проекта ``` InviteMe/ ├── app/ # Flask-приложение │ ├── services/ # QR, билеты, почта, Excel │ ├── templates/ # HTML-шаблоны │ ├── static/ # CSS, JS, изображения │ └── utils/ # Вспомогательные утилиты ├── instance/ # SQLite-база (не в git) ├── app/static/uploads/ # Загруженные файлы (не в git) ├── Dockerfile ├── docker-compose.yml └── requirements.txt ``` ## Лицензия См. файл [LICENSE](LICENSE).