All work
Portfolio Website

LC Photography

A travel and landscape portfolio where most of the metadata writes itself.

photos.lenardcamilleri.com

A screenshot of the live site. Open it in its own tab for the real thing.

// the project

What it is

LC Photography is a travel and landscape portfolio built to replace a Wix site. Photos sit in a masonry gallery grouped by year, with filtering, a timeline jumper, deep linked lightbox and a hero image that can be pinned from the admin panel.

A second view puts the same collection on an interactive globe. Pins cluster as you zoom out, and a text based drill down from world to continent to country to location gives the same navigation without a mouse.

Most of the metadata writes itself. On upload, EXIF is read for camera body and GPS, coordinates are reverse geocoded into a place name, an AI vision model suggests a short title from the image itself, and a second pass spell checks the title, city and location while leaving anything it is unsure about untouched.

The admin side covers single and bulk upload with per item retry, inline editing, and user management gated by role. Thumbnails are generated in the browser on upload and backfilled server side for older imports.

// inside

What it does

Masonry gallery by year

Filtering, a timeline jumper, a deep linked lightbox, and a hero image that can be pinned from the admin panel.

Interactive globe

The same collection plotted on a globe, with pins that cluster as you zoom out.

Drill down without a mouse

A text based path from world to continent to country to location, mirroring the globe navigation.

Metadata that writes itself

EXIF for camera body and GPS, coordinates reverse geocoded into a place name, and an AI vision model suggesting a title from the image.

Careful spell checking

A second pass checks the title, city and location, leaving anything it is unsure about untouched.

Bulk upload & roles

Single and bulk upload with per item retry, inline editing, and user management gated by role.

// built with

Under the hood

React
Vite
Postgres + row level security
Object storage
Structured data & per page metadata
// more work

Other things we've built

// let's talk

Want something like this?

Tell us about your business and we'll suggest the simplest thing that would make a real difference.

enquiries@lenardcamilleri.com