Платформа когнитивных тестов на SvelteKit. Аутентификация - better-auth, БД - PostgreSQL через Drizzle ORM, локально поднимается в Docker.
git cloneЕсли ещё нет - поставьте с https://www.docker.com/products/docker-desktop и запустите.
Проверить:
docker --version
docker compose version
.env в корне проектаФайла нет в репозитории.
docker compose up -d
npx drizzle-kit generate
Если нужна миграция:
npx drizzle-kit migrate
Проверить таблицы:
Должно быть 6 таблиц: user, session, account, verification, test_attempt, test_answer.
npm run dev
Откройте http://localhost:5173. Регистрация / вход - на /demo/better-auth/login.
# Веб-интерфейс для БД (открывает https://local.drizzle.studio)
npx drizzle-kit studio
src/
├── lib/
│ ├── server/
│ │ ├── auth.ts better-auth конфиг
│ │ ├── db/
│ │ │ ├── index.ts клиент Drizzle
│ │ │ ├── auth.schema.ts схема пользователей (сгенерирована better-auth)
│ │ │ ├── stats.schema.ts схема попыток и ответов
│ │ │ └── schema.ts re-export всего
│ │ └── stats/
│ │ ├── record.ts запись попытки + ответов в транзакции
│ │ └── queries.ts готовые запросы для админ-панели
│ ├── stats/
│ │ └── contracts.ts TypeScript-типы для meta каждого теста
│ └── tests/
│ ├── recordAttempt.ts клиентский хелпер submitAttempt()
│ ├── testRegistry.ts реестр тестов (slug → title + lazy-import)
│ └── *.svelte сами тесты
├── routes/
│ ├── api/attempts/+server.ts POST /api/attempts
│ └── test/[slug]/ рендер теста по slug
├── hooks.server.ts better-auth middleware (наполняет locals.user)
└── app.d.ts типы App.Locals
drizzle/ SQL-миграции
docker-compose.yml локальный Postgres
drizzle.config.ts конфиг Drizzle Kit
Каждый тест в момент завершения вызывает submitAttempt() из $lib/tests/recordAttempt. Формат данных описан в src/lib/stats/contracts.ts. Сервер пишет в test_attempt + test_answer транзакцией.