A full-stack file sharing platform that enables users to upload, manage, share, and track files securely. Built with modern web technologies and designed for scalability, security, and a smooth user experience.
- Chunked and resumable uploads
- File versioning support
- Favorites and custom tags
- Bulk file operations
- Password-protected files
- Secure share links
- Expiration controls
- Download limits
- Bandwidth quotas
- Public share pages
- Real-time notifications using Socket.IO
- Email notifications
- Expiry reminders
- Notification center
- File view and download tracking
- Trending files
- Engagement metrics
- File type statistics
- JWT authentication
- Password hashing with bcrypt
- Rate limiting
- Input validation
- CORS protection
File-Sharing-System/
βββ client/ # React + Vite frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ Authentication/ # Login, Register, User Authentication
β β β βββ Home/ # Dashboard, File Manager, Analytics
β β β βββ Share/ # Public sharing and download pages
β β βββ services/ # API services and business logic
β β βββ utils/ # Helper functions and utilities
β β βββ App.tsx # Main application component
β βββ package.json
β βββ vite.config.ts
β
βββ server/ # Express.js backend API
β βββ config/ # Database, Redis, Cloudinary configs
β βββ controllers/ # Request handlers and business logic
β βββ middleware/ # Authentication and validation middleware
β βββ models/ # MongoDB/Mongoose schemas
β βββ routes/ # API route definitions
β βββ jobs/ # Scheduled background jobs
β βββ utils/ # Helper utilities and services
β βββ tests/ # Backend test suites
β βββ index.js # Server entry point
β βββ package.json
β
βββ docs/ # Project documentation and guides
βββ .github/ # GitHub workflows and repository settings
βββ README.md # Project overview and setup instructions
flowchart TD
U[User] --> F[React Frontend]
F --> A[Authentication]
F --> UP[File Upload]
F --> SH[Share Management]
F --> AN[Analytics Dashboard]
A --> API[Express API]
UP --> API
SH --> API
AN --> API
API --> DB[(MongoDB)]
API --> R[(Redis)]
API --> C[(Cloudinary)]
API --> WS[Socket.IO Server]
WS --> N[Real-Time Notifications]
DB --> M[File Metadata]
C --> FS[File Storage]
SH --> P[Public Share Links]
P --> D[File Downloads]
Overview: Users interact with the React frontend, which communicates with the Express backend for authentication, uploads, sharing, analytics, and notifications. MongoDB stores metadata, Redis handles caching and session management, Cloudinary stores files, and Socket.IO delivers real-time updates.
- Node.js 20+
- MongoDB
- Redis (optional)
- Cloudinary Account
git clone https://github.com/<yourusername>/File-Sharing-System.git
cd File-Sharing-Systemcd server
npm install
cp .env.example .envConfigure your environment variables in .env.
Start the server:
npm run devBackend runs on:
http://localhost:5000
cd ../client
npm install
npm run devFrontend runs on:
http://localhost:5173
cd server
npm testcd client
npm testVercel
cd client
npm run buildContributions are welcome.
Before contributing, please review:
Contributing Guidelines and Code of Conduct for more details.
This project is proud to be part of the Social Summer of Code 2026 (SSOC '26)! We highly encourage contributions to improve the system's features, accessibility, and security.
# Fork the repository
# Clone your fork
git clone <your-fork-url>
# Create a branch
git checkout -b feature/your-feature
# Make changes
# Commit changes
git commit -m "feat: add new feature"
# Push changes
git push origin feature/your-featureOpen a Pull Request once your changes are ready.
Anchal Singh
Full Stack Developer
- GitHub: https://github.com/imanchalsingh
Made with β€οΈ by contributors