{"id":48755967,"url":"https://github.com/rana-m-ahmed/compresso","last_synced_at":"2026-04-13T02:02:55.833Z","repository":{"id":290030193,"uuid":"973153061","full_name":"rana-m-ahmed/Compresso","owner":"rana-m-ahmed","description":"Compresso is a Huffman Compression Application build using QT creator ","archived":false,"fork":false,"pushed_at":"2025-05-28T18:14:34.000Z","size":25454,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-14T13:42:19.934Z","etag":null,"topics":["application","cpp","dsa","gui","huffman-coding","huffman-compression","huffman-compression-algorithm","huffman-compression-application","huffman-compressor","qt","ui"],"latest_commit_sha":null,"homepage":"https://ranaahmed786.github.io/Compresso/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rana-m-ahmed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-26T11:27:48.000Z","updated_at":"2025-05-28T18:14:37.000Z","dependencies_parsed_at":"2025-04-26T12:37:52.899Z","dependency_job_id":"4897c145-588e-48b4-9300-cec89b2c4831","html_url":"https://github.com/rana-m-ahmed/Compresso","commit_stats":null,"previous_names":["ranaahmed786/compresso","rana-m-ahmed/compresso"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rana-m-ahmed/Compresso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rana-m-ahmed%2FCompresso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rana-m-ahmed%2FCompresso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rana-m-ahmed%2FCompresso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rana-m-ahmed%2FCompresso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rana-m-ahmed","download_url":"https://codeload.github.com/rana-m-ahmed/Compresso/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rana-m-ahmed%2FCompresso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31736723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T22:19:12.206Z","status":"online","status_checked_at":"2026-04-13T02:00:06.623Z","response_time":93,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application","cpp","dsa","gui","huffman-coding","huffman-compression","huffman-compression-algorithm","huffman-compression-application","huffman-compressor","qt","ui"],"created_at":"2026-04-13T02:02:50.846Z","updated_at":"2026-04-13T02:02:55.814Z","avatar_url":"https://github.com/rana-m-ahmed.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compresso\n\nA 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.\n\n## Overview\n\nCompresso 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.\n\n### Key Advantages\n\n- **Individual File Optimization**: Each file is compressed independently using optimized Huffman codes\n- **Structure Preservation**: Complete directory trees are maintained with perfect fidelity\n- **Minimal Overhead**: Efficient binary storage with compact metadata headers\n- **Performance Oriented**: Multithreaded operations with real-time progress tracking\n- **User-Centric Design**: Intuitive interface suitable for both technical and non-technical users\n\n## User Interface\n\nThe application features a clean, intuitive interface designed for seamless user experience across all platforms.\n\n\u003cdiv align=\"center\"\u003e\n\n| Home Screen | Folder Selection |\n|-------------|------------------|\n| ![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) |\n\n| Compression Progress | Completed Operation |\n|---------------------|---------------------|\n| ![Compressing](https://github.com/user-attachments/assets/3f988e5d-0d94-4b44-a131-187e7bc1772d) | ![Compressed](https://github.com/user-attachments/assets/08f51539-8c7e-40f8-9724-f294e006226f)|\n\n\u003c/div\u003e\n\n## Features\n\n### Core Functionality\n- **Folder-Based Compression**: Processes entire directory structures recursively\n- **Canonical Huffman Implementation**: Lexicographically sorted codes for optimal efficiency\n- **Lossless Compression**: Perfect reconstruction of original files and folder hierarchy\n- **Binary Optimization**: Bit-level encoding for maximum space efficiency\n\n### Performance \u0026 Usability\n- **Multithreaded Processing**: Background operations using QtConcurrent framework\n- **Progress Monitoring**: Real-time feedback during compression/decompression operations\n- **Intelligent Naming**: Automatic suffix handling for output directories\n- **Error Management**: Comprehensive error handling with user-friendly notifications\n- **Cross-Platform Support**: Consistent experience across Windows, Linux, and macOS\n\n## Technical Implementation\n\n### Compression Algorithm\n1. **File Analysis**: Tokenization and frequency analysis of input files\n2. **Tree Construction**: Building optimal Huffman trees for each file\n3. **Canonical Conversion**: Transform to canonical Huffman codes for standardization\n4. **Binary Encoding**: Bit-level compression with efficient storage\n5. **Metadata Generation**: Minimal header creation for reconstruction data\n\n### Decompression Process\n1. **Metadata Parsing**: Reading compression headers and codebook information\n2. **Tree Reconstruction**: Rebuilding canonical Huffman trees\n3. **Binary Decoding**: Converting compressed bitstreams back to original data\n4. **Structure Recreation**: Restoring complete directory hierarchy\n\n## Installation\n\n### Prerequisites\n- Qt Framework (5.x or 6.x)\n- C++17 compatible compiler\n- CMake or qmake build system\n- Git version control\n\n### Build Process\n\n#### Using Qt Creator\n```bash\ngit clone https://github.com/yourusername/compresso.git\ncd compresso\n# Open Compresso.pro in Qt Creator and build\n```\n\n#### Command Line Build\n```bash\ngit clone https://github.com/yourusername/compresso.git\ncd compresso\nqmake Compresso.pro\nmake\n```\n\n#### Alternative CMake Build\n```bash\ngit clone https://github.com/yourusername/compresso.git\ncd compresso\nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\n```\n\n## Usage\n\n### Compressing Directories\n\n1. Launch the Compresso application\n2. Click \"Browse Folder\" to select the target directory\n3. Click \"Compress\" to begin the compression process\n4. Monitor progress through the real-time progress indicator\n5. Locate the output in `[DirectoryName] (Compressed)` folder\n\n### Decompressing Archives\n\n1. Select a directory with the \"(Compressed)\" suffix\n2. Click \"Decompress\" to initiate the restoration process\n3. Monitor decompression progress\n4. Access restored files in `[DirectoryName] (Decompressed)` folder\n\n### File Format\n\nCompressed files use the `.compresso` extension and contain:\n- Canonical Huffman codebook metadata\n- Compressed binary data streams\n- Directory structure information\n- File attribute preservation data\n\n## Architecture\n\n### Core Components\n\n**Compression Engine**\n- Huffman tree construction and optimization\n- Canonical code generation algorithms\n- Binary I/O operations with bitstream handling\n\n**User Interface**\n- Qt Widgets-based GUI implementation\n- Asynchronous operation handling with QFutureWatcher\n- Progress tracking and user feedback systems\n\n**File Management**\n- Recursive directory traversal\n- Metadata preservation and restoration\n- Cross-platform file system compatibility\n\n## Limitations\n\n### Current Constraints\n- Folder-only compression (individual files not supported)\n- Proprietary format compatibility (only Compresso-generated archives)\n- No encryption or password protection capabilities\n- Performance considerations for extremely large files due to bit-level operations\n\n### Future Enhancements\n- Individual file compression support\n- Encryption and security features\n- Additional compression algorithms\n- Performance optimizations for large datasets\n\n## Technical Learnings\n\nThis project provided extensive experience in:\n\n**Algorithm Implementation**\n- Huffman tree construction and traversal algorithms\n- Canonical Huffman code generation and optimization\n- Binary data manipulation and bitstream processing\n\n**Software Engineering**\n- Asynchronous programming with Qt's concurrent framework\n- Exception-safe multithreaded application design\n- Cross-platform GUI development using Qt Widgets\n\n**Systems Programming**\n- Low-level binary file I/O operations\n- Memory-efficient data structure design\n- File system interaction and metadata handling\n\n## Contributing\n\nContributions are welcome through standard GitHub workflows:\n\n1. Fork the repository\n2. Create a feature branch\n3. Implement changes with appropriate tests\n4. Submit a pull request with detailed description\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for complete terms and conditions.\n\n## Contact\n\nFor questions, issues, or feature requests, please use the GitHub issue tracker or contact the development team through the repository.\n\n---\n\n**Compresso** - Efficient folder compression through advanced algorithmic implementation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frana-m-ahmed%2Fcompresso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frana-m-ahmed%2Fcompresso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frana-m-ahmed%2Fcompresso/lists"}