This project is a comprehensive file-sharing and collaboration platform, similar to Google Drive. Built with Deno for the backend and React + TypeScript for the frontend, it provides secure, scalable, and user-friendly functionality for storing, sharing, and managing files.
- User Authentication: Google OAuth for logging in, JWT-based authentication for secure sessions.
- File Storage and Management: Upload and organize files/folders securely in AWS S3. Metadata and additional data are stored in a custom NoSQL library, VoiDB.
- Real-time file and folder operations with instant UI updates via TanStack Query.
- Customizable access control, allowing users to password-protect files/folders.
- File Sharing: Share files and folders with other users with automated email notifications using Nodemailer.
- Groups: Users can create public or private groups with independent, customizable file systems. Public groups are accessible to all users, while private groups can be selectively shared. Users can join/leave groups and manage files within group-based file systems.
- Search and Filter: Fuzzy search with Fuse.js across personal, shared, and group files. Filters by file type, last modified date, and size.
- Bookmarks: Bookmark frequently accessed files/folders for quick retrieval in a different view.
git clone https://github.com/CosmoProgrammer/CRUxDrive.git
cd CruxDrive
Deno 2.0 sets up dependencies automatically, but since VoiDB requires the node modules folder, the extra flag is required. Alternatively, you can add { "nodeModulesDir": "auto" }
to the configuration file.
deno run --node-modules-dir=auto main.ts
Allow all required permissions. Run this in the server folder.
You require the following environment variables.
PORT=8000
GOOGLE_CLIENT_ID=<id>
JWT_SECRET=<secret>
BUCKET=cruxdrive
accessKeyId=<aws access ky>
secretAccessKey=<aws secrect access key>
email=cruxdrive.notification@gmail.com
password=<app password of the email for nodemailer>
Navigate to the client folder.
npm install
npm start