Skip to content

network-user/DotLearn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

202 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.learn

Node.js Platform Category 322k+ lines of code

.learn

security audit passed · full, leaks + code audit date

Local-first монорепо для обучения программированию, где урок - не статический текст, а интерактивный модуль. Каждая тема - типобезопасный пакет (теория в MDX, упражнения в YAML, всё под Zod): теорию сопровождают встроенные визуализации, а задачи проверяются прямо в браузере через sql.js и Pyodide в Web Workers. Контент генерируется офлайн скиллом lesson-forge; рантайм работает на чистой логике, без AI, apps/api опционален.

Что внутри

  • Интерактивная теория, не стена текста. Более 50 визуализаций и схем встроены в уроки: JOIN-ы и GROUP BY, B-tree и планы запросов, хеш-таблицы и консистентное кольцо, attention и токенизация, градиентный спуск и перцептрон, IoU и NMS. Плюс графики, иллюстрации, сноски, чекпойнты и глоссарий по ходу чтения (MDX + Shiki).
  • 62 темы, 408 концептов, каталог по разделам. От полки «Основы: начни отсюда» (Python и JavaScript с нуля, регулярные выражения) и фронтенда (HTML/CSS) до продвинутого Python (ООП, дескрипторы, GIL, конкурентность), алгоритмы и структуры данных, базы данных (SQL, индексы, масштабирование), Web и API (включая HTTP с нуля), архитектура, ML и AI, инструменты (git, командная строка Linux). Плюс 6 курируемых треков, фасетные фильтры и полнотекстовый поиск.
  • Банк собеседований. ~1449 вопросов с ответами (ru+en), хаб /interview, markdown-зеркала и JSON-LD QAPage на пререндере.
  • Проверочные вопросы почти в каждой теме. theory-quiz с мгновенной проверкой и разбором - закрепить теорию, не уходя со страницы.
  • Задачи с живым рантаймом и результатом в реальном времени. 7 типов упражнений (theory-quiz, sql-query, python-function, javascript-function, fill-in-blanks, predict-output, git-challenge) исполняются прямо в браузере на Monaco-редакторе, sql.js и Pyodide в Web Workers. Результат виден сразу: визуализатор SQL-запросов, пошаговый разбор Python (PyStepper), интерактивные git-задачи с проверкой состояния репозитория.
  • Проверка не только знаний, но и уверенности. Перед ответом отмечаешь «уверен / не уверен / наугад», статистика калибровки считается по Брайеру, лестница повторных экзаменов на 1-35 дней и блок свободного припоминания после каждой теории.
  • Свободная песочница. Отдельная страница /sandbox - интерактивные SQL- и Python-окружения для экспериментов вне уроков: Monaco-редактор, готовые шаблоны, мгновенный запуск в браузере (sql.js / Pyodide в Web Workers), без установки и без сервера.
  • Анимации и обратная связь. Переходы между страницами, анимированные счётчики и микро-взаимодействия (framer-motion), конфетти при решении задач и достижении целей.
  • Интервальное повторение. Флэшкарды с FSRS-планировщиком (ts-fsrs) по всем 62 темам.
  • Прогресс как привычка, с бэкапом. Серия (streak), GitHub-style heatmap активности, карта обучения, «что дальше», возобновление чтения с места - всё в IndexedDB (Dexie), без аккаунта. Экспорт и импорт всего прогресса для бэкапа и переноса между устройствами (заметки и закладки выгружаются отдельно).
  • Быстрая работа. Командная палитра Ctrl+K, прогрессивные подсказки, горячие клавиши, онбординг, установка как PWA, нижняя таб-панель на мобиле.
  • Живой онлайн, анонимно. Счётчик «кто сейчас здесь» с мини-графиками за сутки и по дням, без cookies и IP. На развёрнутой версии включается расширенная аналитика (уникальные за всё время через HyperLogLog, за 7 и 30 дней, разбивка «сейчас читают» по темам) и отдельная интерактивная страница /analytics.
  • Открытость для поисковиков и ИИ-агентов. Сборка пререндерит ~3000 статических HTML-страниц (темы ru+en, главные, глоссарий, хабы flashcards/tracks/map/sandbox с crawlable body, банк interview ru+en) с JSON-LD (Course + free Offer, BreadcrumbList, WebSite, DefinedTermSet, QAPage, CollectionPage), canonical, hreflang и lastmod в sitemap; генерирует robots.txt (private UI disallow, AI-боты allow), llms.txt / llms-full.txt, markdown-зеркала (/topics/<slug>.md, interview, glossary) и OG-карточки (ru + en). Краулеры без JS видят полный контент, SPA поверх статики оживает без гидрации. Webmaster-кабинеты не требуются.
  • Два языка. Русский (основной) и английский: 46 из 62 тем с en-изданием на /en/topics/<slug> и hreflang-парами; остальные - ru-only с редиректом en→ru. UI и interview bank - двуязычные.

