This monorepo contains two separate projects:
- Proving Service: A service that handles proof generation and verification
- Offchain Processor: A service that processes offchain data and prepares it for proof generation
To set up the complete development environment:
make setup
This will:
- Install Rust and required toolchains
- Set up PostgreSQL databases for both projects
- Configure LocalStack for AWS services
- Install code coverage tools
- Set up project-specific dependencies
You can also set up individual components:
make setup-ps # Set up Proving Service only
make setup-op # Set up Offchain Processor only
make setup-rust # Set up Rust only
IMPORTANT: Always run
make pr
before submitting your changes!This ensures your code:
- Passes all linters (formatting and static analysis)
- Passes all tests in both projects
- Is ready for review without CI pipeline failures
fossil-monorepo/
├── proving-service/ # Contains the Proving Service implementation
└── offchain-processor/ # Contains the Offchain Processor implementation
The root Makefile provides convenience commands for working across both projects:
# Setup
make setup # Set up complete development environment
make setup-ps # Set up Proving Service only
make setup-op # Set up Offchain Processor only
# Building
make build-all # Build all projects in release mode
make build-all-debug # Build all projects in debug mode
make ps-build # Build Proving Service only
make op-build # Build Offchain Processor only
# Testing
make test-all # Test all projects
make ps-test # Test Proving Service only
make op-test # Test Offchain Processor only
# Linting and PR Preparation
make lint-all # Run linters on all projects
make pr # Run linters and tests to prepare for a pull request
# Development Services
make dev-services # Start all development services
make dev-services-stop # Stop all development services
# Cleaning
make clean-all # Clean all projects
make ps-clean # Clean Proving Service only
make op-clean # Clean Offchain Processor only
# Help
make help # Show all available commands
For detailed information about each project, see their respective READMEs: