Files
InviteMe/README.md
T
2026-09-01 11:03:25 +03:00

72 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# InviteMe
Production-система регистрации гостей, рассылки приглашений, выпуска QR-билетов и контроля входа на мероприятия.
## Возможности
- Мероприятия и ролевая модель: администратор, организатор и сотрудник на входе.
- Импорт гостей из `.xlsx`, закрытое хранение фотографий и генерация QR-кодов.
- Фоновая рассылка через SMTP, EWS или локальный Outlook с индивидуальными статусами доставки.
- Персональная страница приглашения: RSVP, комментарий, особенности питания, билет и календарь `.ics`.
- Сканирование на входе, отчёты о посещаемости и журнал аудита.
- PostgreSQL, общие лимиты запросов через Redis, автоматический HTTPS и миграции базы.
## Запуск в production
Нужны Linux-сервер с Docker Compose, домен, направленный на сервер, и открытые входящие порты 80/443.
```bash
git clone https://git.mycloud24.ru/insight/InviteMe.git
cd InviteMe
cp .env.example .env
# Заполните DOMAIN и сгенерируйте три секрета в .env.
docker compose up -d --build
docker compose exec inviteme flask --app run.py create-admin
```
Caddy автоматически получает и продлевает TLS-сертификат. Контейнер приложения напрямую наружу не публикуется.
Полная инструкция по установке, резервному копированию и обновлению: [docs/PRODUCTION.md](docs/PRODUCTION.md).
## Локальная разработка
```bash
python -m venv venv
venv/bin/pip install -r requirements-dev.txt
venv/bin/python run.py
```
На Windows замените `venv/bin/` на `venv\Scripts\`. Локальный режим использует SQLite и разрешает создание первого администратора через веб-страницу.
## Безопасность
- Production не запускается без уникальных секретов и обязательных безопасных настроек.
- Фотографии, QR-коды, билеты и отчёты находятся вне `static` и выдаются только после проверки доступа.
- Организатор видит только собственные мероприятия, а сотрудник на входе — только назначенные ему.
- Двойная отметка входа блокируется базой, ошибочный вход отменяется с обязательной записью в аудит.
- Изображения ограничиваются по размеру, декодируются, проверяются и сохраняются заново. SVG и анимация запрещены.
- Почтовые пароли шифруются перед записью в базу.
- Включены CSRF, защищённые cookies, HTTPS, security headers и лимиты запросов через Redis.
- Контейнер работает без root, с файловой системой только для чтения и без Linux capabilities.
## Проверка
```bash
python -m pytest -q
pip-audit -r requirements.txt
```
## Структура
```text
app/ Flask-приложение
instance/uploads/ закрытые файлы в локальном режиме
migrations/ миграции Alembic
tests/ регрессионные тесты безопасности
docs/PRODUCTION.md инструкция по эксплуатации
```
## Лицензия
Открытая лицензия не предоставляется. Исходный код предназначен только для разрешённого правообладателем использования.