# This is executable Markdown that's tested on CI.
set -o errexit -o nounset -o xtrace
alias ~~~=":<<'~~~sh'";:<<'~~~sh'
Blueprint is a production-ready polyglot Bazel starter repository that provides a foundation for building multi-language projects with best practices, optimized configurations, and excellent developer experience.
- 🧱 Latest Bazel - Up-to-date Bazel version with optimized configuration
- 🌐 Multi-Language Support - Python, Go, JavaScript/TypeScript, Rust, Java, Kotlin, C++
- 📦 Curated Configuration - Optimized
.bazelrcflags via [bazelrc-preset.bzl] - 🧰 Developer Tools - Automated environment setup with [bazel_env.bzl]
- 🎨 Code Quality - Formatting and linting using rules_lint
- ✅ Pre-commit Hooks - Automatic code formatting and validation
- 🚀 Aspect Workflows - Enhanced Bazel developer experience
- 📚 Comprehensive Docs - Detailed documentation for users, contributors, and admins
git clone https://github.com/BlueCentre/blueprint.git
cd blueprint
# Allow direnv to set up environment
direnv allow
# If needed, run bazel_env setup
bazel run //tools:bazel_env
direnv allow# Build everything
bazel build //...
# Run tests
bazel test //...
# Format code
format
# Lint code
aspect lint //...Comprehensive documentation organized for different audiences:
New to Blueprint? Start here:
- Getting Started - Quick start guide
- Project Structure - Understanding the repository layout
- Developer Workflows - Common development tasks
- Language Guides - Python, Go, JS, Rust, Java, C++, Shell
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
Want to contribute? Check these guides:
- Contributing Guide - How to contribute
- Architecture Overview - System design
- Development Setup - Setting up your dev environment
- Testing Guide - Writing and running tests
- Code Style Guide - Coding standards
Maintaining Blueprint:
- Maintenance Guide - Regular maintenance tasks
- CI/CD Configuration - Continuous integration setup
- Release Process - Creating releases
- Security Guide - Security best practices
- Architecture Diagrams - System architecture visualizations
Blueprint provides first-class support for:
| Language | Package Manager | Documentation |
|---|---|---|
| Python | pip/uv | Guide |
| Go | go modules | Guide |
| JavaScript/TypeScript | pnpm | Guide |
| Rust | Cargo | Guide |
| Java/Kotlin | Maven | Guide |
| C/C++ | System | Guide |
| Shell | N/A | Guide |
Before following these instructions, setup the developer environment by running
direnv allowand follow any prompts. This ensures that tools we call in the following steps will be on the PATH.
Many commands are available on the PATH thanks to direnv:
copier --help
yq --help