Skip to content

thierryvm/TerminalLearning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

470 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terminal Learning

Learn the terminal by doing — not just reading.

Live Demo License: MIT CI Status Built with Vite React Tailwind CSS


Terminal Learning — environment switcher & curriculum overview

Terminal Learning — terminal emulator in action

The Problem

The terminal is powerful — but also frustrating to learn. Commands look different on Linux, macOS, and Windows. Most tutorials just show you code to copy-paste, with no feedback when something goes wrong. And switching between operating systems? That means starting over.

Terminal Learning fixes this. It's a free, open-source web platform where you practice real terminal commands in an interactive environment — with exercises, validation, and contextual help adapted to your operating system.

No account required. No setup. Just open it and start learning.

🌐 Try it live →


✨ Key Features

  • 🖥️ Interactive terminal — type real commands, get real feedback (not just theory)
  • 🌍 Multi-environment — learn on Linux, macOS, or Windows — the interface adapts
  • 🔒 Progressive curriculum — 11 modules, 66 lessons, 1000+ unit tests
  • 🤖 AI as a dev tool — dedicated module on using AI professionally (prompts, validation, limits)
  • 💾 Progress saved automatically — locally, or synced to the cloud with a free account
  • 📖 Contextual helphelp <command> returns usage and examples for your environment
  • 🧑‍🏫 Optional AI tutor (BYOK) — contextual help on the current lesson via your own key (OpenRouter / Anthropic / OpenAI / Gemini); keys stored client-side only, never relayed through our servers
  • 🏫 Multi-role classroom — teachers create classes & share invitation codes, students enroll, institution admins approve teachers — Row Level Security enforced at the database
  • 🎓 Designed for everyone — schools, universities, self-taught developers
  • 💸 100% free, forever — no paywall, no ads, no catch

🌍 Environment Switching

Most terminal tutorials assume you're on Linux. Terminal Learning doesn't.

Select your environment and everything adapts — the prompt style, the commands, the exercises, and the hints:

Linux macOS Windows
Prompt user@host:~$ ➜ ~ PS C:\Users\user>
Shell bash zsh (Oh My Zsh style) PowerShell
Example ls, chmod, apt ls, chmod, brew dir, Set-ExecutionPolicy, winget

This makes learning more realistic and less confusing — you practice the exact commands you'll actually use.

WSL (Windows Subsystem for Linux) support is planned.


🛠 Tech Stack

Layer Technology Version
Bundler Vite 6.x
UI Framework React 18.x
Routing React Router 7.x
Styling Tailwind CSS 4.x
Components shadcn/ui (Radix UI) latest
Animations CSS keyframes + IntersectionObserver
Auth & Database Supabase (PostgreSQL + RLS) 2.x
Error Tracking Sentry (free tier) 8.x
Tests Vitest + Playwright
Deployment Vercel (free tier)

📁 Architecture

Full architecture, data flow diagrams, and database schema are documented in docs/ARCHITECTURE.md.


🔒 Security

Security is built in from day one — multi-agent audit (17 May 2026) :

  • security-auditor (app-layer OWASP) : 8.8/10
  • llm-security-auditor (AI Tutor BYOK) : 9.4/10
  • lti-auditor (LTI 1.3 crypto chain) : 9.5/10

0 active HIGH on any audit surface.

  • Strict CSP — no unsafe-eval, no unsafe-inline, SHA-256 hash for critical CSS, no third-party vercel.live in prod
  • Auth — Supabase Auth with PKCE flow, JWT rotation, built-in rate limiting
  • Database — Row Level Security on all tables, anon key only client-side
  • API — sliding-window rate limiter (50 req/min per IP, non-spoofable x-vercel-forwarded-for) on /api/sentry-tunnel and /api/lti/launch
  • LTI endpoint — gated behind LTI_ENABLED env flag (returns 503 by default until Phase 7c RS256 JWK validation lands)
  • Sentry tunnel — server-side scrubber redacts API keys / JWTs / PII from envelopes before forwarding (covers event, transaction, profile, check_in types)
  • GDPR — cookieless analytics, privacy page at /privacy, no PII in logs
  • CInpm audit + GitHub Dependabot on every push
  • Specialized auditing agentssecurity-auditor (app-layer), route-attack-auditor (HTTP-level), vercel-firewall-auditor (WAF), prompt-guardrail-auditor (LLM)

