Files
Alexej Wolff 68c2b129fa Major refactor: security, performance, and code organization
Security:
- DeepSeek API moved to server-side proxy with rate limiting (20 req/min)
- Whitelist validation for all POST/PUT routes
- Cookie security (secure, sameSite, httpOnly in production)
- Input validation for messages, tokens, temperature
- Sanitized hasOwnProperty to prevent prototype pollution

Performance:
- Lazy loading for chat messages (sliding window of 20)
- Streaming response throttling (50ms batches)
- Scroll optimization (only scroll on new messages)
- AbortController fix for stop button

Code organization:
- GamePage refactored from ~1170 to ~750 lines
- New hooks: useGameSession, useStreamingResponse, useCharacterDetection, useLazyMessages
- New components: MessageList, ChatInput, SessionSelector, CharacterPanel
- Fixed ESLint errors

Features:
- OOC mode button for direct AI instructions
- Message versions (aiResponse) now persist to DB
- playerId saved in sessions
2026-05-05 23:41:52 +02:00

68 lines
2.5 KiB
Markdown

# ReSekai
**ReSekai** — интерактивная платформа для создания и прохождения текстовых ролевых историй с AI-персонажами.
🌐 **Демо:** [resekai.draug.me](https://resekai.draug.me)
## Возможности
- 📖 **Создание историй** — описывайте сеттинг, персонажей и стартовую сцену
- 🎭 **AI-персонажи** — уникальные характеры с настраиваемыми личностями
- 💬 **Интерактивный чат** — общайтесь с персонажами в реальном времени (streaming)
- 🎨 **Настройка креативности** — выбирайте температуру генерации (0.9–1.05)
- 💾 **Сохранение прогресса** — истории хранятся локально в браузере
- 📱 **Адаптивный дизайн** — работает на десктопе и мобильных устройствах
## Технологии
### Frontend
- React 18 + TypeScript
- Vite
- CSS (без фреймворков)
### Backend
- Express.js (прокси-сервер)
- DeepSeek API (модель deepseek-chat V3)
## Установка
```bash
# Клонировать репозиторий
git clone https://git.draug.me/draug/resekai.git
cd resekai
# Установить зависимости
npm install
cd server && npm install && cd ..
# Настроить backend (скопировать .env.example и заполнить)
# Обязательно указать DEEPSEEK_API_KEY в server/.env
# Запустить в режиме разработки
npm run dev # Frontend (порт 5173)
cd server && node index.js # Backend (порт 3001)
```
## Структура проекта
```
src/
├── components/ # Header, Footer
├── contexts/ # AuthContext
├── pages/ # Страницы приложения
│ ├── StoriesPage # Список историй
│ ├── CreateStoryPage # Создание/редактирование
│ ├── GamePage # Игровой чат
│ └── CharactersPage # Управление персонажами
├── services/ # API, DeepSeek, Storage
└── types/ # TypeScript типы
server/
└── index.js # Express прокси для DeepSeek API
```
## Лицензия
MIT