尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗nmt.in.ua — тренажер підготовки до НМТ з математики. Учень проходить діагностику, тренується за темами і на офіційних варіантах, бачить прогрес і отримує наступний крок. Викладач веде своїх учнів, призначає тести і читає результати. Адмін тримає банк завдань, профілі й денні марафони.
Кабінет учня безкоштовний: реєстрація за хвилину, без картки. Інтерфейс українською, англійською і німецькою, зручний з телефона.
| 20+ | тем сертифікаційної роботи |
| 13 | офіційних варіантів НМТ у симуляторі |
| 1 | підручник зі змістом за темами |
Окремий кабінет після реєстрації з роллю «викладач». Публічна сторінка викладача живе за адресою /t/slug.
/join.Адмін входить тим самим логіном. На головній замість тренажера — редактор банку.
/settings: теми, зв’язки тем, тести і за бажанням задачник. Одна транзакція на весь файл.Свій акаунт з адмінки забанити або видалити не можна.
| Сторінка | Адреса | Хто |
|---|---|---|
| Вітальна | /welcome | усі |
| Діагностика | /diagnostic | усі, без акаунта |
| Реєстрація | /register | гість, учень або викладач |
| Вхід | /login | гість |
| Тест за темою | /topic | учень |
| Симулятор | /simulator | учень |
| Підручник | /materials/textbook | учень |
| Задачник | /problems | учень |
| Результати і сесії | /results, /sessions | учень; викладач бачить клас |
| Мої учні | /students | викладач, адмін |
| Призначити тест | /assign | викладач, адмін |
| Консультації | /consultations | учень пише, викладач читає чергу |
| Візитка | /t/{slug} | усі, якщо опублікована |
| Профілі | /profiles | адмін |
| Імпорт | /settings | адмін |
| Відгуки | /feedback | адмін |
| Марафони | /admin/marathons | адмін |
Новому учаснику команди варто почати з гіда онбордингу. Беклог — docs/Goldener-Rechner-beklog-PM.md. Пам’ятка релізу — .cursor/rules/deploy-hosting.mdc.
Потрібні Node.js 20+ і npm. Працюйте з гілки dev: у main напряму не пушимо, merge в main одразу деплоїть хостинг.
git clone https://github.com/tony-kobs/nmt.in.ua.git
cd nmt.in.ua
git checkout dev
npm install
cp .env.example .env.local
npm run dev
Локально сайт відкриється на http://localhost:3000.
| Команда | Що робить |
|---|---|
npm run dev | локальна розробка |
npm run build | продакшен-збірка |
npm start | зібраний сайт через server.js |
npm test | unit-тести |
npm run lint | ESLint |
npm run migrate | SQL-міграції |
Демо-логінів немає. Тестовий акаунт — через /register. Адміна підвищують у базі: node scripts/promote-admin.mjs <login>.
Секрети живуть у .env.local (локально) або .env.production (хостинг). У git їх немає.
| Змінна | Призначення |
|---|---|
DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME | MySQL |
SESSION_SECRET | cookie nmt_session; без неї логін на проді падає |
NEXT_PUBLIC_SITE_URL | canonical URL |
SITE_URL | origin у листах підтвердження і скидання пароля |
BREVO_API_KEY | листи; без ключа локально текст іде в консоль |
CONTENT_IMPORT_API_KEY | Bearer для POST /api/import |
ADMIN_API_KEY | Bearer для POST /api/admin/sessions |
MAX_BODY_BYTES | ліміт тіла HTTP на server.js (дефолт 8 МіБ) |
TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, TELEGRAM_WEBHOOK_SECRET | бот; без пари токен+username канал Telegram вимкнено |
TELEGRAM_SUPPORT_CHAT_ID | необов’язково, чат команди для звернень; той самий .env.production на хості |
Порожній ключ імпорту або адмін-API відхиляє всі такі запити (401).
Імпорт — одна форма за запит. CSV-поля: themes, themeConnections, quizTasks, опційно problems. JSON: file + format=json.
curl -X POST http://localhost:3000/api/import \
-H "Authorization: Bearer $CONTENT_IMPORT_API_KEY" \
-F "[email protected];type=text/csv" \
-F "themeConnections=@theme_connections.csv;type=text/csv" \
-F "quizTasks=@quiz_tasks.csv;type=text/csv"
Гілка фічі від свіжого dev, pull request у dev. Реліз: pull request dev → main.