To bring a new decentralized feature to the Massa ecosystem: scalable, community-driven storage.
- Decentralized Storage for Large Files: A system designed for big data — decentralized, but not eternal.
- Complementary to DeWeb: Works alongside DeWeb (eternal and decentralized) to handle larger content types —
- Ideal for videos, datasets, and archives that go beyond DeWeb’s file size scope.
- Leverage Unused Disk Space: Tap into underutilized storage across Massa Nodes.
- Use IPFS for Data Archival: Collections of files are grouped and referenced by a single IPFS CID.
- Anchor Metadata on Massa Blockchain: CIDs are stored and retrieved securely using Massa smart contracts.
- Content Provider uploads a file collection to a Massa Node.
- Moderator reviews and approves the content.
- Node Runners opt in to host moderated collections on their local storage.
- An IPFS server running is required to take full advantage of this DApp
- IPFS configuration has to be done to allow the application to connect to your IPFS server, typcally like this
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["GET", "POST"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["https://defiles.deweb.half-red.net", "http://localhost:5173/"]'
You have 2 options to run MassaFiles application, running it locally or on DeWeb
You can enter the URL of your remote IPFS server in the configuration bar if not using default local value http://127.0.0.1:5001
Just go to https://defiles.deweb.half-red.net
From the root of the project, run pnpm install
Then from the sveltekit directory run pnpm dev
The app will run on http://localhost:5173
👥 User Roles:
-
Content Provider
- Can upload collections containing files
- Collections are added and pinned to their local IPFS server
- Can only view collections approved by moderators
- Collection CIDs are registered in the smart contract with metadata (upload date, owner, name, moderation status)
-
Moderator
- Designated by the smart contract owner
- Access to moderation controls on collections page
- Can approve or reject collections
- Can view all collections (approved, pending, rejected)
- Only owner can assign moderators through a dedicated page
-
Node Runner
- Can view all approved collections from the smart contract (unless also a moderator)
- Can see local pinning status of collections
- Can pin approved collections to their IPFS server
📂 Collection Features:
- View collection contents in a dedicated page
- Preview, open in new tab, or download individual files
- Download entire collection as ZIP
- Pinning status indicators for all users
🔑 Key Features:
- File Upload: Upload and store files on IPFS
- Collection Management: Create and manage collections of files by registering their cid and metadata to the blockchain
- Moderation System: Approve or reject collections (for moderators)
- IPFS Integration: Pin/unpin files and collections
- User-friendly Interface: Modern SvelteKit-based UI
-
sveltekit/- Frontend application built with SvelteKitsrc/lib/components/- Reusable UI componentssrc/lib/ts/- TypeScript utilities and typessrc/lib/runes/- Svelte stores and state management
-
wasm/- Smart Contract code written in AssemblyScriptassembly/- Main contract codecontracts/- Smart contract implementationcids.ts- Collection CIDs managementipfs.ts- IPFS integrationmap.ts- Storage mapping functionsmods.ts- Moderator management
__tests__/- Contract test files
- Frontend: SvelteKit, TypeScript
- Storage: IPFS (via Kubo)
- Blockchain: Massa Network
- Package Manager: pnpm
- Build Tool: Turbo
MIT - see LICENSE file for details
Created by Kredeum
