Skip to content

onkar0127/File-Sharing-System

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

172 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

File Sharing System Banner

πŸ“ File Sharing System

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.


πŸ› οΈ Tech Stack

React TypeScript Vite TailwindCSS Node.js Express MongoDB Redis


✨ Features

πŸ“€ File Management

  • Chunked and resumable uploads
  • File versioning support
  • Favorites and custom tags
  • Bulk file operations
  • Password-protected files

πŸ”— Sharing System

  • Secure share links
  • Expiration controls
  • Download limits
  • Bandwidth quotas
  • Public share pages

πŸ”” Notifications

  • Real-time notifications using Socket.IO
  • Email notifications
  • Expiry reminders
  • Notification center

πŸ“Š Analytics

  • File view and download tracking
  • Trending files
  • Engagement metrics
  • File type statistics

πŸ”’ Security

  • JWT authentication
  • Password hashing with bcrypt
  • Rate limiting
  • Input validation
  • CORS protection

πŸ“‚ Project Structure

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


πŸ”„ Application Workflow

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]
Loading

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.


πŸš€ Quick Start

Prerequisites

  • Node.js 20+
  • MongoDB
  • Redis (optional)
  • Cloudinary Account

1. Clone the Repository

git clone https://github.com/<yourusername>/File-Sharing-System.git
cd File-Sharing-System

2. Setup the Backend

cd server
npm install
cp .env.example .env

Configure your environment variables in .env.

Start the server:

npm run dev

Backend runs on:

http://localhost:5000

3. Setup the Frontend

cd ../client
npm install
npm run dev

Frontend runs on:

http://localhost:5173

πŸ§ͺ Testing

Backend

cd server
npm test

Frontend

cd client
npm test

🌐 Deployment

Frontend

Vercel

Production Build

cd client
npm run build

🀝 Contributing

Contributions 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.

Contribution Workflow

# 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-feature

Open a Pull Request once your changes are ready.


πŸ‘¨β€πŸ’» Author

Anchal Singh
Full Stack Developer


Made with ❀️ by contributors

About

Secure full-stack file sharing system with authentication, private links, and controlled file access.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 77.2%
  • JavaScript 22.1%
  • Other 0.7%