Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
โ๏ธ Cargo-Forge
A Rust project generator with templates and common features
Generate Rust projects with templates and optional features
๐ฌ Demo

Recorded from the actual binary with asciinema + agg.
๐ Quick Start
# Install cargo-forge
# Create a new project interactively
# Or specify project type directly
# Initialize in current directory
๐ See Quick Reference for shell completions and common commands, or Troubleshooting for platform-specific install issues.
โจ Features
๐ฏ Project Types
Cargo-Forge supports 7 project types with templates:
| Type | Description | Key Features |
|---|---|---|
| cli-tool | Command-line applications | โข Clap dependency setupโข Basic project structureโข Ready for CLI development |
| library | Rust library crates | โข Library templateโข Examples directoryโข Documentation readyโข Tests structure |
| api-server | REST API servers | โข Axum web frameworkโข Basic HTTP server setupโข Route handlers structureโข Ready for API development |
| wasm-app | WebAssembly applications | โข wasm-bindgen setupโข Web-sys integrationโข Build scriptsโข HTML template |
| game-engine | Game development | โข Bevy engineโข Asset pipeline structureโข Basic game setupโข Development ready |
| embedded | Embedded systems | โข no_std setupโข Memory configurationโข HAL integrationโข Debug configs |
| workspace | Multi-crate projects | โข Organized structureโข Shared dependenciesโข Cross-crate testingโข Unified configuration |
Note: the templates are deliberately minimal starting points, not frameworks. api-server gives you a running server with one health-check route; the rest of the handlers/routes/models are yours to write. game-engine compiles a windowed Bevy app; real assets and systems are up to you.
๐ ๏ธ Core Features
Current features available in v0.2.0:
Project Structure
- Working starters: every template generates real starter code (an Axum
health-check server, a Clap CLI with a
hellocommand, a library with a unit-testedgreetAPI, a wasm-bindgen export, a minimal Bevy app). api-server, cli-tool, library and workspace starters are compile-verified by the test suite. The game-engine starter (bevy 0.20) was verified manually withcargo check --target wasm32-unknown-unknown(the automated suite skips game-engine cargo checks); native desktop builds additionally need Bevy's Linux windowing libraries (noted in the generated README). The wasm-app starter follows the standard wasm-pack flow - Dependency Management: Appropriate dependencies for each project type
- Documentation: README files with project-specific instructions
- Testing: the library and cli-tool starters ship tests you can run with
cargo testright after generation
Development Tools
- Dry Run Mode: Preview project structure before creation (add
--non-interactivewhen running without a TTY, e.g. in CI) - Non-interactive Mode: CI-friendly project generation
- Name Validation: Ensures valid Cargo package names
- License Field:
--licensewrites the SPDXlicensefield intoCargo.toml(same convention ascargo new --license; no LICENSE file is generated) - Shell Completions: Bash, zsh, fish, and PowerShell support
- Config File:
--from-configreads TOML (JSON also accepted for backward compatibility);default_author,default_license,preferred_project_typesand per-typedefault_featuresare applied
Optional Features (select interactively or via config)
- Docker: Dockerfile (multi-stage) + .dockerignore
- CI: GitHub Actions workflow
- Database: PostgreSQL, MySQL, or SQLite scaffolding via sqlx
Planned
- Authentication scaffolding (JWT/OAuth)
- GitLab CI support
๐ Comparison with cargo-generate
| Feature | cargo-forge | cargo-generate |
|---|---|---|
| Interactive Mode | โ Prompt-based (inquire) | โ ๏ธ Requires manual input |
| Project Types | โ 7 built-in types | โ Arbitrary template repos |
| Defaults | โ Pre-configured options | โ Manual configuration |
| Name Validation | โ Built-in validation | โ ๏ธ Basic validation |
| Dry Run Mode | โ Preview before creation | โ Not available |
| Non-interactive Mode | โ CI-friendly with defaults | โ Available |
| Custom Templates | โ Built-in types only | โ Various engines |
| Shell Completions | โ All major shells | โ ๏ธ Manual setup |
| Error Recovery | โ Graceful handling | โ ๏ธ Basic errors |
| Performance | โ ~0.3s generation | โ ๏ธ Varies by template |
๐ฎ Usage Examples
Command-Line Mode (Current)
# Create an API server (Axum starter with a GET / health check)
# Create a CLI tool in non-interactive mode (great for CI)
# Initialize a library in current directory
# Dry run to preview what will be created
# Use saved configuration (TOML; JSON is also accepted)
Example defaults.toml:
= "Jane Doe"
= "MIT"
= ["api-server"]
= { = ["docker", "ci"] }
= "2021"
Advanced Usage
# Create a workspace with multiple crates
# Generate a game with Bevy engine
# Create an embedded project for STM32
๐ Generated Project Structure
Example: API Server
my-api/
โโโ src/
โ โโโ main.rs # Tokio main: binds 0.0.0.0:3000 (PORT env overrides)
โ โโโ handlers.rs # GET / health-check handler
โ โโโ routes.rs # Router definition
โ โโโ models.rs # Health model
โโโ config/
โ โโโ default.toml # Configuration template
โโโ .env.example # Documented env vars
โโโ .gitignore # Git ignore file
โโโ Cargo.toml # Project manifest with Axum dependencies
โโโ README.md # Project documentation
๐ง Configuration
Command-Line Options
Cargo-Forge supports various command-line options:
# Non-interactive mode (great for CI/CD)
# Dry run to preview what will be created
# (add --non-interactive when there is no TTY, e.g. in CI)
# Initialize in current directory
Project Customization
After project creation, you can customize:
- Add dependencies to
Cargo.toml - Modify source files to fit your needs
- Update configuration files as needed
- Add additional features and integrations
๐งช Testing
The library and cli-tool starters include tests that run immediately:
# In a freshly generated library or cli-tool project
๐ณ Docker Support (optional feature)
Select the docker feature (interactively, or via default_features in your config) to generate a multi-stage Dockerfile plus .dockerignore. For api-server projects the container exposes port 3000. The generated Dockerfile uses multi-stage builds for optimal image size:
# Build stage
FROM rust:1.70 as builder
WORKDIR /app
COPY . .
RUN cargo build --release
# Runtime stage
FROM debian:bookworm-slim
COPY --from=builder /app/target/release/app /usr/local/bin/
CMD ["app"]
๐ Security
Properties of the generated templates today:
- No hardcoded secrets in templates
- Secure default configurations
- Environment variable usage for sensitive data
Planned: security audit integration in CI and OWASP-aligned checks for the api-server template โ both depend on the CI/CD integration above, which isn't implemented yet.
๐ค Contributing
We love contributions! See CONTRIBUTING.md for guidelines.
Development Setup
# Clone the repository
# Run tests
# Run with coverage
# Build for release
๐ Performance
Cargo-Forge is optimized for speed:
- Project generation: ~0.3 seconds per project (bounded by
generation_is_fastin the test suite; 2s/project CI ceiling) - Name validation: <1ms
- Cross-platform: Works on Windows, Mac, and Linux
๐ Troubleshooting
Common Issues
Q: Command not found after installation
# Ensure cargo bin directory is in PATH
Q: Permission denied errors
# Check directory permissions
# Use sudo if needed (not recommended)
Q: Template rendering fails
# Validate your input
# Check for special characters in project name
Getting Help
- ๐ Documentation
- ๐ Issue Tracker
๐ Documentation
- Quick Reference - Command cheat sheet and quick examples
- Project Types Guide - Detailed guide for each project type
- FAQ - Frequently asked questions
- Troubleshooting - Common issues and solutions
- Contributing - Development guidelines
- Changelog - Version history and roadmap
๐ License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.
๐ Acknowledgments
- The Rust community for feedback
- Contributors who help make Cargo-Forge better
- Similar projects: cargo-generate, create-react-app
Built with โค๏ธ by the Rust community