Skip to content

dupleymi-aup/sql-trainer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

197 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SQL Trainer

Интерактивная платформа для изучения и практики SQL

Next.js TypeScript Tailwind CSS shadcn/ui CodeMirror Recharts SQLite PostgreSQL License


Автор: Дуплей Максим Игоревич

Интеллектуальная собственность: Дуплей Максим Игоревич

Русский | English


Интерфейс

Главная страница
Главная страница
Задания
Режим заданий
Горячие клавиши
Горячие клавиши
Свободный режим
Свободный режим
Темы оформления
Темы и шаблоны
Экспорт и импорт
Экспорт / Импорт

🇷🇺 Описание на русском языке

О проекте

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 start

Структура проекта

sql-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 Дуплей Максим Игоревич

About

SQL Trainer — это комплексная веб-платформа для интерактивного изучения SQL и работы с базами данных

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages