
Overview
Frate is a command-line tool that modernizes the C++ development experience by providing a unified workflow similar to Rust's Cargo, npm, or yarn. It simplifies project initialization, dependency management, and build configuration, eliminating the need to manually edit CMakeLists.txt files.
Project Status: Alpha (expect breaking changes)
The Problem
C++ has traditionally lacked a good default development experience. Setting up projects requires:
- Manual CMake configuration
- Complex dependency management
- Repetitive project setup tasks
- Fragmented tooling ecosystem
The struggle is real
Frate aims to fix this with sane defaults and a unified CLI.
Features
- Easy Project Initialization - Create new C++ projects with sensible defaults
- Dependency Management - Add, remove, and search for packages with simple commands
- Multi-Mode Builds - Support for debug, release, and custom build configurations
- Cross-Compilation - Build for different platforms and architectures
- Project Blueprints - Reusable project templates and scaffolding
- Remote Builds - Cloud-based compilation support
- Watch Mode - Auto-rebuild and run on file changes
- Decentralized Packages - No central authority required
- JSON Configuration - Extensible project configuration system
- Shell Completions - Available for popular shells
Quick Start
Basic Commands
# Start a new project (-d for defaults)
frate new
# Build your project (-j for multi-threading)
frate build
# Run the project
frate run
# Add a package (-l for latest version)
frate add p <package-name>
# Search for packages
frate search p <query>
# Update package index
frate update index
# Clean build artifacts (-c to clear cache)
frate clean
# Auto-build and run on file changes
frate watch
Technical Implementation
Architecture
Built With:
- C++ for core functionality
- CMake for build system integration
- Lua for extensibility
- JSON for configuration
Component Structure:
Commands/- CLI command implementationsGenerators/- Project template generatorsWizards/- Interactive setup workflowsUtils/- Core utilities and helpersLua/- Lua scripting integration
Design Philosophy
- Sane Defaults - Projects should work out of the box
- Simple Commands - Complex operations made simple
- Extensibility - Override and customize as needed
- Decentralization - No single point of failure
- Developer Experience - Prioritize ease of use
Why Frate?
For Individual Developers:
- Get started quickly without CMake expertise
- Focus on code, not build configuration
- Consistent project structure across projects
For Teams:
- Standardized development workflows
- Reproducible builds
- Simplified onboarding
For the C++ Community:
- Unified tooling ecosystem
- Easier package sharing
- Lower barrier to entry for new C++ developers
Popularity and Adoption
- 119 GitHub Stars - Most popular project in my portfolio
- Active Development - Regular commits and community engagement
- Discord Community - Active discussion and support channel
- Contributors - Growing open-source community
Roadmap
Current Features:
- Project initialization
- Build system integration
- Package management
- Watch mode
- Cross-compilation
Coming Soon:
- Legacy project conversion
- Template override system
- Enhanced package discovery
Installation
Installation process coming soon. Currently, build from source:
git clone https://github.com/frate-dev/frate.git
cd frate
# Build instructions in repository
Community
- GitHub: frate-dev/frate
- Discord: Join the community
- Issues: Report bugs and request features on GitHub
Impact
Frate represents a significant step toward modernizing C++ development. By providing a unified tool that handles project management, dependencies, and builds, it removes friction from the C++ development workflow and makes the language more accessible to newcomers.