AAYMA
RU
Войти

BLITZ

Учебная платформа: пользователь задаёт тему и цель и получает персональную карту обучения с генерируемыми уроками, тестами, карточками с…

Рабочий MVP
Команда «Ctrl + C» 12💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Ctrl + C
Кейс HackAlem.ai: Образование — AI Sana
Стадия: Рабочий MVP

Задача кейса: Challenge Hub: превратить задачу бизнеса в задание для студенческих команд

Суть

Учебная платформа: пользователь задаёт тему и цель и получает персональную карту обучения с генерируемыми уроками, тестами, карточками с интервальным повторением и XP. Прямо к кейсу AI Sana (каталог бизнес-задач) это не относится, что README и признаёт.

Как устроено

Приложение на Vinext/Vite и Cloudflare Workers с SQLite/D1 и Drizzle. OpenAI Responses API генерирует карту из 1–12 этапов, теорию, визуализации, тесты из 10 вопросов и наборы из 12–20 карточек; для каждого типа свой промпт и валидация структуры. Карточки повторяются через 3/7/14/30/60/90 дней, ответы сверяются с сохранёнными формулировками и семантически проверяются ИИ. Журнал XP идемпотентен за счёт уникального ключа (owner, event_key) и транзакций.

Ключевые решения

  • интервальное повторение
  • генерация учебного контента LLM
  • семантическая проверка ответа
  • идемпотентный журнал XP

Особенности

XP защищён от повторного начисления, в том числе при действиях из двух вкладок. Команда честно оговаривает, что продукт не соответствует кейсу. Судя по коммитам, прототип бизнес-задач сделали, а затем откатили в пользу учебной платформы.

Стек

React 19 · TypeScript · Vite · Vinext · Cloudflare Workers · SQLite · D1 · Drizzle · Radix UI · Tailwind

Модели

gpt-6-astra


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-3263a402-ctrl-c.

README

README.md

BLITZ — знания превращаются в навыки

Учебная платформа команды Ctrl + C. Пользователь выбирает любую тему и цель, отвечает на уточняющие вопросы и получает персональную карту обучения. Уроки создаются по мере открытия: теория, наглядные схемы, проверка, карточки и объяснения наставника.

Сайт: https://blitz-learning-tahir.taarvihma-z.chatgpt.site

Быстрый запуск

Нужны Node.js 22.13+, npm и Git. Не требуется облачная база, Cloudflare-аккаунт или Docker: локальная SQLite/D1 создаётся автоматически.

git clone https://github.com/BAITC-Hacks/hack-3263a402-ctrl-c.git
cd hack-3263a402-ctrl-c
npm run install:ci
npm run setup
npm run dev

Открыть http://localhost:5173. setup создаёт .env.local из примера и применяет локальную схему; повторный запуск сохраняет данные. Зарегистрируйте собственный логин и пароль (пароль от 15 символов). Вход через ChatGPT в локальном режиме — явно тестовая учётная запись [email protected]; используйте регистрацию для проверки разных пользователей.

Для генерации заполните .env.local и перезапустите сервер:

OPENAI_API_KEY=ваш_ключ
OPENAI_MODEL=gpt-6-astra

Нужны API-кредиты и доступ к указанной модели; можно задать другую совместимую с Responses API модель. Без ключа работают интерфейс, аккаунты и сохранённые материалы; новые курсы и карточки не генерируются. Ключ используется только сервером. .env.local, пароли, локальная база, сессии и пользовательские ответы не входят в репозиторий. Генерация отправляет введённые учебные данные в OpenAI.

