Files
Learn_System/.claude/memory/project_status.md
T
Maxim Dolgolyov 8a7091ddec chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в
.claude/memory/, чтобы переносить между машинами через git.
README.md — как восстановить в пользовательскую папку на другой машине.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 08:32:16 +03:00

10 KiB
Raw Blame History


name: LearnSpace — полная карта реализованных функций description: Что уже сделано в проекте: все страницы, API, таблицы БД, инструменты доски, стек, деплой type: project originSessionId: 1959f491-c6c4-4d6b-9081-0b09298d1699

LearnSpace — реализованный функционал (апрель 2026)

Why: Чтобы не переоткрывать то, что уже есть, при планировании новых фич. How to apply: Перед реализацией любой фичи — сверяться, чтобы не дублировать.


Frontend pages (43 HTML-файла в frontend/)

Файл Назначение
login.html Split-layout авторизация, canvas neural-network анимация
dashboard.html Главная ученика — задания, прогресс, gamification
admin.html Панель администратора
profile.html Профиль пользователя
classes.html Google Classroom-стиль карточки классов
board.html Лента класса (анонсы, задания, активность)
classroom.html Онлайн-урок (доска + чат + видео/аудио)
live-quiz.html Live-викторина в реальном времени
test-run.html Прохождение теста
test-result.html Результат теста
question-bank.html Банк вопросов
homework.html Задания студента
course.html Прохождение курса
lesson.html Просмотр урока
lesson-editor.html Редактор уроков с блоками
theory.html Теоретические материалы
library.html Библиотека файлов
analytics.html Аналитика/отчёты
flashcards.html Карточки с интервальным повторением
knowledge-map.html Граф знаний
crossword.html Кроссворд
hangman.html Виселица
biochem*.html (5) Интерактивная биохимия: молекулы, реакции, пути
red-book*.html (4) Красная книга: виды, биомы, экосистемы, игры
collection*.html (2) Коллекции предметов
gradebook.html Журнал оценок
parent.html Кабинет родителя
pet.html Виртуальный питомец
lab.html Интерактивные лабораторные работы (30+ симуляций)
403/404/500.html Страницы ошибок

Backend API (28 групп маршрутов)

/api/auth          — JWT авторизация, регистрация, профиль
/api/subjects      — Предметы
/api/sessions      — Тестовые сессии
/api/admin         — Управление платформой, feature flags
/api/questions     — Банк вопросов
/api/classes       — Классы
/api/assignments   — Задания, дедлайны
/api/files         — Загрузка файлов, папки
/api/tests         — Тесты/квизы
/api/notifications — Уведомления
/api/permissions   — RBAC
/api/submissions   — Сдача работ, оценки
/api/courses       — Курсы (теория)
/api/lessons       — Уроки с блоками
/api/gamification  — XP, уровни, ачивки, стрики
/api/shop          — Виртуальный магазин, монеты
/api/templates     — Шаблоны заданий
/api/bookmarks     — Закладки
/api/search        — Поиск контента
/api/flashcards    — Флэшкарты со spaced repetition
/api/settings      — Настройки
/api/analytics     — Аналитика и отчёты
/api/live          — Live-квизы (real-time)
/api/classroom     — Онлайн-урок (SSE, доска, чат, WebRTC)
/api/games         — Игры (виселица, кроссворд)
/api/knowledge-map — Граф знаний
/api/pet           — Виртуальный питомец
/api/collection    — Коллекционирование
/api/red-book      — Красная книга
/api/biochem       — Биохимия

Classroom API (детально)

  • POST/GET/DELETE сессий
  • JOIN/LEAVE участников, attendance log
  • Чат: отправка, получение, реакции, закрепление, загрузка файлов
  • Strokes: batch save, load (с пагинацией + since_seq), update, delete, preview (SSE)
  • Страницы: add, change_current, set_template, clear
  • Поднятая рука: raise/lower/list
  • Разрешения рисования: grant/revoke per user
  • WebRTC: signaling relay, cursor broadcast, mute, screen share
  • Notes: get/save per user per session
  • Templates: save/load session как шаблон

БД — 76 таблиц SQLite (better-sqlite3, sync)

