Интерактивный веб-тренажер для изучения SQL с использованием SQLite WebAssembly. Решайте задачи по SQL прямо в браузере с автоматической проверкой результатов.
- ✅ Интерактивные SQL задачи - структурированная система обучения с автоматической проверкой
- ✅ SQLite в браузере - полнофункциональная база данных без установки дополнительного ПО
- ✅ Автоматическая проверка - мгновенная валидация ваших SQL запросов
- ✅ Современный интерфейс - удобный редактор с подсветкой и горячими клавишами
- ✅ Система подсказок - получайте помощь когда застряли
- ✅ Прогрессивные задачи - от простых SELECT до сложных JOIN и агрегации
- ✅ Полное тестирование - автоматические тесты Puppeteer гарантируют стабильность
# Клонируйте репозиторий
git clone https://github.com/MyLittleCrab/SQLite-trainer.git
cd SQLite-trainer
# Установите зависимости
npm install
# Запустите сервер
npm startОткройте http://localhost:8000 в браузере.
- Загрузите страницу - дождитесь инициализации SQLite WebAssembly
- Изучите задачу - прочитайте описание и требования
- Анализируйте схему - посмотрите на структуру таблиц в разделе "Схема базы данных"
- Пишите SQL - введите ваш запрос в редакторе
- Проверяйте результат - нажмите "Выполнить запрос" или
Ctrl+Enter - Получайте обратную связь - система покажет правильно ли решена задача
Ctrl+Enter/Cmd+Enter- выполнить SQL запрос- Кнопка "Следующая задача" - переход к случайной задаче
- Фильтрация данных с WHERE
- Сортировка с ORDER BY
- Ограничение результатов с LIMIT
- INNER JOIN, LEFT JOIN
- Связывание связанных данных
- Работа с внешними ключами
- GROUP BY и HAVING
- Агрегатные функции (COUNT, SUM, AVG)
- Анализ данных
- Подзапросы (субзапросы)
- Оконные функции
- Сложная аналитика
Проект включает полную систему автоматического тестирования:
# Все тесты (запускает сервер и Puppeteer тесты)
npm test
# Только Puppeteer тесты (сервер должен быть запущен)
npm run test:run- 12 Puppeteer тестов - полная автоматизация браузера
- Тестирование UI - проверка интерфейса и взаимодействий
- Валидация SQL - проверка корректности выполнения запросов
- Тестирование задач - проверка системы автоматической проверки
Откройте http://localhost:8000/tests/test.html для запуска тестов в браузере.
- Vanilla JavaScript - без фреймворков для максимальной производительности
- Modern CSS - адаптивный дизайн с CSS Grid/Flexbox
- SQLite WebAssembly - библиотека
sql.jsдля работы с SQLite
- JSON конфигурация - все задачи хранятся в JSON файлах
- Модульная структура - легко добавлять новые задачи
- Автоматическая инициализация - каждая задача подготавливает свою БД
- Валидация результатов - точное сравнение с ожидаемыми результатами
SQLite-trainer/
├── src
│ └──app.js # Основная логика приложения
├── index.html # Интерфейс пользователя
├── package.json # NPM зависимости и скрипты
├── sql-tasks/ # Система задач
│ ├── index.json # Индекс всех задач
│ ├── basic_select.json # Задачи по SELECT
│ ├── join_tables.json # Задачи по JOIN
│ └── aggregation.json # Задачи по агрегации
└── tests/ # Автоматические тесты
└── puppeteer-tests.js # Puppeteer тесты
- Создайте JSON файл в папке
sql-tasks/:
{
"id": "my_task",
"title": "Название задачи",
"description": "Описание того, что нужно сделать",
"initScript": [
"CREATE TABLE example (id INTEGER, name TEXT);",
"INSERT INTO example VALUES (1, 'test');"
],
"expectedResult": [
{"id": 1, "name": "test"}
],
"hint": "Подсказка для решения",
"solution": "SELECT * FROM example;"
}- Добавьте в индекс (
sql-tasks/index.json):
{
"id": "my_task",
"title": "Название задачи",
"description": "Краткое описание",
"file": "my_task.json"
}# Запуск с автоперезагрузкой
npm start
# Запуск тестов в режиме разработки
npm testОткройте Developer Tools (F12) для просмотра:
- Логов инициализации SQLite
- Выполняемых SQL запросов
- Результатов проверки задач
- Ошибок выполнения
// В консоли браузера доступны глобальные переменные:
console.log(db); // SQLite Database объект
console.log(currentTask); // Текущая активная задача
console.log(allTasks); // Все загруженные задачи- Система прогресса пользователя
- Сохранение решений в localStorage
- Подсветка синтаксиса SQL
- Автодополнение SQL команд
- Экспорт/импорт прогресса
- Многоязычность интерфейса
- Система достижений
- Социальные функции (рейтинги, сравнения)
- Fork репозитория
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
MIT License - см. файл LICENSE для деталей.
An interactive web-based SQL trainer using SQLite WebAssembly. Practice SQL queries directly in your browser with automatic result validation.
- ✅ Interactive SQL Challenges - Structured learning system with automatic validation
- ✅ Browser-based SQLite - Full-featured database without additional software installation
- ✅ Automatic Validation - Instant feedback on your SQL queries
- ✅ Modern Interface - User-friendly editor with syntax highlighting and keyboard shortcuts
- ✅ Hint System - Get help when you're stuck
- ✅ Progressive Tasks - From simple SELECT to complex JOINs and aggregations
- ✅ Comprehensive Testing - Automated Puppeteer tests ensure stability
# Clone repository
git clone https://github.com/MyLittleCrab/SQLite-trainer.git
cd SQLite-trainer
# Install dependencies
npm install
# Start server
npm startOpen http://localhost:8000 in your browser.
- Load the page - Wait for SQLite WebAssembly initialization
- Study the task - Read the description and requirements
- Analyze schema - Review table structure in "Database Schema" section
- Write SQL - Enter your query in the editor
- Check results - Click "Execute Query" or press
Ctrl+Enter - Get feedback - System shows whether the task is solved correctly
Ctrl+Enter/Cmd+Enter- Execute SQL query- "Next Task" button - Switch to random task
- Data filtering with WHERE
- Sorting with ORDER BY
- Result limiting with LIMIT
- INNER JOIN, LEFT JOIN
- Connecting related data
- Working with foreign keys
- GROUP BY and HAVING
- Aggregate functions (COUNT, SUM, AVG)
- Data analysis
- Subqueries
- Window functions
- Complex analytics
The project includes a comprehensive automated testing system:
# All tests (starts server and runs Puppeteer tests)
npm test
# Puppeteer tests only (server must be running)
npm run test:run- 12 Puppeteer tests - Full browser automation
- UI Testing - Interface and interaction validation
- SQL Validation - Query execution correctness
- Task Testing - Automatic validation system verification
Open http://localhost:8000/tests/test.html to run tests in browser.
- Vanilla JavaScript - Framework-free for maximum performance
- Modern CSS - Responsive design with CSS Grid/Flexbox
- SQLite WebAssembly -
sql.jslibrary for SQLite operations
- JSON Configuration - All tasks stored in JSON files
- Modular Structure - Easy to add new tasks
- Automatic Initialization - Each task prepares its own database
- Result Validation - Precise comparison with expected results
SQLite-trainer/
├── src
│ └──app.js # Main application logic
├── index.html # User interface
├── package.json # NPM dependencies and scripts
├── sql-tasks/ # Task system
│ ├── index.json # Index of all tasks
│ ├── basic_select.json # SELECT tasks
│ ├── join_tables.json # JOIN tasks
│ └── aggregation.json # Aggregation tasks
└── tests/ # Automated tests
└── puppeteer-tests.js # Puppeteer tests
- Create JSON file in
sql-tasks/folder:
{
"id": "my_task",
"title": "Task Title",
"description": "Description of what needs to be done",
"initScript": [
"CREATE TABLE example (id INTEGER, name TEXT);",
"INSERT INTO example VALUES (1, 'test');"
],
"expectedResult": [
{"id": 1, "name": "test"}
],
"hint": "Hint for solving",
"solution": "SELECT * FROM example;"
}- Add to index (
sql-tasks/index.json):
{
"id": "my_task",
"title": "Task Title",
"description": "Brief description",
"file": "my_task.json"
}# Start with auto-reload
npm start
# Run tests in development mode
npm testOpen Developer Tools (F12) to view:
- SQLite initialization logs
- Executed SQL queries
- Task validation results
- Execution errors
// Global variables available in browser console:
console.log(db); // SQLite Database object
console.log(currentTask); // Current active task
console.log(allTasks); // All loaded tasks- User progress tracking system
- Save solutions to localStorage
- SQL syntax highlighting
- SQL command auto-completion
- Progress export/import
- Interface internationalization
- Achievement system
- Social features (ratings, comparisons)
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
MIT License - see LICENSE file for details.