- Rust 1.93.1+ — Install Rust
- Bun 1.3.10+ — Install Bun
- Node.js 20+
-
Clone the repository and open
freeCodeCampOS/exampleas a new workspace in VSCode. -
Install dependencies and build the project:
bun install bun run build
-
Run the development server:
cargo run --bin freecodecamp-server
-
In a separate terminal, run the client in development mode:
cd client && bun run dev
The client will be available at
http://localhost:5173.
# Run all tests
cargo test --all
# Check formatting
cargo fmt --all -- --check
# Fix formatting
cargo fmt --all
# Run linter
cargo clippy --all -- -D warnings
# Build optimized binaries
cargo build --release --all
# Build client assets
cd client && bun run buildRUST_LOG=info # Log level (debug, info, warn, error)
PORT=8080 # Server port (default: 8080)
CONFIG_PATH=./conf.json # Path to configuration filecli/ # create-freecodecamp-os-app CLI tool
client/ # React frontend
config/ # Shared types and configuration
docs/ # Documentation (this site)
example/ # Example curriculum used for development
parser/ # Curriculum markdown parser
runner/ # Test execution engine
server/ # Axum HTTP server
- Fork the repository
- Push your changes to your fork
- Open a pull request with the recommended style
<type>(<scope>): <description>feat(docs): add contributing.md
<type>(<scope>): <description>feat(docs): add contributing.md
Answer the following questions:
- What does this pull request do?
- How should this be manually tested?
- Any background context you want to provide?
- What are the relevant issues?
- Screenshots (if appropriate)
fixfeatrefactorchore
Any top-level directory or config file. Changing a package should have a scope of dep or deps.
This documentation is built using mdBook. Read their documentation to install the latest version.
Also, the documentation uses mdbook-admonish:
cargo install mdbook-admonishcd docs
mdbook serveThis will spin up a local server at http://localhost:3000 with hot-reloading.
cd docs
mdbook buildThe CLI is written in Rust and is located in the cli directory.
cd cli
cargo runReleases are done manually through the GitHub Actions.
In the Actions tab, select the Publish to npm workflow. Then, select Run workflow.