Реализованные функции

  • Личный кабинет с логином/паролем либо входом через ChatGPT; данные разделены по владельцу.
  • Пустая библиотека для нового пользователя; блицы плитками с процентом освоения.
  • Три уточняющих вопроса с готовыми вариантами и собственным ответом.
  • Гибкая карта: 1–12 тематических этапов, до 10 тем на этап, до 60 тем всего. Число определяется целью, а не шаблоном 3 × 3. Проекты необязательны.
  • Урок по запросу: связная теория от основ, структурированные визуализации, подробное объяснение выбранного фрагмента.
  • Новые тесты: 10 вопросов с одним правильным ответом; разбор выбранного варианта, ссылки на разделы теории. Сохранённые старые уроки совместимы.
  • Самостоятельный ответ, работа над ошибками, отдельное закрепление. Навык подтверждается правильными основными ответами и устранением ошибок, а не открытием страницы.
  • Карточки: 12–20 вопросов по теории, ответ по памяти, семантическая проверка пересказа, просмотр объяснения, повторение через 3/7/14/30/60/90 дней. После ошибки или просмотра ответа — через сутки. Дополнительная тренировка до срока не приносит XP.
  • Серверный журнал опыта, 30 рангов и отдельные уровни по направлениям. Повтор обычного действия не выдаёт награду снова; общий XP растёт и после уровня 30.
  • «Мой прогресс»: плитки блицев, темы раскрываются внутри; ранги, навыки и последние награды. Профиль показывает текущий ранг и шкалу.
  • Проекты с критериями, сохранением работы и обратной связью ИИ. Пользовательский код не исполняется.

Опыт и прогресс

ДействиеXP
Завершить теорию кнопкой перехода к практике20
Верный самостоятельный ответ30
Верный ответ теста с первой попытки / после ошибки10 / 5
Ответить на все вопросы теста30
Первые ответы: 80–99% / 100%дополнительно 30 / 50
Вспомнить карточку впервые / повторить по расписанию3 / 5
Исправить первоначальную ошибку отдельным закреплением10
Подтвердить все навыки этапа100
Малый / крупный проект150–300 / 300–600

Бонусы 80% и 100% не складываются. Качество теста для бонуса фиксируется по первым ответам. Размер проектной награды определяется сложностью заранее и показан в задании. Намеренная ошибка после первого правильного ответа не даёт награды за исправление. Уникальность (owner,event_key) и транзакционная запись защищают от повторного получения XP, в том числе из двух вкладок.

Пороги рангов и титулы: lib/experience.ts. Процент: (XP − начало уровня) / (следующий порог − начало уровня). Например, 9884 XP → уровень 17, 68%, следующий порог 10300. Уровни показывают учебный опыт, а не независимую сертификацию знаний. Подтверждённые навыки отображаются отдельно.

Проверка для жюри

npm run typecheck
npm test
npm run build

Короткий сценарий:

  1. Зарегистрировать пользователя A. Убедиться, что «Мои блицы» пусты.
  2. Создать блиц, например «Публичные выступления: объяснять идеи коллегам». Ответить на вопросы о начальном опыте, результате и времени.
  3. Открыть карту, затем первый урок. Посмотреть теорию, визуализацию и запросить подробное объяснение фрагмента.
  4. Завершить теорию и пройти несколько вопросов. Ошибиться, открыть объяснение и закрепление; проверить изменение прогресса и XP.
  5. Во вкладке «Карточки» создать набор, ответить по памяти. Повторить ту же карточку: дополнительный XP до срока не начисляется.
  6. Открыть профиль и «Мой прогресс». Обновить страницу: данные сохраняются. Войти пользователем B: данные A недоступны.

Генерация обращается к реальному API и может занять несколько минут; она не является локальной заглушкой. Для пятиминутного показа подготовьте один урок в своём демонстрационном аккаунте заранее. Сохранённые курсы не подменяют персональную генерацию для нового пользователя.

HTTP-проверки без платных AI-вызовов: python3 tests/accounts.py (при запущенном dev-сервере); tests/smoke.py предназначен для старой тестовой Python-учётной записи и создаёт локальные тестовые данные. Для UI/серверного тестирования используйте отдельную локальную базу, не production.

Технологии и архитектура

