Skip to content

SoarCollab/RecordPlatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

357 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RecordPlatform

Enterprise-grade file attestation platform powered by blockchain and distributed storage

Build License Java Spring Boot Svelte

δΈ­ζ–‡ζ–‡ζ‘£ Β· Documentation Β· API Reference


What is RecordPlatform?

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

✨ Features

πŸ” Attestation & Security

  • Blockchain Attestation β€” file metadata stored on FISCO BCOS, immutable and traceable
  • File Encryption β€” AES-GCM / ChaCha20-Poly1305, per-chunk independent key chains
  • RBAC + Ownership β€” fine-grained resource-level access control
  • ID Obfuscation β€” AES-256-CTR external↔internal ID mapping

πŸ“¦ Storage & Transfer

  • Distributed Storage β€” 1~N active fault domains, quorum writes, N-1 fault tolerance, auto-promotion from standby
  • Chunked Upload β€” resumable, concurrent, dynamic chunk sizing
  • Streaming Download β€” StreamSaver.js for large files; auto strategy selection
  • File Version Chain β€” track history, derive new versions from existing files

πŸ‘₯ Collaboration & Sharing

  • File Sharing β€” generate share codes with access limits, expiry, and password protection
  • Share Audit & Provenance β€” multi-level chain tracking (Aβ†’Bβ†’C), full access logs
  • Friend System β€” direct file sharing with friends, real-time SSE notifications
  • Support Tickets β€” built-in ticket system with categories, priorities, admin management

πŸ“Š Governance & Observability

  • Quota Governance β€” per-user and per-tenant limits, SHADOW/ENFORCE modes, gradual rollout
  • Real-time Notifications β€” SSE push for file attestation, tickets, friend events, announcements
  • Storage Capacity API β€” cluster/domain/node capacity aggregates with degraded+source semantics
  • Multi-tenancy β€” DB, cache, and storage path isolation per tenant

πŸ— Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       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


⚑ Quick Start

1. Prerequisites

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 -d

Copy .env.example to .env and configure JWT_KEY, S3_*, and FISCO_* before starting services.

2. Build

# 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

3. Run

# 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 dev

Or use the unified start script:

./scripts/start.sh start all

Verify the installation at:

For detailed setup, see Getting Started Guide


🧱 Tech Stack

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 β€”

πŸ“š Documentation

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

πŸ—‚ Project Structure

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)

πŸ›  Contributing

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 main

Branch 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.


πŸ“„ License

This project is licensed under the Apache License 2.0 β€” see the LICENSE file for details.

About

Distributed evidence storage system based on blockchain

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors