Decentralized team archive platform, 100% manage on IPFS and FEVM
Team Archive is a decentralized solution for hosting a company's archives on the Web3. It leverages IPFS for file storage and FVM blockchain for smart contract logic to provide secure, decentralized, and immutable storage for sensitive company data.
Any team member, with the team recognized by an ERC-721 token, can view team files by entering their team token address (or potentially an ENS domain in the future). Only token holders can access the list of documents.
Individuals can also upload additional documents. If a user no longer holds the token, they are automatically removed from the list of users who can access the archives and are denied access to the decryption keys necessary to decrypt the company's documents.
For the solution logic, we wrote our smart contract in Solidity. The contract serves as a repository where each company can store references to its documents and retrieve information on which documents are owned by the team. We are proud of the efficient storage and retrieval of documents in the smart contract, with the ability to delete some documents while maintaining a low time complexity of O(1). This was achieved by creating a cross-reference list of objects instead of simply storing data in an array, allowing for the inclusion and removal of hundreds of thousands of documents without any performance issues or increased gas cost. The actual document data is stored on IPFS and we utilized the Lighthouse.storage services for this purpose. Each document is encrypted and stored on IPFS via lighthouse.storage, with token-gated access to protect the decryption keys. For each file added, we upload two files: one containing metadata (in JSON format) with details such as the name and size, and the second file being the actual uploaded document. The reference to the document is contained in the metadata file, while the reference to the metadata file is stored on the smart contract. All files are encrypted. Finally, the frontend was developed using React and common plugins such as wagmi to manage wallet connection.