← Все проекты

2023 — сейчас · EdTech-платформа

Verbal Voyager

Рабочая среда языковой студии: преподаватели ведут учеников и расписание, ученики проходят упражнения и собирают словарь.

verbal-voyager.ru ↗

О проекте

Одно окно для студии

Вместо расписания в мессенджерах, файлов в облаке и слов в сторонних приложениях: всё, что нужно преподавателю и ученику, в одном месте.

Преподавателю

  • Проекты с учениками и автоматическое расписание уроков
  • Календарь со статусами занятий и оплат
  • Планы уроков и конструктор интерактивных страниц
  • Доходы и тарифы, роль бухгалтера

Ученику

  • Упражнения в пять шагов: от запоминания до перевода
  • Диалоги, сгенерированные на изучаемой лексике
  • Словарь с транскрипцией, аудио и примерами
  • Расписание в собственном часовом поясе
60 666слов в словаре, 39 687 пар перевода
~11 400строк Python без миграций
79автотестов в CI
4языка: английский, французский, испанский, русский

Штат

Кто отвечает за что

РольСотрудникЗона ответственности
Fullstack-разработчикИван КарасёвМодели данных, backend, интерфейсы, интеграции с OpenAI и SkyEng
DevOps-инженерИван КарасёвСервер, CI, мониторинг, безопасность, резервные копии
Дизайн и редизайнИван КарасёвИнтерфейс платформы и прототип «Mystic Space HUD»
ЗаказчикСтудия WhyNot?Требования, приёмка, пилоты на реальных учениках

Стек

На чём работает

Backend
  • Python 3.12
  • Django 5.2
  • PostgreSQL 16
  • Redis
  • pytest
  • Ruff
Frontend
  • JavaScript ES-модули
  • HTML/CSS
  • CKEditor 5
Инфраструктура
  • Ubuntu
  • nginx
  • Gunicorn
  • Supervisor
  • systemd
  • Let's Encrypt
  • ufw + fail2ban
  • S3 + CDN
Процесс
  • Gitea
  • GitHub Actions
  • Zabbix
Интеграции
  • OpenAI API
  • SkyEng API
  • reCAPTCHA

Инфраструктура

Как устроен прод

Прокручивайте: слева шаги, справа схема собирается по ним. Наведите на любой узел, подробности появятся под схемой.

01 · вход

Все запросы приходят на nginx

HTTP/2, TLS 1.2 и 1.3. Всё, что пришло на 80-й порт, уходит на HTTPS.

02 · статика

Тяжёлое идёт мимо сервера

Картинки, скрипты и медиа раздаются из S3-хранилища через CDN. Сервер с 2 ГБ памяти занят только логикой.

03 · приложение

nginx → Gunicorn → Django

Gunicorn слушает только 127.0.0.1:8001, снаружи его не видно.

04 · данные

PostgreSQL и Redis

Основная база и кэш с сессиями. Оба слушают только локальный адрес.

05 · служебные сервисы

Кто следит за процессами

Supervisor перезапускает Gunicorn, certbot продлевает сертификаты, nginx, базы и Gitea работают как службы systemd.

06 · периметр

Снаружи открыты три порта

22, 80 и 443. ufw с запретом по умолчанию, fail2ban заблокировал больше 10 000 попыток подбора пароля.

07 · наблюдение

Мониторинг и алерты

Агент Zabbix отдаёт метрики внешнему серверу мониторинга, о сбоях сообщает Telegram-бот.

VPS · Timeweb · Ubuntu 22.04 · 2 vCPU / 2 ГБufw · fail2ban · наружу 22 / 80 / 443службы systemd: nginx · PostgreSQL · Redis · Gitea · агент Zabbix:443статика:8001WSGI:5432:6379сертификатыперезапуск:10050Пользователибраузер · телефонnginx1.29reverse proxy · TLSS3 + CDNVK CloudGunicorn23WSGI-серверDjango5.212 приложенийPostgreSQL16основная базаRedis8кэш · сессииcertbotLet's EncryptSupervisorследит за GunicornGitea1.27Git-серверZabbixагент 2Zabbixмониторинг · алерты
Подробности

Наведите на узел схемы или нажмите на него: здесь появятся роль, порт и то, кто за ним следит.

История

Как рос проект

Коммиты по месяцам, прямо из git. Янтарным отмечены месяцы с крупными релизами.

394коммитов · до 09.2026
2023202420252026

Разборы

Задачи, которые стоило решить

Каждый разбор устроен одинаково: что сломалось, почему, что сделано и как проверено.