NAME
curl-quests — Hands-on practice for curl
SYNOPSIS
sudo apt install jqINFO
DESCRIPTION
Hands-on practice for curl
README
Curl Quests
⭐ If these quests helped you learn curl and HTTP, please consider starring the repo.
An interactive terminal game for learning curl and HTTP APIs through hands-on quests. Each quest spins up a real local server, gives you instructions, and verifies your work directly against the database no guessing, just doing.
Requirements
- Rust & Cargo: install via rustup (includes both)
- curl: usually pre-installed on macOS/Linux
- jq: required for Quest 11 onwards
Check your versions:
rustc --version
cargo --version
curl --version
jq --version
Get started (two ways)
Option A: Install via Cargo (recommended)
cargo install curl-quests
curl-quests
Option B: Clone and build manually
git clone https://github.com/lite-quests/curl-quests.git
cd curl-quests
cargo build
cargo run
Navigating the app
When you launch curl-quests you'll see a terminal UI with a quest grid and a top navigation bar.
| Key | Action |
|---|---|
← / → | Move between tabs (Levels / Instructions / Exit) |
Enter | Open selected tab or quest |
Esc | Go back / dismiss |
q | Quit |
Inside a quest:
| Key | Action |
|---|---|
Tab / Shift+Tab | Switch focus between sections |
↑ / ↓ | Scroll instructions or navigate command history |
Shift+↑ / Shift+↓ | Scroll terminal output |
← / → | Resize the left/right columns |
Enter | Run the typed curl command |
Ctrl+V | Paste from clipboard |
Ctrl+C | Copy last command output |
Focus moves through: Instructions → Solutions → Terminal → Answer → Submit → Back
Quests
| # | Quest | Folder |
|---|---|---|
| 1 | Day 1: Inventory Check | quests/01-Get |
| 2 | Day 2: Adding Items | quests/02-Post |
| 3 | Day 3: Maintain and Update | quests/03-Put-Patch-Delete |
| 4 | The Elemental Search | quests/04-Query & Encoding |
| 5 | Payslip Uploader | quests/05-File-Upload |
| 6 | Strict API Contracts | quests/06-Headers |
| 7 | The Manager's Secret | quests/07-Header-Inspection |
| 8 | The Galactic Relay | quests/08-Status-Codes |
| 9 | The Digital Detour | quests/09-Redirects |
| 10 | Identity & Access | quests/10-Auth-JWT |
| 11 | JSON Querying with jq | quests/11-JQ |
How to solve a quest
- Launch the app and press
Enteron Levels - Select a quest and press
Enterto open it - Read the Instructions panel on the left
- Use the Terminal panel on the right to run
curlcommands against the local server - If the quest asks for an answer, type it in the Answer box
- Tab to Submit and press
Enterto verify the app checks your work against the database - If it fails, read the error and try again. The server stays running until you go back.
Start from Quest 1 and work your way up each quest builds on concepts from the previous ones.
Tips
- Maximize your terminal: For the best experience, run your terminal in full screen. This ensures all quest content, animations, and the dual-column layout are displayed correctly without clipping.
- The server is already running when you open a quest you don't need to start anything manually.
- Read the instructions fully before running any command. The quest often tells you the exact endpoint and method to use.
- If a command produces no output, the server may still be starting. Wait a second and try again.
- Disable AI assistance while solving you'll learn far more by reading the error, checking the curl man page, and trying again.
Troubleshooting
curl-quests: command not foundaftercargo installmake sure~/.cargo/binis in yourPATH:export PATH="$HOME/.cargo/bin:$PATH"Add that line to your
~/.bashrcor~/.zshrcto make it permanent.(no output — is the server running?)in the terminal the server needs a moment to bind the port. PressEnteragain to rerun the command.Quest stuck / server not responding press
Escto go back to the quest grid, then re-enter the quest. This restarts the server and reseeds the database.jq: command not foundinstall jq before attempting Quest 11+:- macOS:
brew install jq - Ubuntu/Debian:
sudo apt install jq
- macOS:
Contact
For any issues, contact either: