0.1.0 Major

Foundation

Initial release of imgfast with core image conversion capabilities, authentication, and worker-based processing.

First release! imgfast can now convert images between formats.

What it does

Upload an image, pick a format, and download the converted version. The basics work:

  • Convert between JPG, PNG, WebP, AVIF, GIF, TIFF, ICO, and SVG
  • Control quality (lossy or lossless)
  • Image optimization and compression
  • Automatic file cleanup after 24 hours

How it works

Frontend: Built with Astro.js and SolidJS for the interactive parts.

Backend: Node.js with BullMQ for job processing. When you upload an image, it gets added to a Redis queue and processed by worker processes running libvips (the image processing library).

Database: PostgreSQL for storing user data and job info. Using raw SQL instead of an ORM because we wanted more control.

Storage: Files are stored on the local filesystem in an organized directory structure.

Authentication

You can create an account and log in. Rate limiting is in place (IP-based for anonymous users, user-based for logged-in users) so the server doesn’t get overwhelmed.

Technical stuff

Worker-based architecture means image processing happens asynchronously. Upload an image, get a job ID, and check back for the result. Status updates happen in real-time via server-sent events.

Migrated to node-postgres for better database performance.

If the “optimized” version ends up larger than the original (happens sometimes with small files or certain formats), we keep the original instead.

This is the foundation. Everything else builds on top of this.