All projects

VisuaLab

An early version of an image and media management platform.

Kind
Media management MVP
Year
2025
Built with
  • Next.js
  • Supabase
  • Prisma
  • Cloudflare R2
  • Weaviate
  • CLIP

The question

How would you find a picture in a large library when you cannot remember what it was called?

VisuaLab lets you describe it, or show a similar image, and searches by what the image contains.

Why it exists

Upload, organise and serve images, with the files stored in Cloudflare R2 and searchable by what they look like.

How it works

From an upload to a search result

  1. 1

    Upload

    An image is posted with its title, tags, licence and privacy level.

  2. 2

    Processing

    The image is resized into thumbnails and responsive sizes in three formats, and its metadata is read.

  3. 3

    Storage

    Files go to Cloudflare R2 and the record to PostgreSQL.

  4. 4

    Indexing

    In the background a CLIP embedding is computed and added to the Weaviate index.

  5. 5

    Search

    A text or image query is embedded the same way and matched by similarity. Private images are filtered out for other users.

Decisions

  • The upload returns before indexing

    Embedding and indexing run in the background, so the person uploading is not kept waiting for the search index.

  • Three privacy levels, enforced in search as well

    Public, unlisted and private images are checked on lookup and on semantic search, so a private image does not appear in someone else’s results.

  • It runs without cloud storage

    When no R2 credentials are set, files are written locally, so the project can be tried on a laptop.

Built with

Frameworks and libraries

  • Next.js
  • Prisma
  • Weaviate
  • CLIP

Data and storage

  • Supabase
  • Cloudflare R2