Ключевые группы:

  • users + role_permissions + user_permissions
  • test_sessions + session_questions + user_answers
  • subjects + topics + questions + options + tests + test_questions
  • classes + class_members
  • classroom_sessions + classroom_pages + classroom_strokes + classroom_chat + classroom_chat_reactions + classroom_attendance + classroom_invites + classroom_draw_permissions + classroom_notes
  • courses + course_sections + lessons + lesson_blocks + lesson_progress + lesson_notes + class_courses
  • assignments + assignment_sessions + assignment_templates + submissions + submission_log
  • files + file_access + folders + folder_access
  • xp_log + achievements + user_achievements + daily_goals + challenges
  • announcements + notifications + bookmarks
  • live_sessions + live_answers
  • shop_items + user_purchases
  • flashcard_decks + flashcard_cards + flashcard_reviews
  • bio_elements/molecules/reactions/... (5 биохим-таблицы)
  • rb_species/habitats/groups/... (9 красная книга)
  • app_settings + error_log + admin_audit_log

Whiteboard (frontend/js/whiteboard.js ~3200 строк)

Инструменты рисования

  • Pencil (Catmull-Rom сглаживание)
  • Highlighter (полупрозрачный маркер)
  • Laser (без сохранения)
  • Eraser
  • Connector (линии со стрелками)
  • Sticky notes
  • Text (inline editing)
  • Image (вставка + upload)
  • Formula / LaTeX (KaTeX, modal editor с категориями)
  • Table (интерактивная)
  • Coordinate system (с графиками функций, парсер выражений)
  • Number line (для неравенств, точки + интервалы)
  • Compass: трёхфазная state machine (idle → setting-radius → waiting-arc → drawing-arc), сохраняется как {cx, cy, radius, arcStart, arcSweep, color, lineWidth, showLegs}, live preview в _renderDynamic с ногами компаса и меткой угла

Shapes (11)

rect, ellipse, line, arrow, triangle, diamond, hexagon, star, roundedrect, callout, connector

Инструмент выделения

  • Move + resize всех объектов (bbox handles)
  • Rotation handle (purple) для объектов
  • Lasso multi-select (резиновая рамка)
  • Shift+click добавить к выделению
  • Copy/Paste с offset
  • Snap guides при перемещении
  • Delete / Bring to front / Send to back

Zoom / Pan

  • Wheel zoom (к курсору)
  • Space+drag = pan
  • Ctrl+0/+/- hotkeys
  • clampPan() — ограничение выхода за пределы
  • Minimap: 192×108 overlay bottom-right (показывается при zoom>1)
  • Viewport indicator на minimap; клик/drag = прыжок

Оверлеи (не сохраняются)

  • Ruler: вращение (drag ↺), resize (drag ↔), свойства-панель (угол + длина)
  • Protractor: вращение, resize (radius), свойства-панель

Прочее

  • Двухслойный canvas: static (strokes) + dynamic (selection/guides/live)
  • Шаблоны страниц: blank, grid, lined, dots, coordinate
  • Multi-page с thumbnail sidebar (renderThumbnail)
  • Export PNG (с сохранением zoom/pan)
  • Auto-measurements (длины/углы/площадь для shape)
  • Real-time sync: SSE + HTTP polling (since_seq)
  • Live strokes preview через /stroke-preview
  • Cursor broadcast (teacher position visible to students)

Темы доски (4)

  • Chalkboard (по умолчанию): зелёный (#213d26), меловая текстура, горизонтальные смазки
  • Blackboard (классная): тёмно-синий (#1a1a2e), диагональная текстура, chalk-grain
  • Corkboard (пробка): коричневый (#7a5c1e), диагональные волокна, случайные узлы-пятна
  • Whiteboard (маркерная): светло-серый градиент, minimal grain, тёмные линии шаблонов
  • Переключатель: setBoardTheme(name) + wbSetBoardTheme() + <select id="wb-theme-select">
  • Текстуры кешируются в _bgNoiseCache (Map по имени темы)

Tech stack

  • Backend: Node.js 22, Express 4.18, better-sqlite3 (sync), JWT, bcryptjs, multer, sharp, compression
  • Frontend: Vanilla JS ES6+, HTML/CSS без бандлера, Canvas API, SSE, WebRTC
  • Иконки: inline SVG .ic класс (НЕ эмоджи), Lucide CDN на некоторых страницах
  • Шрифты: Google Fonts (Unbounded, Manrope)
  • Деплой: Docker multi-stage Alpine, docker-compose, tini init, 3 named volumes
  • Репо: https://git.dolgolyov-family.by/maxim.dolgolyov/Learn_System (ветка master)

Env vars (backend/.env.example)

PORT=3000
JWT_SECRET=...
JWT_EXPIRES_IN=7d
CLIENT_ORIGIN=http://localhost:3000
DB_PATH=/app/backend/data/learnspace.db
UPLOADS_DIR=/app/backend/uploads