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