Blockchain as a Service (BaaS) platform for the CS60118 Cloud Computing course. This project provides a multi-tenant control plane for provisioning and managing Hyperledger Fabric networks through a web frontend, REST API, and orchestration services.
The platform is designed to reduce the operational complexity of enterprise blockchain deployment. Instead of manually wiring Fabric components, users work through a dashboard and API to create networks, deploy chaincode, track audit events, and monitor platform health.
- Multi-tenant onboarding with JWT authentication and RBAC.
- Fabric network lifecycle management: create, clone, start, stop, and delete.
- Chaincode deployment, invocation, and ledger queries.
- Immutable audit logging with export and verification support.
- Cost estimation and cost history for provisioned networks.
- Webhook notifications with retry handling.
- Monitoring with Prometheus and Grafana.
- Demo mode for learning and local development without a full Cello deployment.
flowchart LR
U[Browser / Frontend] --> A[Node.js API]
A --> M[(MongoDB)]
A --> C[Hyperledger Cello]
C --> F[Hyperledger Fabric Network]
A --> O[Audit, Cost, Notification Services]
A --> P[Prometheus]
P --> G[Grafana]
api/- Express backend, models, services, and routes.frontend/- React + Vite dashboard.chaincode/- Fabric smart contracts for audit, access control, and asset registry.fabric-network/- Fabric configuration and deployment scripts.cello/- Cello setup scripts and templates.monitoring/- Prometheus and Grafana configuration.scripts/- Seed, simulation, and export utilities.tests/- API and chaincode tests.report/- Project report and supporting documentation.
- Docker and Docker Compose v2
- Node.js 20 LTS or newer
- Go 1.21+ for chaincode tests
- Make
From the repository root:
cp .env.example .env
make setup
make build
make start-demo
make seedThen open:
- Frontend: http://localhost:3000
- API: http://localhost:3001
- Grafana: http://localhost:3003
- Prometheus: http://localhost:9090
The demo setup starts the core app stack without requiring a full external Cello installation.
After seeding, use one of these accounts:
- Admin:
admin@baas.local/Admin123! - Developer:
dev@baas.local/Dev123! - Viewer:
viewer@baas.local/View123!
make setup # Install API and frontend dependencies
make build # Build Docker images
make start # Start the full stack
make start-demo # Start the demo-focused stack
make stop # Stop containers
make logs # Follow container logs
make seed # Load demo users and sample data
make test # Run API and chaincode tests
make simulate # Run the load simulation script
make export-audit # Export the audit trail to CSV
make setup-master # Start the Cello master setup
make setup-worker # Start the Cello worker setupThe main runtime settings live in .env. The most important values are:
DEMO_MODE=truefor local/demo runs.CELLO_API_URLfor connecting to a real Cello deployment.MONGO_URIfor the metadata database.JWT_SECRETfor authentication.PROMETHEUS_PORTandGRAFANA_PORTfor monitoring.
See .env.example for the full set of defaults.
This is the easiest way to explore the project. Cello behavior is simulated, so you can exercise the frontend and API without provisioning a real Fabric cluster.
Set DEMO_MODE=false and provide a reachable Cello endpoint to connect the platform to a real orchestration layer. Use this when you want to run the full Hyperledger Fabric workflow.
- Project report:
report/ - Presentation:
Presentation.pdf - Demo and infrastructure scripts:
scripts/,cello/, andfabric-network/