GitHunt
MD

mdahamshi/top-file-upload

File upload TOP project.

๐Ÿ“‚ SaraFiles

SaraFiles is a stripped-down personal storage service, inspired by Google Drive.
It allows users to securely authenticate, create folders, upload files, and share content.
The project is built with a React frontend and a Node.js + Express + Prisma backend.

๐ŸŸข Live Demo: https://link.sarawebs.com/top-files


๐Ÿš€ Tech Stack

  • Frontend: React (Vite/CRA), TailwindCSS
  • Backend: Node.js, Express
  • Database: PostgreSQL (via Prisma ORM)
  • Authentication: Passport.js (session-based)
  • File Uploads: Multer (filesystem for local dev, optional cloud storage for production)
  • Storage Options: Cloudinary Storage (recommended for production)

โœจ Features

  • ๐Ÿ” Session-based authentication using Passport.js (persisted in DB via Prisma session store)
  • ๐Ÿ“ Folder management (CRUD for folders)
  • ๐Ÿ“ค File uploads with Multer
  • ๐Ÿ“‘ File details view (name, size, upload time)
  • โฌ‡๏ธ Download files directly from the app
  • โ˜๏ธ Cloud storage support (store URLs in DB, e.g. Cloudinary or Supabase)
  • ๐Ÿ”— Share folders with public links that expire after a set duration (extra credit)

๐Ÿ“‚ Project Structure

SaraFiles/
โ”‚
โ”œโ”€โ”€ client/                 # React frontend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ package.json
โ”‚
โ”œโ”€โ”€ server/                 # Express + Prisma backend
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ routes/         # Express routes
โ”‚   โ”‚   โ”œโ”€โ”€ middleware/     # Multer, auth, etc.
โ”‚   โ”‚   โ”œโ”€โ”€ prisma/         # Prisma schema
โ”‚   โ”‚   โ””โ”€โ”€ app.js
โ”‚   โ”œโ”€โ”€ package.json
โ”‚
โ””โ”€โ”€ README.md

โš™๏ธ Setup & Installation

1. Clone repo

git clone https://github.com/mdahamshi/top-file-upload.git
cd top-file-upload

2. Backend (server)

cd server
cp .env.example .env
npm install
npx prisma migrate dev
npm run dev

3. Frontend (client)

cd client
npm install
npm run dev

๐Ÿ”‘ Environment Variables

Backend .env file:

DATABASE_URL="postgresql://user:password@localhost:5432/sarafiles"
SESSION_SECRET="supersecretkey"
CLOUDINARY_URL="your_cloudinary_url" # or Supabase storage keys

๐Ÿ“ก API Endpoints

  • POST /auth/login โ€“ Login user
  • POST /auth/register โ€“ Register user
  • POST /files/upload โ€“ Upload file (requires auth)
  • GET /files/:id โ€“ Get file details
  • GET /files/:id/download โ€“ Download file
  • POST /folders โ€“ Create folder
  • GET /folders/:id โ€“ View folder contents
  • POST /share โ€“ Generate shareable link

๐Ÿ› ๏ธ Development Notes

  • Local dev saves files to filesystem using Multer.
  • Production deployment should use cloud storage (Cloudinary / Supabase).
  • Prisma migrations handle schema changes.

๐Ÿšง Roadmap

  • Authentication
  • File upload (local)
  • Folder CRUD
  • File metadata & download
  • Cloud storage integration
  • Public folder sharing with expiring links
  • UI polish (React)

๐Ÿ“ธ Screenshots

Screenshot
Screenshot


๐Ÿ“œ License

MIT License ยฉ 2025 Mohammad Dahamsheh