A comprehensive cloud storage management application that allows users to connect and manage multiple cloud storage services (Google Drive, OneDrive, Dropbox, MEGA) from a single unified interface.
- Multi-Cloud Integration: Connect and manage multiple cloud storage services
- Unified File Management: Browse, organize, and manage files across different cloud providers
- User Authentication: Secure login and registration system
- File Organization: Create folders, categorize files, and organize content
- Search Functionality: Search across all connected drives
- File Sharing: Share files and folders with other users
- Recycle Bin: Recover deleted files
- Modern UI: Beautiful, responsive interface built with React and Tailwind CSS
- Real-time Updates: Live synchronization with cloud storage services
Dashboard view:
More screenshots can be found in the screenshots folder.
- React 18 - UI framework
- TypeScript - Type safety and better development experience
- Vite - Build tool and development server
- React Router DOM - Client-side routing
- Tailwind CSS - Utility-first CSS framework
- Framer Motion - Animation library
- React Icons - Icon library
- Axios - HTTP client for API requests
- React Toastify - Toast notifications
- React Dropzone - File upload handling
- Chart.js & React-Chartjs-2 - Data visualization
- LocalForage - Local storage management
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - NoSQL database with Mongoose ODM
- JWT - Authentication tokens
- bcrypt - Password hashing
- Google APIs - Google Drive integration
- Multer - File upload middleware
- CORS - Cross-origin resource sharing
- dotenv - Environment variable management
all-drive/
βββ client/ # Frontend React application
β βββ public/ # Static assets
β β βββ icons/ # SVG icons for drives and file types
β β βββ react.svg
β β βββ components/ # Reusable React components
β β β βββ shared/ # Shared components
β β β β βββ cards/ # Card components for drives and files
β β β β βββ Navbar.tsx # Navigation bar
β β β β βββ SidebarLeft.tsx # Left sidebar
β β β β βββ SidebarRight.tsx # Right sidebar
β β β βββ Button.tsx # Button component
β β β βββ Input.tsx # Input component
β β β βββ Layout.tsx # Main layout wrapper
β β β βββ modal/ # Modal components
β β βββ context/ # React context providers
β β β βββ auth-context.tsx # Authentication context
β β β βββ modal-context.tsx # Modal state management
β β βββ data/ # Static data and mock files
β β β βββ static/mock/ # Mock data for development
β β βββ libs/ # Utility libraries
β β β βββ helpers/ # Helper functions
β β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Page components
β β β βββ Dashboard.tsx # Main dashboard
β β β βββ Login.tsx # Login page
β β β βββ Register.tsx # Registration page
β β β βββ MyFolders.tsx # Folders management
β β β βββ AddDrive.tsx # Add new drive
β β β βββ SharedFiles.tsx # Shared files view
β β β βββ RecycleBin.tsx # Recycle bin
β β β βββ Search.tsx # Search functionality
β β βββ types/ # TypeScript type definitions
β β β βββ drives.ts # Drive-related types
β β β βββ folder.ts # Folder types
β β β βββ items.ts # File item types
β β βββ App.tsx # Main App component
β β βββ main.tsx # Application entry point
β β βββ router.tsx # Routing configuration
β βββ package.json # Frontend dependencies
β βββ tailwind.config.cjs # Tailwind CSS configuration
β βββ tsconfig.json # TypeScript configuration
β βββ vite.config.ts # Vite configuration
βββ server/ # Backend Node.js application
β βββ middlewares/ # Express middlewares
β β βββ auth.js # Authentication middleware
β β βββ upload.js # File upload middleware
β βββ models/ # Database models
β β βββ user.js # User model
β β βββ drive.js # Drive model
β βββ routes/ # API routes
β β βββ auth.js # Authentication routes
β β βββ drive.js # Drive management routes
β β βββ user-drive.js # User-drive relationship routes
β βββ app.js # Main server file
β βββ google-drive-routes.js # Google Drive integration
β βββ db.sql # Database schema
β βββ init-db.js # Database initialization
β βββ package.json # Backend dependencies
βββ docs/ # Documentation
β βββ Diagrams/ # UML diagrams and use cases
β βββ Chapters/ # Project documentation chapters
βββ README.md # This file
- Node.js (v16 or higher)
- npm or yarn
- MongoDB database
- Google Cloud Console account (for Google Drive integration)
-
Clone the repository
git clone <repository-url> cd all-drive
-
Install frontend dependencies
cd client npm install -
Install backend dependencies
cd ../server npm install -
Environment Setup
Create a
.envfile in the server directory:# Server Configuration PORT=3000 # MongoDB Connection MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/all-drive # JWT Configuration ACCESS_TOKEN_SECRET=your_jwt_secret_key # Google Drive API Configuration GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GOOGLE_SCOPE=https://www.googleapis.com/auth/drive GOOGLE_REDIRECT_URL=http://localhost:3000/auth
-
Database Setup
cd server node init-db.js
-
Start the backend server
cd server npm run devThe server will start on
http://localhost:3000 -
Start the frontend development server
cd client npm run devThe client will start on
http://localhost:9000 -
Build for production
cd client npm run build
POST /auth/register- User registrationPOST /auth/login- User login
GET /- Google Drive OAuth initiationGET /auth- Google Drive OAuth callbackPOST /user-drive/getFolders- Get user foldersPOST /drive/add- Add new drive connection
The application supports multiple cloud storage providers:
- Google Drive: Full integration with Google Drive API
- OneDrive: Microsoft OneDrive integration
- Dropbox: Dropbox API integration
- MEGA: MEGA cloud storage integration
- Browse files and folders across all connected drives
- Upload, download, and delete files
- Create new folders and organize content
- Search functionality across all drives
- File sharing with other users
- Modern, responsive design with Tailwind CSS
- Smooth animations with Framer Motion
- Toast notifications for user feedback
- Loading states and error handling
- Mobile-friendly interface
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.
For support and questions, please open an issue in the repository or contact the development team.
