Files
darko fcafe1ae15 feat: аккаунты по почте с подтверждением, сбросом пароля и синхронизацией прогресса
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.
2026-10-16 11:25:09 +03:00

2.1 KiB

Сплит-тренер

Тренажёр слепой печати для сплит-клавиатур: русская и английская раскладки, цифры, знаки препинания, статистика, чтение раскладки Vial (.vil) и упражнения на переключение слоёв.

Без сборки и зависимостей: статический сайт.

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

  • Локально: откройте public/index.html в браузере.

  • На сервере (Debian 12/13), в том числе за обратным прокси:

    docker compose up -d --build        # или: sudo ./deploy/install-debian.sh
    

    Требования, настройка прокси, обновление: docs/DEPLOY.md.

Как пользоваться: docs/ИНСТРУКЦИЯ.md.

Аккаунты (необязательно)

На сервере можно включить вход по почте: регистрация с подтверждением, сброс пароля, прогресс на сервере. API написан на чистой стандартной библиотеке Python (server/), настройки почты задаются переменными окружения (образец: .env.example). Подробнее: раздел «Аккаунты и почта» в 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/ - инструкции