A high-performance, feature-rich file compression and extraction utility written in Go, with multiple user interfaces:
- Command-line interface for scripting and power users
- Native GUI built with Fyne for desktop integration
- Web-based UI built with Next.js for browser access
Current features:
- Compress files and directories to ZIP format
- Extract files from ZIP archives
- Progress tracking with ETA and speed information
- Multiple user interfaces (CLI, GUI, Web)
- Drag-and-drop file uploads in GUI and Web interfaces
- Auto-detection of archive types for extraction
- Auto-generated filenames based on the source
- Format selection (ZIP, TAR, GZ, BZ2, XZ)
- Real-time progress visualization
Planned features:
- Support for additional formats (TAR, GZ, BZ2, XZ, 7z)
- Encryption with AES-256
- Archive splitting
- Selective extraction
- Cloud integration
- Smart compression settings based on file types
- Batch processing and compression profiles
- Incremental archiving
- Archive integrity checking
- File preview
- Go 1.17 or higher
- For Native GUI: A working graphics environment (X11, Wayland, macOS, or Windows)
- For W 8000 eb UI: Node.js 18.x or higher and npm/yarn
- Clone the repository:
git clone https://github.com/your-username/file-compressor.git
cd file-compressor
- Build the command-line application:
make build
- Build the GUI application:
make build-gui
- For the Web UI, install dependencies:
cd web-ui
npm install
Compress a file or directory:
./build/file-compressor compress <source> <destination> [format]
Extract an archive:
./build/file-compressor extract <source> <destination>
Run the GUI application:
./build/file-compressor-gui
- Start the API server:
go run ./cmd/api
- Start the Next.js frontend (in a separate terminal):
cd web-ui
npm run dev
- Open your browser and navigate to
http://localhost:3000
Alternatively, you can use the provided script to run both the API server and the web frontend:
./run.sh
cmd/file-compressor
: CLI applicationcmd/gui
: Desktop GUI application (using Fyne)cmd/api
: REST API server for the web interfacepkg/archiver
: Core compression/extraction functionalitypkg/utils
: Utility functions like progress trackingweb-ui
: Next.js-based web interfacebuild
: Compiled executablesuploads
: Temporary storage for uploaded filescompressed
: Storage for compressed output files
To clean up temporary files and build artifacts:
./clean.sh
Run the applications in development mode:
# Run CLI
make run
# Run GUI
make run-gui
# Run Web UI (both API and frontend)
./run.sh
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.