π A modern, web-based file organization system with a beautiful Vercel-inspired UI
Automatically sort and organize your files into categorized folders with a sleek, user-friendly interface. Built with Flask, modern CSS, and vanilla JavaScript.
- Vercel-inspired design with clean, minimalist aesthetics
- Dark/Light theme toggle with system preference detection
- Smooth animations and transitions throughout the interface
- Fully responsive design that works on all devices
- Interactive category cards with real-time file counts
- 6 Built-in Categories: Images, Documents, Media, Executables, Code, Archives
- 22+ File Extensions supported out of the box
- Custom category management through intuitive settings modal
- Persistent settings saved to JSON file
- Real-time file processing with loading states and animations
- Expandable category sections with smooth animations
- Add/Remove file extensions with visual feedback
- Extension validation and duplicate prevention
- Reset to defaults functionality
- Export/Import settings capability
- REST API endpoints for settings management
- File-based persistence that survives server restarts
- Error handling with user-friendly messages
- Cross-platform compatibility (Windows, macOS, Linux)
- Clean, modular codebase with modern JavaScript
For Windows users, there's now a ready-to-use desktop application available!
π₯ Download from Releases: Go to the Releases section of this repository and download:
File Sorting System Setup 1.0.0.exe
- Professional installer with shortcuts
β¨ Features of the Desktop App:
- Native folder browser with "Browse" button
- No need to type folder paths manually
- Modern desktop interface with system integration
- Runs as a standalone Windows application
If you prefer the web version or want to run on other platforms:
- Python 3.7 or higher
- Modern web browser (Chrome, Firefox, Safari, Edge)
-
Clone the repository
git clone https://github.com/JashanMaan28/Automatic-File-Sorting-System.git cd Automatic-File-Sorting-System
-
Install dependencies
pip install -r requirements.txt
-
Run the application
python app.py
-
Open your browser
Navigate to: http://127.0.0.1:5000
- Launch the application by running
python app.py
- Enter the folder path you want to organize
- Click "Organize Files" to start the sorting process
- Watch the magic happen as files are automatically categorized!
- Click the settings icon (βοΈ) in the top navigation
- Expand any category to view its file extensions
- Add new extensions by typing them in the input field
- Remove extensions by clicking on the extension tags
- Save your changes to persist them across sessions
Category | Extensions | Example Files |
---|---|---|
Images | .jpg , .png , .gif , .svg , .webp |
photos, logos, icons |
Documents | .pdf , .docx , .txt , .csv , .xlsx |
reports, spreadsheets, notes |
Media | .mp3 , .mp4 , .avi , .flac , .mov |
music, videos, audio |
Executables | .exe , .msi , .sh , .bat , .app |
programs, installers, scripts |
Code | .js , .py , .html , .css , .java |
source code, web files |
Archives | .zip , .rar , .7z , .tar.gz , .iso |
compressed files, backups |
Automatic-File-Sorting-System/
βββ π static/
β βββ π css/
β β βββ styles.css # Modern CSS with custom properties
β βββ π Js/
β βββ script.js # Interactive JavaScript functionality
βββ π templates/
β βββ index.html # Main application template
βββ π test_folder/ # Sample files for testing
β βββ sample_photo.jpg
β βββ report.pdf
β βββ music.mp3
β βββ app.js
β βββ backup.zip
β βββ ... (22 test files total)
βββ π screenshots/ # Application screenshots
β βββ main-interface.png
β βββ settings-modal.png
β βββ before-after/
βββ app.py # Flask backend application
βββ imports.py # Python imports and dependencies
βββ settings.json # Persistent user settings
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore rules
βββ LICENSE # MIT License
βββ README.md # This file
Method | Endpoint | Description |
---|---|---|
GET |
/api/categories |
Retrieve current file categories |
POST |
/api/categories |
Update file categories |
POST |
/api/categories/reset |
Reset categories to defaults |
Method | Endpoint | Description |
---|---|---|
GET |
/ |
Main application interface |
POST |
/organize |
Organize files in specified directory |
The project includes a comprehensive test folder with 22 sample files:
# Navigate to the test folder
cd test_folder
# View the test files
ls -la
# Use this path in the application
# Windows: e:\Github Projects\Automatic-File-Sorting-System\test_folder
# macOS/Linux: /path/to/Automatic-File-Sorting-System/test_folder
After running the sorting process on the test folder, you should see:
- β 6 new category folders created
- β 22 files sorted into appropriate categories
- β Clean, organized directory structure
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow PEP 8 for Python code
- Use modern JavaScript (ES6+) features
- Maintain consistent CSS formatting
- Add comments for complex logic
- Write descriptive commit messages
- π New Features: Drag & drop, file preview, batch operations
- π Bug Fixes: Report and fix issues
- π Documentation: Improve README, add code comments
- π¨ UI/UX: Enhance design, add animations
- π§ Performance: Optimize file processing, reduce load times
- Drag & drop file interface
- File preview system
- Undo/Redo functionality
- Batch file operations
- Watch folder monitoring
- Cloud storage integration
- Mobile app companion
- Advanced file rules engine
- Multi-user support
- Analytics dashboard
- Plugin system
- Flask - Python web framework
- Python 3.7+ - Core programming language
- JSON - Settings persistence
- HTML5 - Semantic markup
- CSS3 - Modern styling with custom properties
- Vanilla JavaScript - Interactive functionality
- SVG Icons - Scalable vector graphics
- Vercel-inspired UI - Clean, modern aesthetics
- Inter Font Family - Beautiful typography
- CSS Grid & Flexbox - Responsive layouts
- CSS Animations - Smooth transitions
- Small folders (< 50 files): ~1-2 seconds
- Medium folders (50-200 files): ~3-5 seconds
- Large folders (200+ files): ~5-10 seconds
- Efficient file processing with Python's
pathlib
- Asynchronous UI updates with smooth animations
- Minimal memory footprint with streaming operations
- Fast categorization with optimized extension matching
- Path validation prevents directory traversal
- File extension filtering blocks potentially harmful files
- Safe file operations with proper error handling
- No external dependencies for core functionality
This project is licensed under the MIT License - see the LICENSE file for details.
β What You Can Do (Permissions):
- Use the code for personal or commercial projects.
- Modify the code in any way you like.
- Distribute the code, with or without changes.
- Use it in closed-source or open-source projects.
- License your modified version however you want.
β What You Can't Do (Limitations):
- You must include the original license and copyright notice.
- No warranty is providedβuse the code at your own risk.
- You canβt hold the author liable for any damage or issues caused by the code.
- Vercel - Design inspiration for the modern UI
- Inter Font - Beautiful typography
- Flask Community - Excellent web framework
- Open Source Contributors - Making development possible
- π Documentation: Check this README first
- π¬ Issues: GitHub Issues
- π§ Email: Contact through GitHub profile
- π Star the repo if this project helped you!
Q: Can I add custom file categories? A: Yes! Use the settings modal to add new extensions to existing categories.
Q: Does this work on all operating systems? A: Yes! The system works on Windows, macOS, and Linux.
Q: Are my files safe during sorting? A: Absolutely! Files are moved (not copied), and the system includes error handling.
Q: Can I undo the sorting operation? A: Currently, you would need to manually move files back. An undo feature is planned for v2.0.
Made with β€οΈ by Jashanpreet Singh