Skip to content

azmil666/Loomi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

115 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Loomi Logo



Loomi is a modern, dark-themed image toolkit built with a scalable full-stack architecture.

It is designed as a structured, professional-grade image processing platform providing a growing suite of high-performance image tools including conversion, compression, resizing, cropping, metadata removal, and ML-powered background removal.

Currently in active development.


✨ Current Features

πŸ–Ό Image Converter

  • PNG, JPEG, WebP, AVIF, GIF, TIFF support
  • Size comparison (before vs after)
  • Memory-based processing
  • Strict validation

πŸ—œ Image Compressor

  • Quality-based compression
  • Compression savings percentage
  • Real-time processing feedback

βœ‚οΈ Image Cropper

  • Crop images to custom dimensions
  • Fast in-memory processing using Sharp
  • Instant download of cropped image

πŸ“ Image Resizer

  • Resize images to custom width and height
  • Maintains high-quality output
  • Supports multiple image formats

πŸ”’ Metadata Stripper

  • Removes EXIF metadata from images
  • Protects privacy (GPS, camera info, timestamps)
  • Instant metadata-free image download

🎯 Background Removal (ML Powered)

  • AI-based subject extraction
  • Transparent PNG output
  • Python FastAPI microservice
  • Node ↔ ML service communication

πŸ“¦ Bulk Image Processor

  • Process multiple images simultaneously
  • Supports compress, resize, convert, and metadata stripping
  • Multi-file drag & drop upload
  • Dynamic operation controls
  • Downloads processed images as a ZIP archive

πŸ”€ Image β†’ ASCII Generator

  • Converts images into ASCII art
  • Python-powered processing via FastAPI ML service
  • Adjustable ASCII density and contrast mapping
  • Copy ASCII output directly to clipboard

🌫 Image Blur Tool

  • Apply blur effects to selected regions
  • Simple brush-based interaction
  • Ideal for redacting sensitive information

🎨 Image Filter Tool

  • Apply visual filters to images
  • Real-time preview
  • Fast processing using Sharp

πŸ”³ Image β†’ QR Generator

  • Convert uploaded images into shareable QR codes
  • Images are securely stored via Cloudinary
  • QR links allow instant access to the uploaded image
  • Download generated QR codes directly

πŸ›  Tech Stack

Frontend

  • Next.js (App Router)
  • TypeScript
  • Tailwind CSS
  • Framer Motion
  • Modular tool-based UI architecture

Backend (API Layer)

  • Express
  • TypeScript
  • Sharp (image processing engine)
  • Multer (memory-based file handling)
  • Cloudinary (image storage and public URL hosting)
  • Layered architecture (routes β†’ controllers β†’ services β†’ middleware)
  • Axios (internal ML service communication)

ML Microservice

  • FastAPI
  • Python
  • Background removal model
  • Isolated microservice architecture
  • ASCII image generation service

🧱 Project Structure


Loomi/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”œβ”€β”€ convert.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ compress.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ crop.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ resize.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ stripMetadata.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ background.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ bulk.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ blur.routes.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ ascii.routes.ts
β”‚   β”‚   β”‚   └── filters.routes.ts
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ convert.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ compress.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ crop.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ resize.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ stripMetadata.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ background.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ bulk.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ blur.controller.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ ascii.controller.ts
β”‚   β”‚   β”‚   └── filters.controller.ts
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ convert.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ compress.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ crop.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ resize.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ stripMetadata.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ background.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ bulk.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ blur.service.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ ascii.service.ts
β”‚   β”‚   β”‚   └── filters.service.ts
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ middleware/
β”‚   β”‚   β”‚   └── upload.middleware.ts
β”‚   β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”‚   └── cloudinary.ts
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ app.ts
β”‚   β”‚   └── server.ts
β”‚   β”‚
β”‚   └── package.json
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”‚   └── tools/
β”‚   β”‚   β”‚       β”œβ”€β”€ converter/
β”‚   β”‚   β”‚       β”œβ”€β”€ compressor/
β”‚   β”‚   β”‚       β”œβ”€β”€ crop/
β”‚   β”‚   β”‚       β”œβ”€β”€ resize/
β”‚   β”‚   β”‚       β”œβ”€β”€ strip-metadata/
β”‚   β”‚   β”‚       β”œβ”€β”€ background-removal/
β”‚   β”‚   β”‚       β”œβ”€β”€ bulk/
β”‚   β”‚   β”‚       β”œβ”€β”€ ascii/
β”‚   β”‚   β”‚       β”œβ”€β”€ blur/
β”‚   β”‚   β”‚       └── filters/
β”‚   β”‚   β”‚ 
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ tools/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ConverterTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CompressorTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CropTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ResizeTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ MetadataStripperTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BackgroundRemovalTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BulkTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AsciiTool.tsx
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BlurTool.tsx
β”‚   β”‚   β”‚   β”‚   └── FilterTool.tsx
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └── ui/
β”‚   β”‚   β”‚
β”‚   β”‚   └── lib/
β”‚   β”‚
β”‚   └── package.json
β”‚
└── ml-service/
    β”œβ”€β”€ app.py
    └── requirements.txt
    
    

The backend follows a scalable layered architecture to allow future expansion .


πŸš€ Running Locally

Loomi uses a microservice architecture. You must run three services in separate terminals.


πŸ” Environment Variables

Create a .env file inside the backend folder.

CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=

1️⃣ ML Service (Background Removal)

cd ml-service

# create virtual environment (first time only)
python -m venv venv

# activate environment
# macOS / Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate

# install dependencies
pip install -r requirements.txt

# start FastAPI server
uvicorn app:app --reload --port 8000

Runs on:

http://localhost:8000

Swagger docs:

http://localhost:8000/docs

2️⃣ Backend API (Express)

cd backend
npm install
npm run dev

Runs on:

http://localhost:5000

3️⃣ Frontend (Next.js)

cd frontend
npm install
npm run dev

Runs on:

http://localhost:3000

βœ… Required Order

Start services in this order:

  1. ML service
  2. Backend
  3. Frontend

If the ML service is not running, background removal & image to ascii will return a 500 error.


πŸ“Œ Roadmap

Loomi is being developed as a growing collection of high-performance image tools.
The goal is to continuously expand the platform with new utilities for developers, creators, and everyday users.

βœ… Implemented Tools

  • Image Converter
  • Image Compressor
  • Image Cropper
  • Image Resizer
  • Metadata Stripper
  • Background Remover (ML Powered)
  • Bulk Image Processing
  • Image β†’ ASCII Generator
  • Image Blur Tool
  • Image Filter Tool
  • Image β†’ QR Generator
  • Palette Extractor

πŸ”œ Upcoming Tools

  • Batch Format Conversion
  • Image Watermarking
  • Image Format Optimizer
  • Image Color Adjustments
  • EXIF Metadata Viewer
  • Smart Image Upscaling (AI)

πŸš€ Platform Expansion

  • Drag & Drop multi-file processing
  • Public Loomi deployment
  • Developer API
  • CLI interface
  • Plugin-based tool architecture

🎯 Vision

Loomi aims to become a modern, developer-grade image toolkit with:

  • Clean architecture
  • Strong validation
  • Performance-focused processing
  • ML-powered extensibility
  • Microservice-ready backend
  • Premium UI experience

This is not just an image tool β€” it is a modular image processing platform.


πŸ“„ License

MIT