A blockchain-based decentralized application implementing collective authorization for document access control. Built on Ethereum with real-time collaborative editing capabilities.
Developed in the context of the ParSec project, this dApp replaces centralized administrative control with consensus-based access management. Every document access request must go through a petition-vote-authorization cycle by designated approvers.
For more information take a look at our Video Demo.
- Consensus-based: Majority vote determines access approval.
- Time-limited: Requests expire after 7 days (configurable).
- Role-based: Read / ReadWrite permissions.
- Non-blocking: Document operations continue during voting.
- Immutable audit trail: All access requests, votes, and decisions logged on-chain.
- Real-time collaborative editing using Yjs CRDT library.
- Authenticated sessions via JWT tokens for ReadWrite users.
- WebSocket-based synchronization for concurrent editing.
- Solidity contract enforcing access rights, version control, and on-chain voting.
- Deployed on local Ethereum test network (Hardhat).
- Handles approver management, access requests, and voting logic.
- Express.js server managing:
- User metadata.
- File storage.
- JWT authentication for WebSocket sessions.
- Real-time collaboration coordination.
- React application combining:
- Wallet (MetaMask).
- Real-time collaborative editing (Yjs + WebSockets).
- Document management interface.
git clone https://github.com/nova-sp/parsec-dapp.git
cd parsec-dapp# Install root dependencies
npm install
# Install frontend dependencies
cd frontend
npm install
cd ..
# Install backend dependencies
cd backend
npm install
cd ..3. Start local Ethereum network / Deploy smart contract / Start backend server / Start frontend application
./launch-dapp.sh
- Connect to localhost:8545
The project includes comprehensive unit tests:
npm testTest Coverage: 95 passing tests.
The smart contract has been analyzed with multiple tools:
- Slither
- Solhint
- Solium/Ethlint
- Aderyn
- Mythril
Results can be found at security folder.
Developed as part of the DARE ACM Summer School project, in the context of the ParSec research project on 'Improving Parliamentary Cybersecurity through Collective Authorization'.
Reference: 2024.07643.IACDC/2024