React 19, TypeScript, Vinext/Vite, Cloudflare Workers, SQLite/D1, Drizzle, Radix UI, Tailwind, OpenAI Responses API.

  • app/blitz-app.tsx, components/blitz/ — интерфейс, библиотека, урок, карточки, прогресс и профиль.
  • app/api/learn/route.ts — учебные операции, проверка владельца и валидация входных данных.
  • app/api/auth/route.ts, lib/identity.ts — аккаунты, хеши паролей и серверные сессии.
  • lib/theory-prompt.ts, lib/assessment-prompt.ts, lib/cards-prompt.ts — промпты автора теории, тестов и карточек.
  • lib/course.ts, lib/assessment.ts, lib/cards.ts — проверка структуры генерации и отделение ответов от публичных заданий.
  • lib/experience.ts, lib/experience-store.ts — правила XP и идемпотентный журнал наград.
  • lib/card-service.ts — карточки и расписание повторений с защитой от одновременных обновлений.
  • db/schema.ts, drizzle/ — схема и миграции. Схема изменяется миграциями, не при пользовательском запросе.

Локальные данные: .wrangler/state/. Публикация: Sites, манифест .openai/hosting.json. Облачные секреты задаются отдельно. npm run setup — только локальный bootstrap текущих добавляющих миграций; production получает исходные миграции через Sites. После будущих изменений с ALTER/переносом данных bootstrap специально останавливается, чтобы не применить их повторно.

Ограничения и внешние зависимости

До 20 блицев и 60 AI-запросов в сутки на владельца. Создание урока использует несколько запросов. Доступность и стоимость зависят от OpenAI. Нет восстановления забытого пароля, отправки писем, внешнего поиска источников или безопасной среды исполнения кода. ИИ может ошибаться в фактах и оценках; проектная проверка — учебная обратная связь. Короткие самостоятельные ответы проверяются по сохранённым допустимым формулировкам; карточки дополнительно допускают семантическую проверку ИИ. Прогресс ранее сохранённых курсов не сбрасывается, структура старого маршрута автоматически не перестраивается.

Подготовка к сдаче

Ориентир для документации — чат «Исследование проверки работ»: воспроизводимый запуск, описание реализованных функций, архитектуры, данных, ограничений и повторяемая демонстрация. Ссылка на личный чат может быть недоступна другим участникам; все необходимые инструкции приведены здесь.

Это учебная платформа BLITZ. Исследованная в том чате шкала конкретного бизнес-кейса про каталог задач и выбор студенческих команд не является шкалой учебного XP и не заявляется выполненной этим проектом. Соответствие выбранному треку следует проверять отдельно. Загрузка кода в GitHub не нажимает «Сдать решение» на платформе хакатона — этот шаг команда выполняет отдельно.

Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
5
Авторы
1
Файлы
163
Ветки
1

Авторы коммитов

taarvihmaz 5

История коммитов

  • 2026-09-23 17:58Add public blitz sharing, learner profiles, onboarding and free lesson navigationtaarvihmaz
  • 2026-09-23 17:30Update BLITZ: personal learning maps, accounts, recall cards and persistent XPtaarvihmaz
  • 2026-09-23 15:54Restore educational track with light learning homepagetaarvihmaz
  • 2026-09-23 15:48Add light business task prototype and separate learning sectiontaarvihmaz
  • 2026-09-23 15:36Add BLITZ educational platform with light UI, lessons and gamificationtaarvihmaz
