Skip to content

VaidehiDeore/Dynamic-File-Compression-Utility

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic File Compression Utility

Overview

Dynamic File Compression Utility is a DSA-focused file compression system that intelligently selects the most suitable lossless compression algorithm based on file characteristics and content patterns.

The project combines Huffman Coding, Priority Queues, Binary Trees, File Handling, FastAPI, and Next.js to build a real-world compression platform with analytics and visualization.


Problem Statement

Different file types compress differently.

Using a single compression algorithm for every file often leads to poor compression efficiency.

This project solves that problem by:

  • Analyzing file content
  • Selecting an appropriate codec
  • Performing lossless compression
  • Generating compression analytics
  • Providing Huffman Coding visualization

DSA Concepts Used

Huffman Coding

Used for variable-length encoding.

Frequently occurring characters receive shorter binary codes while infrequent characters receive longer codes.

Priority Queue (Min Heap)

Used to repeatedly select the two lowest-frequency nodes during Huffman Tree construction.

Binary Tree

Used to build the Huffman Tree.

Hash Map / Dictionary

Used to store character frequencies and generated Huffman codes.

Greedy Algorithm

Huffman Coding is a classic greedy algorithm.


Algorithm Workflow

Input File ↓ Read File Content ↓ Calculate Character Frequencies ↓ Build Min Heap ↓ Construct Huffman Tree ↓ Generate Binary Codes ↓ Compress File ↓ Calculate Compression Ratio ↓ Store Compressed Output ↓ Decompress & Verify


Features

  • Dynamic codec selection
  • Huffman Coding visualization
  • Compression analytics dashboard
  • Compression ratio calculation
  • Compression history tracking
  • File upload support
  • FastAPI backend
  • Next.js premium frontend
  • Swagger API documentation
  • Decompression and verification

Folder Structure

Dynamic-File-Compression-Utility/ │ ├── input_files/ ├── compressed_files/ ├── decompressed_files/ ├── outputs/ ├── images/ ├── backend/ ├── frontend/ ├── docs/ ├── requirements.txt ├── README.md └── .gitignore


How to Run

Backend

cd Dynamic-File-Compression-Utility

python -m venv venv

venv\Scripts\activate

pip install -r requirements.txt

uvicorn backend.app:app

Backend URL:

http://localhost:8000

Swagger Docs:

http://localhost:8000/docs

Frontend

cd frontend

npm install

npm run dev

Frontend URL:

http://localhost:3000

Sample Output

Original Size: 112 Bytes

Compressed Size: 55 Bytes

Compression Ratio: 0.49

Space Saved: 50.89%

Selected Codec: ZSTD


Screenshots

Dashboard Overview

images/dashboard-overview.png

Compression Success

images/compression-success.png

Huffman Coding Demo

images/huffman-coding-demo.png

Compression History

images/compression-history.png


Learning Outcomes

  • Understanding Huffman Coding
  • Working with Priority Queues
  • Building Binary Trees
  • Greedy Algorithms
  • File Compression Concepts
  • FastAPI Development
  • Next.js Dashboard Development
  • REST API Design
  • Data Visualization
  • System Design Fundamentals

Future Enhancements

  • Parallel compression
  • Chunk-based processing
  • Dictionary training
  • Drag-and-drop batch compression
  • Compression benchmarking
  • Cloud storage integration

About

A DSA-driven file compression utility that dynamically selects the best lossless compression codec using Huffman Coding, Priority Queues, Binary Trees, and file analytics. Built with Python, FastAPI, and Next.js.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors