gitmyhub

9drive

TypeScript ★ 1.2k updated 24d ago

9Drive is a storage gateway web app for connecting multiple Google Drive accounts into one virtual storage dashboard. Users can connect Google Drive accounts, track quota, upload files, organize files with virtual folders, preview files, and let the backend route uploads to the Drive account with enough free space.

A web dashboard that links multiple Google Drive accounts and automatically spreads file uploads across whichever account has free space.

TypeScriptReactViteExpressPrismaMySQLsetup: hardcomplexity 4/5

9Drive is a web application that lets you link multiple Google Drive accounts and manage all of them from a single dashboard. Instead of switching between accounts to find free space, the app automatically routes each file upload to whichever connected account has enough room. Files are streamed directly to Google Drive and are never stored on the server running the app.

The frontend is built with React and Vite, the backend uses Express and TypeScript, and user data is stored in a MySQL database managed through Prisma. You can register with an email and password, or sign in with Google. Signing in with Google automatically connects your first Drive account to the app, and you can add more Drive accounts later through the settings page.

Once accounts are connected, the dashboard shows a summary of storage quota across all of them. You can upload files, organize them into virtual folders, preview files in the browser, and perform standard file operations like rename, move, and delete. There is also a manual sync feature that reads your actual Google Drive folder and updates the app's database to match.

Setting up the project requires a Google Cloud project with the Google Drive API enabled, an OAuth consent screen configured, and OAuth credentials (client ID and client secret) generated for a web application. The README walks through each step of the Google Cloud Console setup in detail. Local development runs the backend on port 4000 and the frontend on port 5173. A Docker Compose configuration is also included if you prefer to run MySQL, the backend, and the frontend together as containers.

The project is open source with a live demo hosted at 9drive.zenhosta.com.

Where it fits