Compresso

A modern, cross-platform compression utility for folder-based archival using Canonical Huffman Coding algorithms. Built with Qt Widgets and C++, Compresso provides efficient lossless compression while preserving complete directory structures.

Overview

Compresso is designed as a specialized folder compression tool that addresses the need for efficient, structure-preserving archival solutions. Unlike traditional archive formats, Compresso applies Canonical Huffman Coding to individual files while maintaining the integrity of nested directory hierarchies.

Key Advantages

User Interface

The application features a clean, intuitive interface designed for seamless user experience across all platforms.

| Home Screen | Folder Selection | |-------------|------------------| | ![Home Screen](https://github.com/user-attachments/assets/99a0edea-2559-42e3-b025-d50f032f8a89) | ![Folder Select](https://github.com/user-attachments/assets/71d0702d-0b33-4603-85da-ac0ba4a172f4) | | Compression Progress | Completed Operation | |---------------------|---------------------| | ![Compressing](https://github.com/user-attachments/assets/3f988e5d-0d94-4b44-a131-187e7bc1772d) | ![Compressed](https://github.com/user-attachments/assets/08f51539-8c7e-40f8-9724-f294e006226f)|

Features

Core Functionality

Performance & Usability

Technical Implementation

Compression Algorithm

  1. File Analysis: Tokenization and frequency analysis of input files
  2. Tree Construction: Building optimal Huffman trees for each file
  3. Canonical Conversion: Transform to canonical Huffman codes for standardization
  4. Binary Encoding: Bit-level compression with efficient storage
  5. Metadata Generation: Minimal header creation for reconstruction data

Decompression Process

  1. Metadata Parsing: Reading compression headers and codebook information
  2. Tree Reconstruction: Rebuilding canonical Huffman trees
  3. Binary Decoding: Converting compressed bitstreams back to original data
  4. Structure Recreation: Restoring complete directory hierarchy

Installation

Prerequisites

Build Process

Using Qt Creator

git clone https://github.com/yourusername/compresso.git
cd compresso
# Open Compresso.pro in Qt Creator and build

Command Line Build

git clone https://github.com/yourusername/compresso.git
cd compresso
qmake Compresso.pro
make

Alternative CMake Build

git clone https://github.com/yourusername/compresso.git
cd compresso
mkdir build && cd build
cmake ..
make

Usage

Compressing Directories

  1. Launch the Compresso application
  2. Click “Browse Folder” to select the target directory
  3. Click “Compress” to begin the compression process
  4. Monitor progress through the real-time progress indicator
  5. Locate the output in [DirectoryName] (Compressed) folder

Decompressing Archives

  1. Select a directory with the “(Compressed)” suffix
  2. Click “Decompress” to initiate the restoration process
  3. Monitor decompression progress
  4. Access restored files in [DirectoryName] (Decompressed) folder

File Format

Compressed files use the .compresso extension and contain:

Architecture

Core Components

Compression Engine

User Interface

File Management

Limitations

Current Constraints

Future Enhancements

Technical Learnings

This project provided extensive experience in:

Algorithm Implementation

Software Engineering

Systems Programming

Contributing

Contributions are welcome through standard GitHub workflows:

  1. Fork the repository
  2. Create a feature branch
  3. Implement changes with appropriate tests
  4. Submit a pull request with detailed description

License

This project is licensed under the MIT License. See the LICENSE file for complete terms and conditions.

Contact

For questions, issues, or feature requests, please use the GitHub issue tracker or contact the development team through the repository.


Compresso - Efficient folder compression through advanced algorithmic implementation.