Full security policy and vulnerability reporting: SECURITY.md. Internal audit log: docs/security-audit-log.md.


🗺 Roadmap

Phase Status Description
Phase 0 ✅ Done Initial deployment on Vercel
Phase 1 ✅ Done Landing page, routing, SEO/OpenGraph, GDPR
Phase 2 ✅ Done Vercel Analytics + Sentry error monitoring + source maps
Phase 3 ✅ Done Supabase Auth + user progress sync
Phase 4 ✅ Done Curriculum v2 + multi-environment selection + terminal profiles
Phase 5 🔄 In progress Curriculum expansion: 11 modules, 66 lessons, 1000+ unit tests + 176 E2E
Phase 5.5 ✅ Done Terminal Sentinel — automated security & content audit agents
Phase 7 ✅ Done RBAC — student / teacher / institution_admin / super_admin roles
Phase 7b ✅ Done AI Tutor V1 — optional BYOK contextual tutor (OpenRouter / Anthropic / OpenAI / Gemini), client-side keys, live in production
Phase 7c ✅ Done LTI 1.3 launch authentication (JWKS verify, replay protection) — Auth MVP, gated behind a feature flag
B2B classroom ✅ Done Teacher class management + invitation codes, student enrollment, institution-admin teacher approval, in-app support tickets
Reference ✅ Done Unified command reference (/app/reference) — single source of truth, per-OS variants + official documentation links
THI-29 ✅ Done Module 11 — AI as a dev tool (12 lessons, ai-help command)
THI-84 ✅ Done Public changelog (terminallearning.dev/changelog) + project story (terminallearning.dev/story)
Security ✅ Done Post-Phase 7 hardening — CSP, SHA-pinned CI, credential rotation, audit agents
Maintenance 🔄 Ongoing Security audits (OWASP/CSP/RLS), Sentry monitoring, dependency updates
Phase 6 🔮 Planned Terminal multi-session (tabs)
Phase 8 🔮 Planned Member space — profiles, stats, badges
Phase 9 🔮 Planned Admin panel — real-time health, security center, analytics, RBAC
Phase 10 🔮 Planned Automated content — new commands unlocked every 2 weeks

Full details in docs/ROADMAP.md.


⚙️ Getting Started

Prerequisites

  • Node.js 18+
  • npm 9+

Installation

git clone https://github.com/thierryvm/TerminalLearning.git
cd TerminalLearning
npm install
cp .env.example .env.local   # add your VITE_SUPABASE_URL + VITE_SUPABASE_ANON_KEY
npm run dev

Open http://localhost:5173 in your browser.

The app works without Supabase credentials — progress is saved locally. Auth and sync require a Supabase project.

Build

npm run build        # Production build → dist/
npm run test         # Unit tests (Vitest)
npm run test:e2e     # E2E tests (Playwright)

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md, CODE_OF_CONDUCT.md, and docs/CONVENTIONS.md before opening a pull request.

git checkout -b feature/my-feature
# ... make your changes
git commit -m "feat(scope): description"
gh pr create

All PRs must pass CI (type-check → lint → tests → build) before merge.


💜 Support the Project

Terminal Learning is a volunteer project — free now, free forever.

If it helped you or your students, the best way to support it is:

  • Star the repo — helps visibility on GitHub
  • 🐛 Report bugsopen an issue
  • 🤝 Contribute — code, curriculum, translations, feedback

📄 License

MIT License — see LICENSE for details.


Acknowledgments


Made with ♥ in Belgium  ·  Live Demo  ·  Report a Bug

About

Free, open-source platform to learn the terminal by doing — Linux, macOS & Windows.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Generated from figma/repo-template