A complete rewrite of the freeCodeCampOS platform from Node.js to Rust, providing a high-performance, single-binary distribution for interactive coding curricula.
- High Performance: Rust-based backend with minimal memory footprint
- Single Binary: Complete application distributed as a single executable
- Modern Frontend: React 19 with TypeScript and Vite 7
- Extensible Architecture: Modular design with separate components for parsing, running, and serving
- Multiple Runners: Support for Node.js, Bash, Python, and extensible to other languages
- Real-time Updates: WebSocket support for live test execution feedback
config- Shared configuration types and structuresparser- Curriculum markdown parser (GitHub Flavored Markdown)runner- Test execution engine with multiple language supportserver- Axum-based HTTP REST API and WebSocket serverclient- React 19 + TypeScript frontend with Vite build systemcli- Command-line tool for curriculum creation and managementexample- Example curriculum project demonstrating all featuresdocs- User documentation built with mdbook
# Build everything (Rust + Client)
bun run build
# Build just Rust components
cargo build --release
# Build just the client
cd client && bun run build
# Run tests
cargo test
# Run linting
cargo fmt --all && cargo clippy --all# Terminal 1: Run the development server
cargo run --bin server
# Terminal 2: Run the client in dev mode
cd client && bun run dev
# Server will be available at http://localhost:8080
# Client will be available at http://localhost:5173# Use the CLI to create a new curriculum
./target/release/create-freecodecamp-os-appfreeCodeCampOS/
├── config/ # Shared types and configuration
├── parser/ # Markdown curriculum parser
├── runner/ # Test execution engine
├── server/ # HTTP server implementation
├── client/ # React frontend
├── cli/ # Command-line tool
├── example/ # Example curriculum
├── docs/ # User documentation
├── Cargo.toml # Rust workspace definition
├── package.json # Root scripts
└── target/release/ # Compiled binaries
├── server # Main server binary
└── create-freecodecamp-os-app # CLI tool
Curricula are written in GitHub Flavored Markdown. Project metadata is defined in a separate projects.json file:
config/projects.json:
[
{
"id": "e5f6a1b2-c3d4-4e5f-1a2b-3c4d5e6f7a8b",
"title": "Course Title",
"dashed_name": "course-title",
"order": 0,
"is_integrated": false,
"is_public": true,
"run_tests_on_watch": true,
"seed_every_lesson": false,
"is_reset_enabled": true
}
]curriculum/locales/english/course-title.md:
# Course Title
Course description and introduction.
## 0
### --description--
Lesson description goes here.
### --tests--
```js,runner=node
console.log("Test");
assert(true);
```
### --seed--
```js,runner=node
// Starter code
const x = 1;
```
## 1
### --description--
Next lesson...GET /health- Health checkGET /api/curriculum/:project- Get curriculum metadataPOST /api/tests/:project/:lesson- Run tests for a lessonPOST /api/reset/:project/:lesson- Reset a lesson to seed state
Latest versions as of February 2026:
- React 19.2.4
- TypeScript 5.9.3
- Vite 7.3.1
- Vite React Plugin 5.1.4
- Marked 17.0.3
- TanStack Query 5.90.21
- Axum 0.7
- Tokio 1.35
- Serde 1.0
- Comrak (Markdown parser)
See CONTRIBUTING.md for guidelines.
BSD-3-Clause License - See LICENSE for details
This version represents a complete rewrite from the Node.js architecture:
- Old: Express + Webpack + Node.js test runner
- New: Axum + Vite + Rust server with embedded client
Key improvements:
- 10x smaller binary size
- Faster test execution
- Single distribution binary
- Better error handling
- Type-safe configuration
- Modular architecture
For migration guide from v3.x, see MIGRATION.md.