Запуск

pnpm install
pnpm dev:web

http://localhost:5173 - в репозитории 62 темы (python-basics, sql-fundamentals, javascript-basics, db-indexes и др.).

Новая тема - попроси Cursor или Claude Code в этом репо:

Используй lesson-forge, добавь тему по SQL JOINs

Скилл: .cursor/skills/lesson-forge/, зеркало .claude/skills/lesson-forge/. Прочие агенты - AGENTS.md.

Docker

docker compose up --build -d

web на :8080, api на :3000 (Swagger /docs), elasticsearch на :9200. api читает секреты из .env (admin-логин, JWT, TOTP); fuzzy-поиск заявок in-memory по умолчанию, ES_ENABLED=true включает Elasticsearch.

Bare-metal без Docker (основной путь деплоя): sudo bash scripts/deploy.sh - идемпотентный скрипт сам ставит Node 22/pnpm/Caddy, генерит секреты, выставляет VITE_SITE_URL/VITE_API_BASE и поднимает web + api под systemd. Полный гайд по self-hosting (оба пути, ротация секретов, бэкап) - в docs/SELF_HOSTING.md.

Команды

Команда Назначение
pnpm dev:web Vite SPA, offline-first плеер
pnpm dev:api NestJS API (submissions, admin, поиск)
pnpm dev web + api параллельно (Turborepo)
pnpm build production-сборка (web: + пререндер, sitemap/llms/OG)
pnpm typecheck TypeScript по монорепо
pnpm test unit-тесты пакетов (vitest)
pnpm validate Zod-контракт тем + прогон gold-решений
pnpm lint ESLint по репозиторию
pnpm check:i18n паритет ключей локалей ru/en
pnpm check:bundle бюджет eager-JS после build
pnpm check:headers CSP/security headers в синхроне (vite/nginx/Caddy)
pnpm sync:skills .cursor/skills/.claude/skills/
pnpm check:skills CI: зеркала скиллов идентичны

Стек

TypeScript React Vite NestJS pnpm Turborepo Docker Elasticsearch Zod sql.js Pyodide Monaco Dexie

Тесты

pnpm typecheck
pnpm validate
pnpm test

Архитектура

Modular monolith в pnpm workspaces. Frontend и backend разделены пакетами, без cross-imports. apps/web читает topics/ через Vite import.meta.glob, гоняет sandbox в Web Workers и работает офлайн без AI в рантайме. apps/api опционален: submissions, admin, presence, sync и fuzzy-поиск заявок (in-memory по умолчанию, Elasticsearch по флагу). Сборка web несёт build-time SEO-слой (apps/web/scripts/): пререндер (~3000 HTML, включая interview), sitemap/robots/llms, markdown-зеркала, OG-карточки; рантайм от этого не тяжелеет.

.learn/
├── apps/
│   ├── web/                  # Vite + React SPA, local-first
│   └── api/                  # NestJS (DDD): submissions, admin, search, presence, sync
├── packages/
│   ├── contracts/            # Zod-схемы, общие типы
│   ├── lesson-engine/        # загрузчик тем, раннеры, CLI-валидатор
│   └── sandbox/              # sql.js + Pyodide в Web Workers
├── topics/                   # 62 темы (manifest + MDX + YAML)
├── interview/                # банк вопросов (~1449) + exercises
├── deploy/                   # Caddyfile + systemd (bare-metal)
├── scripts/                  # deploy.sh, sync/checks, контент-тулинг
├── .cursor/skills/           # lesson-forge, generate-readme, sync-project-rules
├── .claude/skills/           # зеркало (pnpm sync:skills)
├── docker-compose.yml
└── AGENTS.md
  • Local-first: apps/web работает без apps/api
  • Pure-logic: рантайм без AI; LLM только офлайн для генерации контента
  • contracts: единственный общий слой web ↔ api
  • topics: не импортируют из apps/*
  • lesson-forge: владеет контрактом темы; CI pnpm check:skills ловит drift зеркал
  • SEO build-time: пререндер и артефакты генерятся при сборке, в SW-прекэш и eager-бандл не попадают

Лицензия

© 2026 DotCore. PolyForm Noncommercial 1.0.0.

Разрешены форки, изменения и распространение в некоммерческих целях. Учебный контент тем (topics/) лицензирован по CC BY-NC 4.0. Коммерческое использование в любом виде требует предварительного письменного разрешения автора. См. LICENSE.

About

учимся с помощью вайбкодинга

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages