Skip to content

SOS

Open Source PWA взаимопомощи для сообществ водителей.

В экстренной ситуации водитель нажимает кнопку SOS — участники его сообщества (по радиусу или по городу) получают push-уведомление и могут подтвердить, что едут на помощь. Не чат, а обработка событий: центральная сущность — Emergency.

Статус

MVP готов (M0–M7), тег v0.1.0. M0 (каркас, CI, деплой), M1 (авторизация через VK ID, профиль, приватность), M2 (группы), M3 (PWA, Web Push), M4 (кнопка SOS, подбор получателей, очередь пушей и воркер), M5 (отклики, поэтапное раскрытие данных, htmx-поллинг экрана тревоги), M6 (журнал событий, рейт-лимиты, жалобы на ложную тревогу, страница модератора, структурированные логи), M7 (docs/PRIVACY.md, CODE_OF_CONDUCT.md, шаблоны issue/PR, обновление координат при открытии приложения и удаление аккаунта — оба обнаружились отсутствующими при сверке документации и были реализованы здесь же, контрольный прогон восстановления из бэкапа).

Сразу после релиза подключён визуальный дизайн (тег v0.2.0): Tailwind CSS v4 (standalone CLI, без Node — собранный app/static/css/app.css вендорится, как и htmx), мобильная вёрстка, тёмная тема, русифицированные статусы. Как собирать стили — CONTRIBUTING.md.

Задеплоено на реальный сервер по состоянию на M4: вход через VK и доставка Web Push подтверждены на настоящем Android-устройстве; M5–M7 пока не редеплоены. Ещё не проверено: iPhone/Safari (нужен физический доступ) и полный цикл «SOS у одного участника → отклик другого → закрытие» на двух реальных телефонах (нужен второй реальный участник группы). Дальше — пункты из PLAN.md, раздел «После MVP» (SSE вместо поллинга, доверенные круги, Telegram-бот, карта, многоязычность). Дорожная карта и детали каждой вехи — PLAN.md.

Стек

  • Клиент: PWA, HTML, htmx, Tailwind CSS, Web Push API.
  • Backend: FastAPI, PostgreSQL, SQLAlchemy 2.0 (async), Alembic, Caddy.
  • Сервер: Ubuntu, systemd — без Docker/Kubernetes, чтобы минимизировать сложность сопровождения.

Документация

Ограничения (честно, заранее)

  • Фоновая геолокация недоступна ни на Android, ни на iOS — браузеры такого API не дают. «Кто в радиусе» — всегда оценка по последним сохранённым координатам, не факт.
  • iOS Web Push работает только для PWA, установленной на домашний экран (Safari 16.4+).
  • Это не замена вызову экстренных служб.

Подробности и как это учтено в архитектуре — docs/ARCHITECTURE.md.

Лицензия

Apache 2.0.

About

Open source self-hosted PWA for emergency response, SOS alerts, Web Push notifications, and community coordination.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages