master
- HTML comment in base.html with project description and link - Small fixed footer in bottom-right corner: Crafted by mycloud24 - Footer styled to be unobtrusive (low opacity, small font)
InviteMe
Production-система регистрации гостей, рассылки приглашений, выпуска QR-билетов и контроля входа на мероприятия.
Возможности
- Мероприятия и ролевая модель: администратор, организатор и сотрудник на входе.
- Импорт гостей из
.xlsx, закрытое хранение фотографий и генерация QR-кодов. - Фоновая рассылка через SMTP, EWS или локальный Outlook с индивидуальными статусами доставки.
- Персональная страница приглашения: RSVP, комментарий, особенности питания, билет и календарь
.ics. - Сканирование на входе, отчёты о посещаемости и журнал аудита.
- PostgreSQL, общие лимиты запросов через Redis, автоматический HTTPS и миграции базы.
Запуск в production
Нужны Linux-сервер с Docker Compose, домен, направленный на сервер, и открытые входящие порты 80/443.
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.
Локальная разработка
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.
Проверка
python -m pytest -q
pip-audit -r requirements.txt
Структура
app/ Flask-приложение
instance/uploads/ закрытые файлы в локальном режиме
migrations/ миграции Alembic
tests/ регрессионные тесты безопасности
docs/PRODUCTION.md инструкция по эксплуатации
Лицензия
Открытая лицензия не предоставляется. Исходный код предназначен только для разрешённого правообладателем использования.
Description
Languages
Python
64.3%
HTML
29.6%
JavaScript
5.6%
Dockerfile
0.3%
Mako
0.2%