Captain's Log

Rona: a portfolio built for photographers who shoot first and talk later

Rona: a portfolio built for photographers who shoot first and talk later

I have a friend who shoots portraits. Her Instagram is stunning — consistent light, strong compositions, a clear point of view. But when she wants to send her portfolio to a potential client, she sends her Instagram link.

Not because she doesn't have a website. She did, once. But it was built on a template platform that was slow to load, hard to update, and full of UI that wasn't hers. She stopped maintaining it. The Instagram link was easier.

Rona started as a solution to that specific problem.

What Rona is

Rona is a portfolio platform for independent photographers. The goal is to give a photographer a home online that feels like their work — not like a template they borrowed from a SaaS company.

The name rona means "hue" or "color tone" in Indonesian, which felt right for a platform built around visual work.

The platform covers three things a working photographer actually needs:

A showcase. A clean, fast-loading gallery organized by event type — weddings, portraits, streets, commercial, whatever the photographer covers. No clutter. The images lead.

A story. A short section where the photographer can write about themselves, their approach, and what they shoot. Clients hire people, not portfolios.

A contact point. A simple way for interested clients to reach out. Nothing elaborate — just enough to start a conversation.

Why most portfolio tools fail photographers

The tools photographers actually use — Squarespace, Format, Pixieset — are good products. But they come with assumptions: a fixed grid layout, a predetermined navigation structure, pricing tiers that include features a solo photographer will never use.

More importantly, they're slow. Image-heavy pages built on general-purpose platforms often sacrifice performance for flexibility. A portfolio that takes four seconds to load on a mobile connection has already lost the client who found it through a search.

Rona is built with a different assumption: the images are the product, and everything around them should disappear.

Design decisions

Full-bleed images. The gallery doesn't constrain images to a fixed box. Portrait shots display as portraits. Landscapes breathe. The layout responds to the image, not the other way around.

Zero loading spinners. Images are lazy-loaded and progressively rendered. The user never sees a spinning placeholder — they see a low-resolution version that sharpens as the full image arrives. This is a small detail that makes the browsing experience feel significantly more polished.

No sidebar. Navigation is minimal and top-aligned. The sides of the page are clear — nothing competes with the work on the edges.

Typography that serves, not performs. The font choices are deliberately understated. A photographer's portfolio isn't a design portfolio — the typography shouldn't make itself the story.

The update problem

One of the biggest friction points in maintaining a portfolio is adding new work. Most platforms require you to log in, navigate to a gallery manager, upload files, add metadata, and publish. That's five steps to do something that should feel like one.

Rona's content model is designed for the way photographers actually work: organize images into folders (by event, by year, by project), and the platform pulls from wherever those folders live — a cloud storage bucket, a Cloudinary account, a local sync folder.

No CMS login. No upload UI. The folder is the CMS.

This is one of the reasons Rona stays stack-agnostic. The storage layer is separate from the presentation layer. The current build works with static image directories, but the same schema works with an S3 bucket, a Cloudinary collection, or a Google Photos album with a read API.

Why Astro

Astro's output is static HTML with images. For a portfolio with no user state, no real-time data, and no authenticated features, this is exactly right. The Lighthouse score on a well-built Astro image gallery is hard to beat.

The island architecture means I can add interactive pieces — a lightbox, a contact form, a filter by category — exactly where needed, without the JavaScript cost of a fully hydrated framework.

And because Rona is stack-agnostic by design, a photographer (or developer helping a photographer) who prefers Next.js or Nuxt can adapt the structure without starting from scratch. The layout decisions, the image schema, the content model — all of it transfers.

This is a single-page concept — deliberately

Rona right now is a single-page design. Clean, focused, and intentionally minimal. Not because there's nothing more to build — but because the point of this version is to show what it should feel like, not to ship every feature.

A full Rona would include client gallery delivery, booking inquiry flows, a CMS for the photographer to update their own content, and eventually a multi-photographer platform where each gets their own subdomain. All of that is technically straightforward. None of it is built yet.

That's an invitation.

If you're a photographer who wants this for yourself, a developer who wants to build it properly, or a creative agency that sees this as a product for your clients — I'm interested in that conversation. The design is done. The architecture is clear. The only missing ingredient is someone who wants to build it alongside me.

There's no limit to what Rona can grow into. The current version is the starting point, not the destination.


Rona is live at rona-sigma.vercel.app. If you're a photographer, a developer, or someone who sees the same gap — reach out. Let's make it real.