API аккаунтов на чистой стандартной библиотеке Python (server/splitapi): - регистрация по почте: пароль задаётся по ссылке из письма, аккаунт создаётся только после подтверждения - вход, выход, сброс пароля по почте (токены одноразовые, в базе только SHA-256), удаление аккаунта - пароли scrypt, лимиты попыток по паре «адрес + IP», IP и аккаунту, защита от CSRF - хранение прогресса пользователя с оптимистичной блокировкой версии - SMTP через переменные окружения; без SMTP на публичном адресе API не стартует Клиент: public/auth.js (вход, регистрация, сброс, синхронизация), public/sync.js (чистое слияние прогресса). Без API сайт работает как раньше. Развёртывание: Dockerfile.api, сервис splitapi в docker-compose, проксирование /api/ в nginx с ограничением частоты, deploy/install-api-debian.sh (systemd), .env.example. Тесты: 216 для бэкенда (unittest, покрытие около 97%), 16 для клиентского слияния. Документация: раздел «Аккаунты и почта» в docs/DEPLOY.md, раздел 9 в docs/ИНСТРУКЦИЯ.md.
33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
# Сплит-тренер
|
|
|
|
Тренажёр слепой печати для сплит-клавиатур: русская и английская раскладки, цифры, знаки препинания, статистика,
|
|
чтение раскладки Vial (.vil) и упражнения на переключение слоёв.
|
|
|
|
Без сборки и зависимостей: статический сайт.
|
|
|
|
## Быстрый старт
|
|
|
|
- **Локально:** откройте `public/index.html` в браузере.
|
|
- **На сервере (Debian 12/13), в том числе за обратным прокси:**
|
|
|
|
```bash
|
|
docker compose up -d --build # или: sudo ./deploy/install-debian.sh
|
|
```
|
|
|
|
Требования, настройка прокси, обновление: [docs/DEPLOY.md](docs/DEPLOY.md).
|
|
|
|
Как пользоваться: [docs/ИНСТРУКЦИЯ.md](docs/ИНСТРУКЦИЯ.md).
|
|
|
|
## Аккаунты (необязательно)
|
|
|
|
На сервере можно включить вход по почте: регистрация с подтверждением, сброс пароля, прогресс на сервере. API написан на чистой стандартной библиотеке Python (`server/`), настройки почты задаются переменными окружения (образец: `.env.example`). Подробнее: раздел «Аккаунты и почта» в [docs/DEPLOY.md](docs/DEPLOY.md).
|
|
|
|
## Структура
|
|
|
|
- `public/` - сайт: `index.html`, `app.js` (логика), `vial.js` (разбор Vial и маршруты по слоям), `data.js` (раскладки, слова, тексты), `styles.css`
|
|
- `server/` - API аккаунтов (Python, без зависимостей) и его тесты
|
|
- `tests/` - тесты клиентского кода (`node --test "tests/*.test.js"`)
|
|
- `deploy/` - конфиг nginx и скрипты установки для Debian
|
|
- `Dockerfile` (сайт), `Dockerfile.api` (API), `docker-compose.yml` - запуск в контейнерах
|
|
- `docs/` - инструкции
|