- Secure Authentication - User registration and login with password hashing
- Email Verification - Verify email addresses to ensure legitimate users
- Password Recovery - Reset forgotten passwords via email
- Profile Management - Customizable user profiles with avatar support
- Admin Dashboard - Comprehensive admin controls for user and system management
- Easy Upload - Drag-and-drop or click to upload files
- File Bundles - Share multiple files with a single link
- Quick Share Links - Generate shareable links instantly
- File Preview - Preview images and common file types
- Download Tracking - Monitor file access and downloads
- Expiration Control - Set automatic file deletion after a period
- Responsive Design - Works seamlessly on desktop, tablet, and mobile
- Progressive Web App (PWA) - Install as a native app on any device
- Dark Mode Ready - Eye-friendly interface
- Intuitive UI - Clean and simple user experience
- Storage Management - Configure user and server storage limits
- User Controls - Manage user accounts and permissions
- Email Configuration - Set up SMTP for notifications
- System Settings - Customize app name, file size limits, and more
- Python 3.8 or higher
- pip (Python package installer)
-
Clone the repository
git clone https://github.com/yourusername/fileshare.git cd fileshare -
Install dependencies
pip install -r requirements.txt
-
Configure settings (Optional)
cp settings.example.json settings.json # Edit settings.json with your configuration -
Run the application
python flask_app.py
-
Access the app
Open your browser and navigate to
http://localhost:5000
To enable email features (verification, password reset), create a settings.json file:
{
"app_name": "FileShare Pro",
"registration_open": true,
"max_file_size_mb": 40,
"max_files_per_bundle": 5,
"user_storage_limit_mb": 50,
"total_server_storage_mb": 500,
"email": {
"MAIL_SERVER": "smtp.gmail.com",
"MAIL_PORT": 587,
"MAIL_USE_TLS": true,
"MAIL_USERNAME": "your-email@gmail.com",
"MAIL_PASSWORD": "your-app-password",
"MAIL_DEFAULT_SENDER": "your-email@gmail.com"
}
}You can configure storage limits in settings.json:
max_file_size_mb- Maximum size per file uploaduser_storage_limit_mb- Storage quota per usertotal_server_storage_mb- Total server storage limit
| Technology | Purpose |
|---|---|
| Flask | Web framework |
| Flask-Session | Server-side session management |
| Flask-Mail | Email functionality |
| Pillow | Image processing |
| Werkzeug | Security utilities |
FileShare/
βββ flask_app.py # Main application file
βββ requirements.txt # Python dependencies
βββ settings.json # App configuration (create from example)
βββ settings.example.json # Example settings file
βββ generate_icons.py # PWA icon generator
βββ static/
β βββ manifest.json # PWA manifest
β βββ service-worker.js # Service worker for PWA
β βββ icons/ # App icons
βββ templates/ # HTML templates
β βββ index.html # Main upload page
β βββ login.html # Login page
β βββ register.html # Registration page
β βββ profile.html # User profile
β βββ admin_dashboard.html # Admin panel
β βββ ...
βββ uploads/ # User uploaded files (auto-created)
βββ profile_pictures/ # User avatars (auto-created)
βββ flask_session/ # Session data (auto-created)
- Password Hashing - Secure password storage
- Session Management - Server-side sessions with expiration
- CSRF Protection - Prevent cross-site request forgery
- File Validation - Sanitize uploaded files
- Email Verification - Confirm user identities
- Secure Tokens - Time-limited tokens for password reset
- Log in or register an account
- Click "Choose Files" or drag files to the upload area
- Set expiration time (optional)
- Click "Upload"
- Share the generated link
- Upload multiple files
- Select files to bundle
- Generate a bundle link
- Share with recipients
- Access admin dashboard at
/admin - Manage users and their storage
- Configure system settings
- Monitor file uploads and storage usage
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the GNU GENERAL PUBLIC License - see the LICENSE file for details.
If you encounter any issues or have questions, please:
- Open an issue on GitHub
- Check existing issues for solutions
- Review the documentation
- Built with Flask
- Icons from custom SVG designs
- Inspired by modern file sharing platforms







