A minimal desktop vault for decentralized file storage built with SvelteKit + Tauri. Store and share files securely using Storacha, with local-first architecture and a clean, modern UI.
- π Decentralized Authentication: Magic link email authentication with Storacha
- π Space Management: Create and organize files in secure, decentralized spaces
- π€ Drag & Drop Uploads: Native desktop drag-and-drop with dedicated dropzone window
- π File Search & Discovery: Search through your stored files with a powerful search interface
- π± QR Code Sharing: Generate QR codes to share files securely
- πΎ Local-First Storage: Files are indexed locally with Dexie for fast access
- π¨ Modern UI: Clean, responsive interface built with Tailwind CSS
- π Cross-Platform: Runs on Windows, macOS, and Linux
- Frontend: SvelteKit (Svelte 5) + TypeScript + Tailwind CSS 4
- Backend: Tauri 2 (Rust) for native desktop functionality
- Storage: Storacha (IPFS-based decentralized storage)
- Database: Dexie (IndexedDB wrapper) for local file indexing
- UI Components: Bits UI + Lucide icons
- Node.js: v18.0.0 or higher
- Rust: v1.70.0 or higher (latest stable recommended)
- Platform Tools:
- Windows: Visual Studio Build Tools or Visual Studio Community
- macOS: Xcode Command Line Tools
- Linux: GCC and development packages
git clone https://github.com/n3-rd/vault-er.git
cd vault-ernpm install# Start both frontend (Vite) and backend (Tauri) in development mode
npm run tauri devThis will:
- Start the Vite dev server on
http://localhost:1420 - Launch the Tauri desktop application
- Enable hot reloading for both frontend and backend changes
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server only |
npm run build |
Build frontend for production |
npm run preview |
Preview built frontend |
npm run tauri dev |
Start full development environment |
npm run tauri build |
Build desktop application for distribution |
npm run check |
Type check with svelte-check |
npm run check:watch |
Type check in watch mode |
# Build for your current platform
npm run tauri build
# Build for all platforms (requires appropriate tooling)
npm run tauri build -- --target universal-apple-darwin # macOS Universal
npm run tauri build -- --target x86_64-pc-windows-msvc # Windows x64
npm run tauri build -- --target x86_64-unknown-linux-gnu # Linux x64Built applications will be available in src-tauri/target/release/bundle/.
npm run build
npm run preview- Launch Vault-er
- Click "Login" and enter your email
- Check your email for a magic link
- Click the link to authenticate with Storacha
- Navigate to the dashboard
- Click "New Space"
- Enter a name or leave blank for auto-generation
- Your space is now ready for file uploads
- Drag & Drop: Drag files onto the dropzone window
- File Picker: Click to browse and select files
- Space Selection: Choose which space to upload to
- Files are automatically uploaded to decentralized storage
- Select a file in your space
- Click the share button to generate a QR code
- Others can scan the QR code to access the file
- Click the search icon in the top navigation
- Enter search terms to find files across all spaces
- Results update in real-time as you type
Edit src-tauri/tauri.conf.json to customize:
- Window dimensions and behavior
- Bundle settings
- Plugin configurations
- Use TypeScript for all new code
- Follow Svelte 5 patterns and best practices
- Use Tailwind CSS for styling
- Maintain consistent component structure
- Drop useful comments to guide future contributors
src/
βββ app.css # Global styles
βββ app.html # HTML template
βββ components/ # Reusable Svelte components
β βββ ui/ # UI component library
β βββ dashboard/ # Dashboard-specific components
βββ lib/ # Utilities and stores
β βββ auth.ts # Authentication logic
β βββ db.ts # Local database setup
β βββ stores/ # Svelte stores
βββ routes/ # SvelteKit routes
src-tauri/ # Tauri Rust backend
βββ src/
β βββ main.rs # Application entry point
β βββ lib.rs # Tauri commands and setup
βββ tauri.conf.json # Tauri configuration
- UI Components: Add to
src/components/ui/ - Business Logic: Add utilities to
src/lib/ - Tauri Commands: Add to
src-tauri/src/lib.rs - Routes: Create new pages in
src/routes/
Build fails on Windows
- Ensure Visual Studio Build Tools are installed
- Try running as Administrator:
npm run tauri build
Hot reload not working
- Check that both Vite and Tauri processes are running
- Restart with
npm run tauri dev
Authentication not working
- Verify internet connection
- Check that emails are not going to spam
- Try using a different email provider
File uploads failing
- Ensure sufficient disk space
- Check network connectivity
- Verify space permissions
- Check existing GitHub Issues
- Create a new issue with detailed error logs
- Include your platform, Node.js/Rust versions, and reproduction steps
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit with clear messages:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
# Install all dependencies
npm install
# Run type checking in watch mode
npm run check:watch
# Format code (if prettier is configured)
npm run formatThis project is licensed under the MIT License - see the LICENSE file for details.
- Storacha for decentralized storage infrastructure
- SvelteKit for the amazing framework
- Tauri for enabling native desktop apps with web technologies
- Tailwind CSS for utility-first styling
Built with β€οΈ using modern web technologies