A lightweight web service to convert images (incl. HEIC) to ICO, PNG, JPG, WebP, and AVIF. Backend uses Node.js + Express with sharp for image processing and to-ico for multi-size ICOs. Designed for Linux deployment with Docker.
No Node.js installation required!
docker compose build
docker compose up -dThen open http://localhost:8080 in your browser.
The app includes:
- Frontend React SPA with drag-and-drop UI
- Backend conversion API with HEIC support
- Nginx reverse proxy
- Install Node.js 18+.
- Install dependencies:
cd server
npm install- Run the server:
npm start- Test health:
GET http://localhost:3000/health
docker compose build
docker compose up -dThen open http://localhost:3000/health.
-
POST /convert(multipart/form-data)- fields:
file: source imageoutputFormat: one ofico|png|jpg|jpeg|webp|avifsizes(optional forico): comma-separated sizes, default16,32,48,64,128,256
- response: binary stream with
Content-TypeandContent-Disposition: attachment; filename=...
- fields:
-
GET /health: returns status and versions.
- HEIC/HEIF decoding requires libvips with libheif support. The Dockerfile uses
node:bookworm-slimand installslibvips+libheif. - Large images are limited by
MAX_UPLOAD_BYTES(default 30MB). - Animated inputs are not explicitly handled; first frame may be used.
The client is a React + Vite SPA with Tailwind CSS and DaisyUI.
Prerequisites: Install Node.js 18+ first.
cd client
npm install
npm run devOpen http://localhost:5173. The dev server proxies /api/* to http://localhost:3000.
cd client
npm run buildThe dist/ folder contains the static assets ready for deployment.
Prerequisites: Install Node.js 18+ first.
- Start backend:
cd server && npm install && npm start - Start frontend:
cd client && npm install && npm run dev - Open
http://localhost:5173
