Enterprise-grade file attestation platform powered by blockchain and distributed storage
RecordPlatform is an open-source, enterprise-grade file attestation platform that combines blockchain immutability with fault-domain-aware distributed storage. Upload files, have their metadata recorded on-chain via FISCO BCOS, and share them securely β with cryptographic proof of origin, integrity, and full access audit.
Built for teams that need:
- π Auditable provenance β every upload, share, and download tracked and verifiable on-chain
- π’ Multi-tenant isolation β separate storage, cache, and data paths per tenant
- π End-to-end encryption β AES-GCM/ChaCha20-Poly1305 with per-chunk key chains
|
|
|
|
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Infrastructure β
β Nacos MySQL RabbitMQ Redis S3 Storage Cluster β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββ΄ββββββββββββββββ
β platform-api β
β (Shared Dubbo Interfaces) β
βββββββββββββββββ¬ββββββββββββββββ
β
ββββββββββββββββββββββΌβββββββββββββββββββββ
β β β
βΌ β βΌ
βββββββββββββββββββ β βββββββββββββββββββ
β platform-fisco β β β platform-storageβ
β Blockchain Svc β β β Storage Service β
β (Port 8091) β β β (Port 8092) β
ββββββββββ¬βββββββββ β ββββββββββ¬βββββββββ
β Dubbo RPC β Dubbo RPC β
β βΌ β
β βββββββββββββββββββ β
β β platform-backendβ β
β β REST API :8000 β β
β βββββββββββββββββββ β
β β
βΌ βΌ
βββββββββββββββ ββββββββββββββββββ
β FISCO BCOS β β S3 Cluster β
β Node β β (MinIO / S3) β
βββββββββββββββ ββββββββββββββββββ
For detailed architecture with Mermaid diagrams and data flow sequences, see Architecture Guide
Ensure the following services are running before starting:
| Service | Port | Purpose |
|---|---|---|
| Nacos | 8848 | Service discovery & config |
| MySQL | 3306 | Database |
| Redis | 6379 | Cache & distributed locks |
| RabbitMQ | 5672 | Message queue |
| S3-compatible storage | 9000 | Object storage |
| FISCO BCOS | 20200 | Blockchain node |
Start infrastructure with Docker Compose:
docker compose -f docker-compose.infra.yml up -dCopy .env.example to .env and configure JWT_KEY, S3_*, and FISCO_* before starting services.
# Install shared interfaces (required first)
mvn -f platform-api/pom.xml clean install
# Build all backend services
mvn -f platform-backend/pom.xml clean package -DskipTests
mvn -f platform-fisco/pom.xml clean package -DskipTests
mvn -f platform-storage/pom.xml clean package -DskipTests# Start in order: providers before consumer
java -jar "$(ls platform-storage/target/platform-storage-*.jar)" --spring.profiles.active=local
java -jar "$(ls platform-fisco/target/platform-fisco-*.jar)" --spring.profiles.active=local
java -jar "$(ls platform-backend/backend-web/target/backend-web-*.jar)" --spring.profiles.active=local
# Frontend dev server
cd platform-frontend && pnpm install && pnpm devOr use the unified start script:
./scripts/start.sh start allVerify the installation at:
- Swagger UI: http://localhost:8000/record-platform/swagger-ui.html
- Health check: http://localhost:8000/record-platform/actuator/health
- Frontend: http://localhost:5173
For detailed setup, see Getting Started Guide
| Category | Technology | Version |
|---|---|---|
| Backend | Java + Spring Boot + Virtual Threads | 21, 3.5.11 |
| Microservices | Apache Dubbo (Triple protocol), Nacos | 3.3.6 |
| Blockchain | FISCO BCOS, Solidity | 3.8.0, ^0.8.11 |
| Storage | S3-compatible (AWS SDK v2), MySQL, Redis (Redisson) | 2.x, 8.0+, 7.0+ |
| Frontend | Svelte 5 (Runes), SvelteKit, Tailwind CSS 4, bits-ui | 5.53+, 2.53+, 4.2+ |
| Resilience | Resilience4j (circuit breaker, retry) | 2.3.0 |
| Monitoring | Micrometer, Prometheus | β |
| Testing | JUnit 5, Mockito, Testcontainers, Vitest | β |
| Guide | Description |
|---|---|
| Getting Started | Prerequisites, installation, configuration |
| Architecture | System overview, distributed storage, blockchain, security |
| Deployment | Docker Compose, production setup, monitoring |
| API Reference | REST endpoints, authentication, error codes |
| Development | Contributing, local dev, testing strategy |
| Troubleshooting | Common issues and solutions |
RecordPlatform/
βββ platform-api/ # Shared Dubbo interface definitions
βββ platform-backend/ # REST API service (Dubbo Consumer, :8000)
β βββ backend-web/ # Controllers, JWT filters, rate limiting
β βββ backend-service/ # Business logic, Saga orchestration, Outbox
β βββ backend-dao/ # MyBatis Plus mappers and entities
β βββ backend-api/ # Internal interface definitions
β βββ backend-common/ # Shared utilities and constants
βββ platform-fisco/ # Blockchain service (Dubbo Provider, :8091)
βββ platform-storage/ # Storage service (Dubbo Provider, :8092)
βββ platform-frontend/ # Svelte 5 + SvelteKit frontend
βββ scripts/ # Start/stop scripts, env-check
βββ tools/ # k6 load tests, security PoC, doc consistency
βββ docs/ # VitePress documentation site (en/zh)
βββ docker-compose.infra.yml # Infrastructure services (Nacos, MySQL, Redis, RabbitMQ, MinIO)
We welcome contributions! Please read the Contributing Guide before getting started.
# 1. Fork and clone the repository
git clone https://github.com/<your-fork>/RecordPlatform.git
# 2. Create a feature branch
git checkout -b feat/your-feature
# 3. Make changes, run tests
mvn -f platform-backend/pom.xml test
# 4. Open a Pull Request against mainBranch naming: feat/, fix/, refactor/, docs/, chore/
All PRs must pass CI gates: backend tests, frontend tests, contract consistency check, and build verification. See CI Gates for details.
This project is licensed under the Apache License 2.0 β see the LICENSE file for details.