Skip to content

CosmoProgrammer/CRUxDrive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRUxDrive

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.

Features

  • 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.

Tech Stack

Storage: , VoiDB

Frontend:

Backend:

Setup

Cloning the repository

git clone https://github.com/CosmoProgrammer/CRUxDrive.git
cd CruxDrive

Setting up backend

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>

Setting up frontend

Navigate to the client folder.

npm install
npm start

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published