Skip to content

A project to explore file compression algorithms, TUI development and a way to learn Go, cleverly framed as a DSA course mini-project.

Notifications You must be signed in to change notification settings

Noelithub77/zippy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zippy - Terminal File Compressor

Project Overview:-

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.

landing encryption decryption

Getting Started:-

Prerequisites

  • Go 1.24.5 or higher

Installation & Build

# Install dependencies
go mod tidy

# Build the executable
go build -o zippy.exe ./cmd/zippy

# Run the application
./zippy.exe

or use make commands in ./Makefile

Development Setup

Run without buildin

go run ./cmd/zippy

Usage Guide:-

CLI Commands

# 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

TUI Navigation

  • 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

🛠 Development

Project Structure

  • /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

Key Features

  • 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

About

A project to explore file compression algorithms, TUI development and a way to learn Go, cleverly framed as a DSA course mini-project.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •