Zippy is a terminal-based file compression tool built in Go using LZ77 sliding window compression and Huffman coding algorithms. It features a beautiful TUI (Terminal User Interface) built with Charm Bracelet libraries and provides both CLI and GUI interfaces for file compression/decompression.
- Go 1.24.5 or higher
# Install dependencies
go mod tidy
# Build the executable
go build -o zippy.exe ./cmd/zippy
# Run the application
./zippy.exeor use make commands in ./Makefile
go run ./cmd/zippy# Launch TUI (default)
./zippy.exe
# Compress single file
./zippy.exe pack file.txt archive.gz
# Decompress archive
./zippy.exe unpack archive.gz ./output/
# Launch TUI in specific directory
./zippy.exe /path/to/directory- Home Screen: Vertical menu with Encryption/Decryption/Quit
- Encryption Mode: File browser + archive settings + compression
- Decryption Mode: .gz file browser + output settings + decompression
- Keyboard: Tab/Shift+Tab for focus, ↑↓/jk for navigation, Enter for action
/cmd/zippy/- Application entry point/internal/commands/- CLI command handlers/internal/compression/- LZ77 + Huffman compression engine/internal/ui/- Terminal User Interface/internal/fs/- File system utilities/internal/config/- Configuration management/internal/logger/- Process logging and visualization
- LZ77 Compression: Sliding window algorithm for finding repeated patterns
- Huffman Coding: Variable-length encoding for optimal bit usage
- Beautiful TUI: Charm Bracelet-based interface
- Cross-platform: Works on Windows, Linux, macOS
- Standard Format: .gz archives with custom LZ77+Huffman engine
- Dual Engine: Choose between custom LZ77+Huffman or standard gzip compression


