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.
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
Used for variable-length encoding.
Frequently occurring characters receive shorter binary codes while infrequent characters receive longer codes.
Used to repeatedly select the two lowest-frequency nodes during Huffman Tree construction.
Used to build the Huffman Tree.
Used to store character frequencies and generated Huffman codes.
Huffman Coding is a classic greedy algorithm.
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
- 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
Dynamic-File-Compression-Utility/ │ ├── input_files/ ├── compressed_files/ ├── decompressed_files/ ├── outputs/ ├── images/ ├── backend/ ├── frontend/ ├── docs/ ├── requirements.txt ├── README.md └── .gitignore
cd Dynamic-File-Compression-Utility
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
uvicorn backend.app:appBackend URL:
http://localhost:8000
Swagger Docs:
http://localhost:8000/docs
cd frontend
npm install
npm run devFrontend URL:
http://localhost:3000
Original Size: 112 Bytes
Compressed Size: 55 Bytes
Compression Ratio: 0.49
Space Saved: 50.89%
Selected Codec: ZSTD
images/dashboard-overview.png
images/compression-success.png
images/huffman-coding-demo.png
images/compression-history.png
- 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
- Parallel compression
- Chunk-based processing
- Dictionary training
- Drag-and-drop batch compression
- Compression benchmarking
- Cloud storage integration