InviteMe Developer bdfbcf99b0 fix: dark text in striped tables and inactive rows
Bootstrap table variants (striped, secondary) used their own color variables
that were not overridden by the dark theme, causing black text on dark
background. Added explicit --bs-table-striped-color, --bs-table-hover-color,
--bs-table-active-color and .table-secondary overrides.
2026-09-01 11:49:00 +03:00

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   инструкция по эксплуатации

Лицензия

Открытая лицензия не предоставляется. Исходный код предназначен только для разрешённого правообладателем использования.

S
Description
Project InviteMe backed up from C:/Projects
Readme 16 MiB
Languages
Python 64.3%
HTML 29.6%
JavaScript 5.6%
Dockerfile 0.3%
Mako 0.2%