An open API service indexing awesome lists of open source software.

https://github.com/tsembp/sql-gym


https://github.com/tsembp/sql-gym

fastapi react sqlalchemy tailwindcss typescript

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

          

# ๐Ÿ‹๏ธ SQLGym

**SQLGym** is an interactive SQL challenge platform designed to help users practice SQL using realistic, fintech-style datasets โ€” all in a clean local-first setup.

Built with a Python + FastAPI backend and a React + Tailwind frontend, SQLGym evaluates SQL queries safely and gives instant feedback using mock financial data (users, transactions, refunds, subscriptions).

## โœจ Features

- ๐Ÿง  15 realistic SQL challenges (from `BASIC` to `HARD`)
- ๐Ÿ” Secure backend with safe SQL evaluation (no DDL/DML)
- ๐Ÿงพ Realistic mock financial datasets generated with `Faker`
- ๐Ÿ’ก Frontend with challenge prompts, schema previews, and Monaco-based SQL editor
- โœ… Query correctness feedback with result previews
- โšก Local SQLite support for rapid development

// ...existing code...

## ๐Ÿ“ธ Preview

| Home Page | Filtered View |
|-----------------------------------------------|------------------------------------------------|
| ![Home](./screenshots/home-page.png) | ![Challenge](./screenshots/home-page-filtered.png) |

| Challenge Page | Correct Solution |
|-----------------------------------------------|------------------------------------------------|
| ![Correct](./screenshots/challenge-preview.png) | ![Incorrect](./screenshots/challenge-preview-correct.png) |

| Incorrect Solution | SQL Injection Protection |
|-----------------------------------------------|------------------------------------------------|
| ![SQLi](./screenshots/challenge-preview-incorrect.png) | ![Filtered](./screenshots/challenge-preview-sqli.png) |

## ๐Ÿš€ Getting Started

### 1. Clone and setup environment

```bash
git clone https://github.com/tsembp/SQL-Gym.git
cd SQL-Gym
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
````

### 2. Generate mock DB

```bash
python backend/db/db_seeder.py
```

### 3. Start backend

```bash
cd backend
uvicorn main:app --reload
```

### 4. Setup frontend

```bash
cd frontend/tailwindcss4
npm install
npm run dev
```

## ๐Ÿ—‚๏ธ Project Structure

```
sqlgym/
โ”œโ”€โ”€ backend/
โ”‚ โ”œโ”€โ”€ main.py # FastAPI app
โ”‚ โ”œโ”€โ”€ challenge_definitions # Challenges JSON
โ”‚ โ”œโ”€โ”€ db/
โ”‚ โ”‚ โ”œโ”€โ”€ db_seeder.py # SQLite + Faker mock data
โ”‚ โ”‚ โ”œโ”€โ”€ models.py # SQLAlchemy models
| | โ””โ”€โ”€ sqlgym.db # Generated DB (gitignored)
โ”œโ”€โ”€ frontend/
โ”‚ โ””โ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ pages/
โ”‚ โ”œโ”€โ”€ api/
| ...
```

## ๐Ÿ› ๏ธ Tech Stack

* **Backend**: Python, FastAPI, SQLAlchemy, SQLite
* **Frontend**: React, TypeScript, Tailwind CSS, Vite
* **Editor**: Monaco Editor
* **Data**: Faker, Pandas

## ๐Ÿ“ˆ Future Ideas

* ๐Ÿค– GPT-powered SQL hints
* ๐Ÿ’ฌ AI assistant for each challenge
* ๐Ÿ“Š Leaderboard or progress tracking

## ๐Ÿ“„ License

MIT License ยฉ 2025 \[Panagiotis Tsembekis]