Smart File Organizer is a cross-platform desktop application built with Electron and Python that automates file organization, removes duplicates, and provides analytics. Featuring a cyberpunk-inspired terminal UI, it offers a powerful yet user-friendly way to manage files efficiently.
- File Organization - Organize files by type, date, or size into categorized folders with customizable rules
- Duplicate Removal - Identify and remove duplicate files to save disk space with parallel processing for optimal performance
- Real-Time File Watcher - Automatically organize new files in monitored directories using the watchdog library
- Analytics Dashboard - Visualize file distributions and storage efficiency with interactive Chart.js-powered charts
- File Preview - Preview images, PDFs, and text files directly within the application
- Customizable Categories - Define and modify custom file categories through the Settings tab
- Interactive Help - Access comprehensive help with searchable commands, tutorials, and FAQs
- Cyberpunk UI - Terminal-style interface with matrix background, neon colors, and engaging onboarding animation
- Electron - Cross-platform desktop framework
- HTML/CSS/JavaScript - Core web technologies
- Chart.js - Data visualization library
- pdf.js - PDF rendering engine
- Python 3.8+ - Core processing logic
- watchdog - File system monitoring
- tqdm - Progress bar visualization
- colorama - Terminal color formatting
- shutil/pathlib - File operations and path management
- Node.js - JavaScript runtime
- IPC - Electron-Python communication
- JSON - Configuration and data storage
- Node.js (v16 or higher)
- Python (3.8 or higher)
- npm or yarn
- Git
-
Clone the repository:
git clone https://github.com/yourusername/terminal-file-organizer.git cd terminal-file-organizer -
Install Node.js dependencies:
npm install
-
Install Python dependencies:
pip install -r requirements.txt
-
Run the application:
npm start
Create a requirements.txt file with the following dependencies:
colorama==0.4.6
tqdm==4.66.1
watchdog==3.0.0
- Select Directory - Use the "Browse" button or enter a path to choose a directory
- Choose Organization Mode - Select from Type, Date, or Size in the dropdown menu
- Configure Duplicate Handling - Check the "Remove Duplicates" option if desired
- Run Organization - Click "Organize Files" to start the process
- Monitor Directories - Use "Start Watcher" to automatically organize new files in real-time
- Analytics - Visit the Analytics tab to view file distribution charts and storage insights
- Settings - Customize file categories and organization rules in the Settings tab
- Help System - Access the Help tab or type
helpfor commands and tutorials - File Preview - Select any file to preview its contents within the application
terminal-file-organizer/
├── client/
│ ├── src/
│ │ ├── renderer/
│ │ │ ├── index.html # Main application HTML
│ │ │ ├── styles.css # Application styling
│ │ │ ├── js/
│ │ │ ├── renderer.js # Main renderer process
│ │ │
│ │ │
│ │ │
│ ├── main.js # Electron main process
│ ├── assets/ # Images and UI assets
| |── package.json # Project metadata and dependencies
├── server/
│ ├── __main__.py # Python entry point
│ ├── config.py # Configuration handling
│ ├── duplicate_remover.py # Duplicate file detection/removal
│ ├── organizers.py # File organization algorithms
│ ├── ui.py # Terminal UI components
│ ├── utils.py # Utility functions
│ ├── watcher.py # Real-time file monitoring
├── userData/
│ ├── settings.json # User settings
│ ├── analytics.json # Analytics data
├── requirements.txt # Python dependencies
└── README.md # Documentation
This project demonstrates several technical achievements:
- Hybrid Architecture - Seamlessly integrates Electron's UI capabilities with Python's powerful file processing through efficient IPC communication
- Parallel Processing - Implements multi-threading for duplicate detection and file operations, significantly improving performance on large directories
- Reactive UI - Provides real-time feedback during operations with progress bars and status updates
- Data Visualization - Uses Chart.js to transform file analysis into actionable insights
- Persistent Configuration - Maintains user preferences and custom rules across sessions
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request