You control the data, you have access, you own the cloud (up to 5GB free on the Firebase Spark plan).
🔒 Privacy: Access protected by a unique "Space Name" (acts as a password).
📂 Folders: Create directory structures to organize files.
🚀 Smart Upload: Drag & Drop support, multi-file queuing.
📦 Batch Download (ZIP): Download multiple files at once as a generated .zip archive (client-side compression).
📱 Mobile First: Optimized specifically for touch devices (long-press to select/CTRL+LMB on desktop).
👀 Media Preview: Built-in lightbox for images and video player.
📊 Quota Manager: Visual indicator of your storage usage.
🔗 Sharing: Generate direct download links.
This project is "Serverless". You only need a free Google account and a static hosting provider (e.g., Vercel, Netlify, or Firebase Hosting).
Go to Firebase Console and create a project.
Authentication: Enable Anonymous sign-in.
Firestore Database: Create a database in production mode.
Storage: Create a bucket for files.
Security Rules: Set rules for Firestore and Storage to:
allow read, write: if request.auth != null;
To allow the app to download files for zipping, you must configure CORS on your Google Cloud Storage bucket.
Open Google Cloud Shell.
Create a configuration file:
cat > cors.json <<EOF
[
{
"origin": ["*"],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
EOF
Apply it to your bucket (replace your-project-id with your actual bucket name):
gsutil cors set cors.json gs://your-project-id.firebasestorage.app
Clone the repository:
git clone [https://github.com/hsr88/my-private-drive.git](https://github.com/hsr88/my-private-drive.git)
cd my-private-drive
Install dependencies (includes jszip for archiving):
npm install
VITE_API_KEY=your_api_key
VITE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_PROJECT_ID=your-project
VITE_STORAGE_BUCKET=your-project.firebasestorage.app
VITE_MESSAGING_SENDER_ID=123456789
VITE_APP_ID=1:123456789:web:abcdef
npm run dev