Skip to main content
Gudo

HS Schultz

FlaskBespokeMinimalismGalleryWeb DesignPythonportfolio-designminimalist-webartist-websitebespoke-developmentgallery-onlinecustom-cms

Building a gallery website that disappears. A lesson in what NOT to build.

HS Schultz

Hermann Sebastian Schultz is a painter. Minimalist abstraction. His canvases are quiet-stripped of narrative, gesture reduced to whisper.

When he asked me to build his online gallery, the brief was 6 words: "Make it as quiet as my work."

I built a bespoke CMS from scratch using Python Flask. No WordPress. No Squarespace. No templates.

This is the story of a project that taught me the discipline of doing less.

The Problem with Everything Else

Hermann tried the usual suspects: WordPress, Wix, Cargo Collective. All felt wrong.

Too noisy. Too many features he'd never use. Analytics dashboards. SEO plugins. Social media integrations. Newsletter popups. Cookie banners. A/B testing frameworks.

None of it matched the silence of his paintings.

He showed me his ideal: "A website that feels like walking into an empty gallery. Just you and the work. Nothing else."

What I Built

The Admin Interface

Radically stripped. Three fields:

  1. Upload image
  2. Enter dimensions (cm)
  3. Enter year

That's it. Hit publish.

No categories. No tags. No alt text fields. No SEO meta descriptions. The system auto-generates everything from the filename and EXIF data.

The Frontend

  • Full-screen image display (no header, no footer, no navigation chrome)
  • Arrow keys to browse (previous/next)
  • Escape to close
  • That's the entire interface

No analytics. No tracking. No newsletter signup. The website exists to show paintings. Period.

The Technical Decisions

Why Flask?

Because it's minimal. A Python micro-framework that does nothing unless you explicitly ask it to.

No built-in admin panel. No ORM assumptions. No "convention over configuration" magic. Just HTTP routing and template rendering.

Perfect for this project.

Why SQLite?

Single-file database. Zero configuration. Runs on a single droplet with no external dependencies.

Overkill? Maybe. But it works.

Why No JavaScript?

The gallery pages are pure HTML + CSS. No frameworks. No build process. No npm dependencies.

Loads in under 1 second globally. Works with JavaScript disabled. Accessible to screen readers by default.

The Hard Parts

Resisting Feature Creep

Every week Hermann would say: "What if we added [some feature]?"

  • What if visitors could download hi-res images?
  • What if there was an email subscription?
  • What if we tracked which paintings get the most views?

I said no to all of it. Every addition would make the site heavier. My job was to protect the simplicity, even from the client.

The Maintenance Burden

Bespoke means no security team. I'm responsible for every dependency update, every CVE patch.

Flask and Pillow (image library) need manual updates. I've automated security scans (Dependabot) but the "deploy update" button is mine to press.

If I get hit by a bus, this site goes dark. That's the trade-off.

Knowing When to Stop

The hardest part was shipping it. I kept finding tiny details to improve-image compression ratios, CSS grid alignment, loading animations.

Hermann finally said: "It's done. Ship it."

So I did.

Where It Is Now

The HS Schultz gallery has been live since October 2024. Zero downtime. Zero bugs reported. Loads fast. Works everywhere.

Hermann's feedback: "I forget the website is there. It feels like the paintings are just... floating."

That's the highest compliment software can receive-to be forgotten.

What I Learned

Good Design is Subtraction

Every feature I didn't build made the site better. Minimalism isn't about aesthetics-it's about discipline.

Bespoke Has a Cost

This project makes no revenue for me. Hermann pays hosting costs. That's it.

I spent weeks building something that could've been a Squarespace template. The ROI is negative in dollars, positive in lessons learned.

Some Projects Are Worth Doing Anyway

Not everything needs to scale or generate revenue. Sometimes you build things because they should exist.

This gallery proves that digital luxury isn't feature richness-it's ruthless simplicity.

Visit the Gallery