Skip to content

mlanies/2GC-chat

Repository files navigation

💬 Durable Chat Template

Современный безопасный чат в реальном времени на Cloudflare Workers

Deploy to Cloudflare Workers TypeScript React License: Apache 2.0

🌐 Продакшен

✨ Возможности

  • 🔐 Аутентификация по паролю - доступ к чату только с правильным паролем
  • 💾 Сохранение сессии - автоматический вход при обновлении страницы
  • 🔔 Push-уведомления - получайте уведомления о новых сообщениях
  • 💬 Реальное время - мгновенная доставка сообщений
  • 🎨 Современный дизайн - красивый интерфейс с анимациями
  • 📱 Адаптивный дизайн - работает на всех устройствах
  • 🔒 Безопасность - криптографически стойкое шифрование и защита
  • 🌙 Поддержка темной темы - автоматическое переключение
  • 🤖 Защита от ботов - Cloudflare Turnstile + кастомные задачи

Экран входа

Login Screen

Интерфейс чата

Chat Interface

🚀 Быстрый старт

1. Установка зависимостей

npm install

2. Настройка конфигурации

Создайте локальный конфигурационный файл:

cp wrangler.toml.example wrangler.toml

Отредактируйте wrangler.toml и настройте:

  • Уникальное имя приложения
  • Пароль для доступа к чату
  • Другие параметры

📖 Подробная инструкция: docs/development/CONFIGURATION.md

3. Настройка секретов (для продакшена)

# Пароль чата
wrangler secret put CHAT_PASSWORD

# Ключи Cloudflare Turnstile (опционально)
wrangler secret put TURNSTILE_SITE_KEY
wrangler secret put TURNSTILE_SECRET_KEY

4. Запуск в режиме разработки

npm run dev

5. Деплой в продакшн

npm run deploy

📱 Использование

  1. Откройте приложение в браузере
  2. Введите пароль для доступа к чату
  3. Пройдите защиту от ботов (Cloudflare Turnstile + задача)
  4. Разрешите push-уведомления при запросе браузера
  5. Начните общение!
  6. При обновлении страницы вы автоматически войдете в чат
  7. Используйте кнопку "Выйти" для завершения сессии

🔧 Технологии

  • PartyKit - для WebSocket соединений
  • Durable Objects - для хранения состояния чата
  • React - для пользовательского интерфейса
  • TypeScript - для типобезопасности
  • Cloudflare Workers - для хостинга
  • Web Crypto API - для криптографических операций
  • AES-GCM - для шифрования сообщений
  • PBKDF2 - для хеширования паролей

🛠️ Разработка

Структура проекта

src/
├── client/          # React клиент
│   ├── components/  # React компоненты
│   └── utils/       # Утилиты безопасности
├── server/          # PartyKit сервер
└── shared.ts        # Общие типы

public/
├── index.html       # HTML шаблон
├── styles.css       # Стили
└── sw.js           # Service Worker для push-уведомлений

Доступные команды

  • npm run dev - запуск в режиме разработки
  • npm run deploy - деплой в продакшн
  • npm run check - проверка типов и конфигурации

🔒 Безопасность

✅ Реализованные меры:

  • Криптографически стойкое хеширование паролей (PBKDF2 с солью)
  • Шифрование сообщений (AES-GCM)
  • Защита от SQL-инъекций (параметризованные запросы)
  • Защита от XSS (улучшенная санитизация)
  • Безопасные токены сессий (криптографически стойкая генерация)
  • Защита от ботов (Cloudflare Turnstile + кастомные задачи)
  • Ограничение попыток входа (блокировка после 3 неудачных попыток)
  • Автоматическая очистка сообщений (удаление через 2 минуты)
  • Ротация ключей шифрования (каждые 24 часа)
  • HTTPS проверка и безопасные cookies

🔐 Секреты:

Все секретные данные хранятся в переменных окружения Cloudflare:

  • CHAT_PASSWORD - пароль для доступа к чату
  • TURNSTILE_SITE_KEY - публичный ключ Cloudflare Turnstile
  • TURNSTILE_SECRET_KEY - секретный ключ Cloudflare Turnstile

🎨 Дизайн

  • Современный интерфейс с градиентами и тенями
  • Плавные анимации и переходы
  • Адаптивная верстка для всех устройств
  • Интуитивный UX с защитой от ботов

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

📖 Полная документация: docs/README.md

📁 Основные разделы:

🔗 Полезные ссылки:

📄 Лицензия

Этот проект распространяется под лицензией Apache-2.0. См. файл LICENSE для получения дополнительной информации.


Сделано с ❤️ для сообщества разработчиков

About

Безопасный чат с паролем, push-уведомлениями и сохранением сессии, построенный на PartyKit и Durable Objects.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors