Автор: Дуплей Максим Игоревич
Интеллектуальная собственность: Дуплей Максим Игоревич
![]() Главная страница |
![]() Режим заданий |
![]() Горячие клавиши |
![]() Свободный режим |
![]() Темы и шаблоны |
![]() Экспорт / Импорт |
SQL Trainer — это комплексная веб-платформа для интерактивного изучения SQL и работы с базами данных. Проект разработан как полноценное образовательное приложение, объединяющее обучающие задания с автоматической проверкой, свободный режим для произвольных запросов, систему прогресса с геймификацией, аутентификацию пользователей и поддержку нескольких СУБД (SQLite и PostgreSQL). Платформа предназначена для студентов, разработчиков и всех, кто хочет освоить SQL через практические упражнения.
- Обучающие задания — практические задачи по SQL с автоматической проверкой результатов
- Свободный режим — пишите любые запросы и исследуйте структуру базы данных
- SQL-редактор — подсветка синтаксиса, автодополнение, поддержка горячих клавиш на базе CodeMirror 6
- Поддержка SQLite и PostgreSQL — работа с разными СУБД, переключение между источниками данных
- История запросов — сохранение и быстрый доступ к предыдущим запросам
- Экспорт/Импорт — выгрузка результатов в CSV, JSON и других форматах
- Система прогресса — отслеживание серии занятий (streak), статистика и аналитика
- Рекомендации — персонализированные предложения заданий для улучшения навыков
- Темы оформления — светлая, темная и другие темы с автоматическим определением
- Аутентификация — регистрация, вход, восстановление пароля, профиль пользователя
- Таблица лидеров — соревнование с другими пользователями по прогрессу
- Система достижений — бейджи за различные достижения в обучении
- Справка по SQL — встроенный справочник по операторам и функциям SQL
- Визуализация схем — просмотр структуры таблиц и связей между ними
- Графики результатов — визуализация результатов запросов через Recharts
- PWA поддержка — установка на устройство, офлайн-режим, сервис-воркер
| # | Тема | Категория | Описание |
|---|---|---|---|
| 1 | SELECT | Основы | Базовый выбор данных из таблиц, фильтрация с WHERE |
| 2 | WHERE | Основы | Условия фильтрации: сравнение, BETWEEN, IN, LIKE |
| 3 | ORDER BY | Основы | Сортировка результатов по одному или нескольким столбцам |
| 4 | LIMIT / OFFSET | Основы | Ограничение количества возвращаемых строк, постраничная навигация |
| 5 | JOIN (INNER) | Соединения | Внутреннее соединение таблиц по ключу |
| 6 | LEFT JOIN | Соединения | Левое внешнее соединение с сохранением всех строк левой таблицы |
| 7 | RIGHT JOIN | Соединения | Правое внешнее соединение с сохранением всех строк правой таблицы |
| 8 | FULL JOIN | Соединения | Полное внешнее соединение с сохранением всех строк обеих таблиц |
| 9 | CROSS JOIN | Соединения | Декартово произведение строк двух таблиц |
| 10 | GROUP BY | Агрегация | Группировка строк с агрегатными функциями: COUNT, SUM, AVG, MIN, MAX |
| 11 | HAVING | Агрегация | Фильтрация групп после агрегации |
| 12 | UNION | Множества | Объединение результатов двух запросов с удалением дубликатов |
| 13 | INTERSECT | Множества | Пересечение результатов двух запросов |
| 14 | EXISTS | Подзапросы | Проверка существования строк в подзапросе |
| 15 | Подзапросы | Подзапросы | Вложенные SELECT в WHERE, FROM, SELECT |
| 16 | DML (INSERT/UPDATE/DELETE) | Модификация | Вставка, обновление и удаление данных |
| 17 | CREATE TABLE | DDL | Создание таблиц с определением столбцов и типов |
| 18 | ALTER TABLE | DDL | Изменение структуры существующих таблиц |
| 19 | VIEW | Объекты БД | Создание представлений для упрощения запросов |
| 20 | INDEX | Объекты БД | Создание индексов для ускорения поиска |
Платформа использует геймифицированную систему прогрессии. За выполнение заданий и взаимодействие с платформой начисляются очки опыта (XP), которые определяют уровень пользователя и открывают новые достижения.
| Действие | XP |
|---|---|
| Выполнение задания (правильно) | +20 XP |
| Выполнение задания (неправильно) | +5 XP |
| Свободный режим (запрос) | +10 XP |
| Изучение справки | +5 XP |
| Просмотр схемы таблицы | +5 XP |
| Серия занятий (streak бонус) | +10 XP/день |
Уровни:
| Уровень | Название | Необходимый XP |
|---|---|---|
| 1 | Новичок | 0 |
| 2 | Ученик | 500 |
| 3–4 | Практик | 1 100+ |
| 5–6 | Аналитик | 2 800+ |
| 7–9 | Разработчик | 6 400+ |
| 10–14 | Инженер БД | 15 000+ |
| 15–19 | Архитектор БД | 40 000+ |
| 20+ | Мастер SQL | 100 000+ |
| Технология | Версия | Назначение |
|---|---|---|
| Next.js | 16 | React-фреймворк с App Router, SSR и оптимизацией |
| TypeScript | 5 | Статическая типизация для надёжности кода |
| Tailwind CSS | 4 | Утилитарные CSS-стили для быстрой разработки UI |
| shadcn/ui | — | Компоненты интерфейса в стиле New York |
| CodeMirror 6 | — | SQL-редактор с подсветкой синтаксиса и автодополнением |
| Recharts | 2 | Интерактивные графики и диаграммы для визуализации данных |
| Zustand | 5 | Лёгкое управление состоянием |
| Better SQLite3 | 12 | Встроенная база данных SQLite для тренировочных данных |
| PostgreSQL | 16 | Поддержка внешней базы данных PostgreSQL |
| NextAuth.js | 5 | Аутентификация и управление сессиями |
| Framer Motion | 12 | Плавные анимации и переходы |
| React Hook Form | 7 | Валидация и управление формами |
| Zod | 4 | Валидация данных на TypeScript |
- Node.js версии 18 или выше (рекомендуется 20+)
- npm, yarn, pnpm или bun в качестве пакетного менеджера
# Клонировать репозиторий
git clone https://github.com/dupleymi-aup/sql-trainer.git
cd sql-trainer
# Установить зависимости
npm install
# Запустить в режиме разработки
npm run devПриложение будет доступно по адресу http://localhost:3000
# Сборка проекта
npm run build
# Запуск собранного приложения
npm startsql-trainer/
├── public/ # Статические файлы
│ └── logo.svg # SVG-логотип проекта
├── img/ # Скриншоты интерфейса
├── src/
│ ├── app/
│ │ ├── layout.tsx # Корневой layout с ThemeProvider и AuthProvider
│ │ ├── globals.css # Глобальные стили и CSS-переменные
│ │ ├── (auth)/ # Страницы аутентификации
│ │ │ ├── login/page.tsx # Страница входа
│ │ │ ├── register/page.tsx # Страница регистрации
│ │ │ └── reset-password/page.tsx # Восстановление пароля
│ │ ├── (main)/ # Основные страницы
│ │ │ └── profile/page.tsx # Профиль пользователя
│ │ └── api/ # API маршруты
│ │ ├── auth/ # Аутентификация (NextAuth)
│ │ ├── sql/ # SQL-запросы и проверка
│ │ └── user/ # Прогресс, достижения, лидерборд
│ ├── components/
│ │ ├── sql-editor.tsx # SQL-редактор на CodeMirror 6
│ │ ├── results-table.tsx # Таблица результатов запросов
│ │ ├── query-result-chart.tsx # Визуализация результатов
│ │ ├── task-panel.tsx # Панель заданий
│ │ ├── query-history.tsx # История запросов
│ │ ├── db-selector.tsx # Переключатель баз данных
│ │ ├── schema-viewer.tsx # Просмотр схемы БД
│ │ ├── sql-reference.tsx # Справка по SQL
│ │ ├── sql-templates.tsx # Шаблоны SQL-запросов
│ │ ├── sidebar.tsx # Боковая панель
│ │ ├── welcome-panel.tsx # Приветственная панель
│ │ ├── shortcuts-help.tsx # Справка по горячим клавишам
│ │ ├── export-import-dialog.tsx # Экспорт/Импорт данных
│ │ ├── practice-mode-dialog.tsx # Свободный режим
│ │ ├── auth/ # Компоненты аутентификации
│ │ ├── profile/ # Компоненты профиля
│ │ └── ui/ # shadcn/ui компоненты (60+ компонентов)
│ ├── lib/
│ │ ├── auth.ts # Конфигурация NextAuth
│ │ ├── auth-internal.ts # Внутренние утилиты аутентификации
│ │ ├── db-users.ts # Работа с пользователями в БД
│ │ ├── sql-engine.ts # SQL-движок для проверки запросов
│ │ ├── training-tasks.ts # Генерация обучающих заданий
│ │ ├── postgresql-adapter.ts # Адаптер PostgreSQL
│ │ ├── store.ts # Zustand-хранилище состояния
│ │ └── utils.ts # Утилиты (cn, форматирование)
│ ├── hooks/
│ │ ├── use-mobile.ts # Хук для определения мобильных устройств
│ │ └── use-toast.ts # Хук для уведомлений
│ └── types/
│ └── next-auth.d.ts # Типы NextAuth
├── package.json # Зависимости и скрипты
├── next.config.ts # Конфигурация Next.js
├── tsconfig.json # Конфигурация TypeScript
├── tailwind.config.ts # Конфигурация Tailwind CSS
├── README.md # Документация проекта (основная, русский)
├── README_RU.md # Полная русская версия
├── README_EN.md # Полная английская версия
├── LICENSE # Лицензия (двуязычная)
└── .gitignore # Исключения Git
- SQL-редактор с подсветкой синтаксиса и автодополнением
- Обучающие задания с автоматической проверкой
- Свободный режим для произвольных запросов
- Поддержка SQLite и PostgreSQL
- История запросов с сохранением
- Экспорт/Импорт результатов (CSV, JSON)
- Система прогресса с серией занятий (streak)
- Рекомендации заданий
- Аутентификация пользователей
- Профиль с достижениями и статистикой
- Таблица лидеров
- Темы оформления (светлая/тёмная)
- Справка по SQL-операторам
- Визуализация результатов (графики)
- Мультиязычность (полная поддержка EN/RU)
- PWA-манифест для офлайн-работы
- Дополнительные обучающие модули
- Интеграция с внешними LMS
- Push-уведомления для достижений
- Экспорт прогресса в облачные хранилища
Дуплей Максим Игоревич
Данный проект является интеллектуальной собственностью Дуплей Максима Игоревича. Все права на программный код, дизайн, контент и учебные материалы принадлежат автору.
Данный проект является интеллектуальной собственностью Дуплей Максима Игоревича. Условия использования описаны в файле LICENSE.
SQL Trainer — © 2025 Дуплей Максим Игоревич





