- About
- Features
- Tech Stack
- Prerequisites
- Installation
- Development
- Building for Production
- Project Structure
- Security
- API Integration
- Contributing
- License
CirrusSync is a secure, cross-platform cloud storage application that prioritizes user privacy through end-to-end encryption. Built with Tauri, it combines the performance of Rust with the flexibility of modern web technologies to deliver a native desktop experience.
- Zero-Knowledge Architecture: Your files are encrypted before they leave your device
- Cross-Platform: Native desktop app for Windows, macOS, and Linux
- Modern UI: Clean, responsive interface with dark/light theme support
- Secure Sharing: Share files and folders with advanced permission controls
- Offline Access: Access your files even when offline
- Performance: Built with Rust for optimal speed and memory efficiency
- π End-to-End Encryption - AES-256-GCM encryption with client-side key derivation
- π File Management - Upload, download, organize files and folders
- ποΈ Trash System - Safely delete and restore files
- π Secure Sharing - Share files with expiration dates and access controls
- π₯ Collaboration - Share files and folders with other users
- π¨ Dark/Light Theme - Seamless theme switching
- π± Responsive Design - Optimized for different screen sizes
- β‘ Real-time Updates - Instant file synchronization
- π Storage Analytics - Monitor storage usage and file statistics
- π― Drag & Drop - Intuitive file upload experience
- π BIP39 Seed Phrases - Secure key generation and recovery
- π‘οΈ Zero-Knowledge - Server never sees your unencrypted data
- π Secure Authentication - Multi-factor authentication support
- π§ Email Verification - Secure account verification process
- π Password Recovery - Secure password reset functionality
- π³ Stripe Integration - Secure payment processing
- π Plugin Architecture - Extensible with Tauri plugins
- π Cross-Origin Security - Comprehensive CSP and CORS policies
- React 19.1.0 - Modern React with latest features
- TypeScript - Type-safe JavaScript development
- Vite - Fast build tool and dev server
- Tailwind CSS 4.0 - Utility-first CSS framework
- Framer Motion - Smooth animations and transitions
- React Router - Client-side routing
- Lucide React - Beautiful icon library
- Tauri 2.0 - Rust-based desktop app framework
- Rust - Systems programming language for performance
- Tokio - Asynchronous runtime for Rust
- Serde - Serialization/deserialization framework
- Reqwest - HTTP client for Rust
- AES-GCM - Authenticated encryption
- OpenPGP - Public key cryptography
- Argon2 - Password hashing
- BIP39 - Mnemonic seed phrase generation
- SHA2 - Cryptographic hash functions
- Stripe - Payment processing
- Custom API - Backend services for sync and sharing
Before you begin, ensure you have the following installed:
- Microsoft Visual Studio C++ Build Tools or Visual Studio 2022
- Windows 10 SDK
- Xcode Command Line Tools
xcode-select --installsudo apt update
sudo apt install libwebkit2gtk-4.0-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-devsudo dnf install webkit2gtk4.0-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-devel- Clone the repository
git clone https://github.com/yourusername/CirrusSync.git
cd CirrusSync- Install dependencies
npm install- Install Rust dependencies
cd src-tauri
cargo fetch
cd ..- Set up environment variables
cp .env.example .env
# Edit .env with your configuration# Start the development server
npm run dev
# Or use Tauri's development command
npm run tauri devThis will:
- Start the Vite development server on
http://localhost:1420 - Launch the Tauri desktop application
- Enable hot-reload for both frontend and backend changes
# Frontend development
npm run dev # Start Vite dev server
npm run build # Build frontend for production
npm run preview # Preview production build
# Tauri commands
npm run tauri dev # Start Tauri development
npm run tauri build # Build production app
npm run tauri info # Show Tauri info- DevTools: Enabled in development mode (
F12to open) - Hot Reload: Automatic reload on file changes
- Type Checking: Real-time TypeScript error checking
- Linting: ESLint integration for code quality
npm run tauri build# Build for Windows
npm run tauri build -- --target x86_64-pc-windows-msvc
# Build for macOS
npm run tauri build -- --target x86_64-apple-darwin
npm run tauri build -- --target aarch64-apple-darwin
# Build for Linux
npm run tauri build -- --target x86_64-unknown-linux-gnuBuilt applications will be available in:
src-tauri/target/release/bundle/- Platform-specific installers (
.msi,.dmg,.deb,.AppImage)
CirrusSync/
βββ public/ # Static assets
βββ src/ # Frontend source code
β βββ components/ # React components
β βββ context/ # React context providers
β βββ hooks/ # Custom React hooks
β βββ pages/ # Page components
β βββ services/ # API services
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
β βββ App.tsx # Main application component
β βββ main.tsx # Application entry point
β βββ global.css # Global styles
βββ src-tauri/ # Tauri backend
β βββ src/ # Rust source code
β βββ icons/ # Application icons
β βββ capabilities/ # Tauri capabilities
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
β βββ build.rs # Build script
βββ package.json # Node.js dependencies
βββ tsconfig.json # TypeScript configuration
βββ vite.config.ts # Vite configuration
βββ tailwind.config.js # Tailwind CSS configuration
src/components/- Reusable UI componentssrc/pages/- Application pages and routessrc/context/- Global state managementsrc/services/- API integration and external servicessrc-tauri/src/- Rust backend logic and native APIs
CirrusSync implements multiple layers of security:
- Client-Side Encryption: All files encrypted before upload
- AES-256-GCM: Industry-standard authenticated encryption
- Key Derivation: Secure key generation using Argon2
- Zero-Knowledge: Server never accesses unencrypted data
- Secure Session Management: JWT-based authentication
- Password Hashing: Argon2 for password storage
- Email Verification: Secure account verification
- Multi-Factor Authentication: Additional security layer
- Content Security Policy: Strict CSP headers
- CORS Protection: Comprehensive cross-origin policies
- Input Validation: Sanitization of all user inputs
- Secure Storage: Encrypted local storage
- Minimal Data Collection: Only essential data is collected
- GDPR Compliant: Respects user privacy rights
- Audit Logs: Comprehensive activity logging
- Data Portability: Export your data anytime
// Configure Stripe
const stripePromise = loadStripe(process.env.STRIPE_PUBLISHABLE_KEY);
// Usage in components
<Elements stripe={stripePromise}>
<PaymentForm />
</Elements>// API service example
import { invoke } from '@tauri-apps/api/tauri';
export const uploadFile = async (file: File) => {
return await invoke('upload_file', { file });
};// Rust backend command
#[tauri::command]
async fn upload_file(file: FileData) -> Result<UploadResponse, String> {
// Implementation
}We welcome contributions to CirrusSync! Please follow these guidelines:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
npm run test npm run tauri build - Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- TypeScript: Follow strict TypeScript patterns
- Rust: Use
cargo fmtandcargo clippy - React: Follow React best practices and hooks patterns
- CSS: Use Tailwind CSS utilities, avoid custom CSS when possible
- Write unit tests for new features
- Test on multiple platforms before submitting
- Ensure security features work correctly
- Verify encryption/decryption processes
- Update README for new features
- Add JSDoc comments for complex functions
- Document API changes
- Include examples for new functionality
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri - For the amazing desktop app framework
- React - For the robust frontend framework
- Rust - For the performance and safety
- Tailwind CSS - For the utility-first CSS framework
- Stripe - For secure payment processing
- Documentation: docs.cirrussync.me
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@cirrussync.me
Website β’ Documentation β’ Source Code