Your files. Your chain. Your vault.
Vault is a decentralized file storage and sharing application built on Shelby Protocol — the high-performance hot storage network on the Aptos blockchain.
- Multi-Chain Wallet Support — Connect with Aptos, Ethereum (Sepolia), or Solana wallets
- Decentralized Storage — Files stored on Shelby's blob storage network
- Unstoppable — No censorship, no takedowns, no platform risk
- File Gallery — Browse, filter, and manage your uploaded files
- Shareable Links — Every file gets a permanent, verifiable URL
- On-Chain Proof — Every upload recorded on Aptos blockchain
- Framework: React + TypeScript + Vite
- Blockchain: Aptos (via
@aptos-labs/ts-sdk) - Storage: Shelby Protocol (
@shelby-protocol/sdk) - Wallets: Aptos Wallet Adapter, wagmi (EVM), Solana Wallet Adapter
- Styling: Vanilla CSS with glassmorphism & gradient design system
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run buildsrc/
├── main.tsx # Entry point with providers
├── App.tsx # Router setup
├── index.css # Global design system
├── pages/
│ ├── Home.tsx/css # Landing page
│ ├── Vault.tsx/css # File gallery
│ └── Upload.tsx/css # File upload
├── components/
│ ├── Navbar.tsx/css # Navigation
│ ├── FileCard.tsx/css # File display card
│ └── wallet/
│ └── WalletModal.tsx/css # Wallet connection
├── wallets/
│ ├── WalletProviders.tsx # Combined providers
│ ├── AptosProvider.tsx # Aptos adapter
│ ├── EthereumProvider.tsx # wagmi/EVM
│ ├── SolanaProvider.tsx # Solana adapter
│ ├── useVaultWallet.ts # Unified wallet hook
│ └── WalletModalContext.tsx # Modal state
├── lib/
│ ├── shelbyNetwork.ts # Shelby config
│ ├── fileStorage.ts # File persistence
│ └── format.ts # Utilities
└── types/
└── file.ts # Type definitions
VITE_SHELBY_MODE=aptos-testnet # or "shelbynet"MIT