Faeweel is a powerful desktop application that provides continuous file transfer monitoring with real-time HDMI display output. Built with Electron, it offers a flywheel-based architecture for seamless, automated file synchronization with visual feedback on external displays.
- Automated File Transfer: Continuously monitors source folders and automatically transfers files to destination
- Real-time Monitoring: Watch folder changes in real-time with instant file detection
- HDMI Display Output: Project transfer statistics and activity to external displays via HDMI
- Multi-Display Support: Choose from any connected display for output visualization
- Transfer Queue Management: Efficiently handles multiple file transfers with queue management
- Statistics Dashboard: Comprehensive real-time statistics including:
- Files transferred count
- Total bytes transferred
- Transfer rate (bytes/second)
- Uptime tracking
- Queue length
- Error monitoring
- Clean, Modern Design: Intuitive interface with responsive layout
- Live Activity Log: Real-time logging of all transfer activities
- Folder Browser: Easy selection of source and destination folders
- Transfer Controls: Start/stop transfers with simple button controls
- Display Manager: Easy control of HDMI output windows
- Full-screen Visualization: Beautiful gradient-based display for external monitors
- Real-time Stats: Live updating statistics on the external display
- Recent Transfers List: Shows the last 5 transferred files with timestamps
- Status Indicators: Visual indicators for active/idle transfer states
- Responsive Design: Adapts to any display resolution
- Node.js (v16 or higher)
- npm or yarn
- Operating System: Windows, macOS, or Linux
-
Clone the repository
git clone https://github.com/DataWeX/Faeweel.git cd Faeweel -
Install dependencies
npm install
-
Run the application
npm start
-
Run in development mode (with DevTools)
npm run dev
Build standalone executables for your platform:
npm run buildBuilt applications will be available in the dist/ directory.
-
Launch Faeweel
- Start the application using
npm startor the built executable
- Start the application using
-
Configure Transfer
- Click "Browse" next to "Source Folder" to select the folder to monitor
- Click "Browse" next to "Destination Folder" to select where files should be transferred
- Check/uncheck "Transfer existing files" based on your needs:
- β Checked: Transfers all existing files immediately, then monitors for new ones
- β Unchecked: Only transfers files added after starting the transfer
-
Start Transfer
- Click "Start Transfer" button
- Monitor progress in the statistics panel and activity log
- Files are automatically transferred as they're detected
-
Stop Transfer
- Click "Stop Transfer" when done
- All pending transfers in the queue will be completed
-
Connect External Display
- Connect a second monitor or TV via HDMI or other display connection
-
Select Display
- Click "Refresh" to detect all available displays
- Choose your target display from the dropdown menu
- Primary display will be marked with "(Primary)"
-
Open Display Window
- Click "Open on Display" to launch the visualization window
- The window will open in full-screen on the selected display
- Real-time statistics will appear automatically
-
Close Display
- Click "Close Display" to close the external display window
- Files Transferred: Total number of files successfully transferred
- Data Transferred: Total amount of data moved (in bytes, KB, MB, GB)
- Transfer Rate: Current data transfer speed
- Uptime: How long the transfer has been running
- Queue Length: Number of files waiting to be transferred
- Errors: Count of any transfer failures
- Real-time log of all transfer activities
- Color-coded entries:
- π’ Green: Successful transfers
- π΄ Red: Errors
- π΅ Blue: Informational messages
- π‘ Yellow: Warnings
- Shows timestamps, file names, and file sizes
- Automatically maintains last 100 entries
Faeweel uses a "flywheel" architecture for continuous, efficient file transfers:
βββββββββββββββββββββββββββββββββββββββββββ
β Source Folder Watch β
β (File System Monitor) β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Transfer Queue β
β (Continuous Processing Loop) β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β File Transfer Engine β
β (Copy with Progress Tracking) β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Destination Folder β
β (Organized File Structure) β
βββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Statistics & Display Updates β
β (Main UI + HDMI Display Output) β
βββββββββββββββββββββββββββββββββββββββββββ
- Electron: Cross-platform desktop application framework
- Node.js: Backend runtime for file operations
- Chokidar: Efficient file system watching
- HTML/CSS/JavaScript: Modern web technologies for UI
- IPC (Inter-Process Communication): Communication between main and renderer processes
Faeweel/
βββ src/
β βββ main.js # Main Electron process
β βββ fileTransfer.js # File transfer logic
β βββ hdmiDisplay.js # Display management
β βββ index.html # Main window UI
β βββ renderer.js # Main window logic
β βββ styles.css # Main window styles
β βββ hdmiDisplay.html # HDMI display UI
β βββ hdmiRenderer.js # HDMI display logic
βββ package.json # Project configuration
βββ .gitignore # Git ignore rules
βββ README.md # This file
- Source Folder: The folder to monitor for files
- Destination Folder: Where files will be copied
- Transfer Existing: Whether to transfer files that already exist in source
Edit package.json to customize:
- Application name and version
- Build targets for different platforms
- Electron version
Files not transferring?
- Ensure both source and destination folders are selected
- Check that you have read permissions for source folder
- Check that you have write permissions for destination folder
- Look for errors in the activity log
Display not showing?
- Ensure your second display is properly connected and detected by your OS
- Click "Refresh" to reload the display list
- Try selecting a different display
Application won't start?
- Ensure Node.js is installed:
node --version - Reinstall dependencies:
npm install - Check console for error messages
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
MIT License - See LICENSE file for details
- Media Production: Automatically sync rendered video files to storage servers
- Data Backup: Continuous backup of important files to secondary locations
- Content Distribution: Transfer files to multiple display stations
- Live Events: Monitor file transfers on external displays during events
- Development: Sync build outputs to deployment folders
- Photography: Auto-transfer photos from camera import folders
Future enhancements planned:
- Network transfer support (FTP, SFTP, SMB)
- File filtering by type/size/pattern
- Scheduled transfers
- Email notifications on completion/errors
- Cloud storage integration
- Transfer history and reporting
- Compression options
- Bandwidth throttling
- Multiple source/destination pairs
For issues, questions, or contributions:
- Open an issue on GitHub
- Check existing documentation
- Review closed issues for similar problems
Built with β€οΈ using Electron and Node.js
Faeweel - Where continuous file transfer meets visual excellence