Структура репозитория (163 файлов)
.env.example
.gitignore
.npmrc
.openai/hosting.json
PROJECT_CONTEXT.md
README.md
TRANSFER.md
app/api/auth/route.ts
app/api/community/route.ts
app/api/learn/route.ts
app/blitz-app.tsx
app/blitz/[id]/page.tsx
app/chatgpt-auth.ts
app/globals.css
app/layout.tsx
app/learn/page.tsx
app/page.tsx
app/profile/[id]/page.tsx
cloudflare-env.d.ts
components.json
components/blitz/account.tsx
components/blitz/cards-panel.tsx
components/blitz/clarification-field.tsx
components/blitz/community.tsx
components/blitz/experience.tsx
components/blitz/generation-wait.tsx
components/blitz/lesson-theory.tsx
components/blitz/library.tsx
components/blitz/onboarding.tsx
components/blitz/subject-visual.tsx
components/blitz/theory-markdown.tsx
components/blitz/topic-suggestions.tsx
components/ui/accordion.tsx
components/ui/alert-dialog.tsx
components/ui/alert.tsx
components/ui/aspect-ratio.tsx
components/ui/attachment.tsx
components/ui/avatar.tsx
components/ui/badge.tsx
components/ui/breadcrumb.tsx
components/ui/bubble.tsx
components/ui/button-group.tsx
components/ui/button.tsx
components/ui/calendar.tsx
components/ui/card.tsx
components/ui/carousel.tsx
components/ui/chart.tsx
components/ui/checkbox.tsx
components/ui/collapsible.tsx
components/ui/combobox.tsx
components/ui/command.tsx
components/ui/context-menu.tsx
components/ui/dialog.tsx
components/ui/direction.tsx
components/ui/drawer.tsx
components/ui/dropdown-menu.tsx
components/ui/empty.tsx
components/ui/field.tsx
components/ui/form.tsx
components/ui/hover-card.tsx
components/ui/input-group.tsx
components/ui/input-otp.tsx
components/ui/input.tsx
components/ui/item.tsx
components/ui/kbd.tsx
components/ui/label.tsx
components/ui/marker.tsx
components/ui/menubar.tsx
components/ui/message-scroller.tsx
components/ui/message.tsx
components/ui/native-select.tsx
components/ui/navigation-menu.tsx
components/ui/pagination.tsx
components/ui/popover.tsx
components/ui/progress.tsx
components/ui/radio-group.tsx
components/ui/resizable.tsx
components/ui/scroll-area.tsx
components/ui/select.tsx
components/ui/separator.tsx
components/ui/sheet.tsx
components/ui/sidebar.tsx
components/ui/skeleton.tsx
components/ui/slider.tsx
components/ui/sonner.tsx
components/ui/spinner.tsx
components/ui/switch.tsx
components/ui/table.tsx
components/ui/tabs.tsx
components/ui/textarea.tsx
components/ui/toggle-group.tsx
components/ui/toggle.tsx
components/ui/tooltip.tsx
data/python.json
db/index.ts
db/schema.ts
drizzle.config.ts
drizzle/0000_lethal_masked_marvel.sql
drizzle/0001_freezing_imperial_guard.sql
drizzle/0002_omniscient_grey_gargoyle.sql
drizzle/0003_confused_felicia_hardy.sql
drizzle/meta/0000_snapshot.json
drizzle/meta/0001_snapshot.json
drizzle/meta/0002_snapshot.json
drizzle/meta/0003_snapshot.json
drizzle/meta/_journal.json
eslint.config.mjs
examples/d1/app/api/notes/route.ts
examples/d1/db/schema.ts
hooks/use-mobile.ts
lib/assessment-prompt.ts
lib/assessment.ts
lib/card-service.ts
lib/cards-prompt.ts
lib/cards.ts
lib/check-answer.ts
lib/community-snapshot.ts
lib/community-types.ts
lib/course.ts
lib/database.ts
lib/experience-store.ts
lib/experience.ts
lib/identity.ts
lib/lesson-visuals.ts
lib/openai.ts
lib/password.ts
lib/request-security.ts
lib/server.ts
lib/teaching.ts
lib/theory-format.ts
lib/theory-input.ts
lib/theory-prompt.ts
lib/theory-sections.ts
lib/types.ts
lib/utils.ts
next.config.ts
package-lock.json
package.json
postcss.config.mjs
public/favicon.svg
public/file.svg
public/globe.svg
public/window.svg
scripts/build-verified.sh
scripts/execution-profile.mjs
scripts/install-ci.mjs
scripts/install-ci.sh
scripts/install-pnpm.sh
scripts/pnpm-install.mjs
scripts/run-framework.mjs
scripts/setup-local.mjs
scripts/sites-env.mjs
scripts/sites-env.sh
scripts/test.mjs
tests/accounts.py
tests/assessment.tsx
tests/experience.tsx
tests/openai.test.mjs
tests/smoke.py
tests/textbook.tsx
tests/theory-v3.tsx
tsconfig.json
vite.config.ts

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.