A Progressive Web App built with Flask that allows users to securely share files across devices. The app features local authentication and is optimized for mobile access with PWA capabilities.
- 🔐 User Authentication (Login/Register)
- 📱 PWA Support (Install on mobile devices)
- 📂 File Upload/Download
- 🌙 Dark Mode Interface
- 📲 Responsive Design
- 💾 Local File Storage
- 🔄 Service Worker for Offline Capability
- Backend: Flask
- Database: SQLite
- Authentication: Flask-Login
- Frontend: Bootstrap 5 (Dark Theme)
- PWA Features: Service Workers
- File Handling: Werkzeug
- Clone the repository:
git clone https://github.com/tijnndev/file-share-sync.git
cd file-share-sync
- Install dependencies:
pip install -r requirements.txt
- Set environment variables:
export SESSION_SECRET=your_secret_key
- Run the application:
python main.py
The application will be available at http://localhost:5000
- Register a new account or login with existing credentials
- Upload files using the upload button on the dashboard
- View, download, or delete your uploaded files
- Install as PWA on mobile devices for easier access
-
On Android (Chrome):
- Open the website
- Tap the "Add to Home Screen" prompt or menu option
-
On iOS (Safari):
- Open the website
- Tap the share button
- Select "Add to Home Screen"
To set up the development environment:
- Install Python 3.11 or higher
- Install the required packages:
pip install -r requirements.txt
- Run in debug mode:
python main.py
├── app.py # Main application file
├── main.py # Entry point
├── models.py # Database models
├── static/
│ ├── js/
│ │ ├── app.js # Main JavaScript
│ │ └── sw.js # Service Worker
│ └── manifest.json # PWA manifest
├── templates/
│ ├── base.html # Base template
│ ├── login.html # Login page
│ ├── register.html # Registration page
│ └── files.html # File management page
└── uploads/ # File storage directory
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
- Files are stored locally in the
uploads
directory - User passwords are hashed using Werkzeug's security functions
- Session management is handled by Flask-Login
- CSRF protection is enabled
This project is licensed under the MIT License - see the LICENSE file for details.
Tijnndev