Christian Stockinger
All projects
.NETAuth0StripeContentfulAdobe Lightroom SDKOpenAPI

ShutterQuest

Full-stack photo gallery SaaS for professional photographers: Stripe billing, a robust OpenAPI REST API, client galleries, session management, and a direct-publish Lightroom plugin, all in one.

ShutterQuest

Overview

End-to-end SaaS platform designed for professional photographers. Built the Auth0-secured REST API, Stripe subscription lifecycle, multi-brand gallery system, and a Lightroom Classic publish plugin that turns catalog collections into live client galleries with a single click.

Details

Technical highlights

ShutterQuest is a multi-tenant gallery delivery platform targeting DSGVO-compliant hosting for German-speaking photographers. The backend exposes a versioned OpenAPI 3.0 REST API securing every route with Auth0 OAuth2, while Stripe handles subscription billing through a webhook-driven lifecycle.

  • ASP.NET Core REST API with OpenAPI 3.0: Brands, Galleries, Media, Contacts, Photo Sessions, Subscriptions
  • Multi-brand architecture: each photographer can run isolated brand identities with separate logos, watermarks, and legal texts
  • Gallery modes (Presentation / Vote) with per-image flags (Yes / No / Maybe / LoveIt), annotations, and session-based client access
  • Photo Session management: shoot planning, moodboard uploads, gear checklists, participant magic-link invites
  • Adobe Lightroom Classic publish plugin (Lua / LR SDK 6+): OAuth2 browser login, collection-to-gallery mapping, sequential JPEG export at sRGB / 2048 px / 0.9 quality with automatic republish on edit
  • Contentful CMS for blog pages and categorized FAQ entries (General, Account, Payment, Security, Gallery, Shootingmanagement)
  • Async image-processing job queue with polling endpoint: upload returns a jobId, UI polls until Completed or Failed
  • DSGVO-first: German server infrastructure, no AI training on customer photos

Key product decisions

  • Publish service maps each Lightroom collection to exactly one gallery. A deliberate 1-to-1 constraint that keeps delivery intent explicit and avoids duplicate uploads
  • Session tokens allow anonymous clients to interact with password-protected galleries without needing an account
  • Moodboard endpoint supports both authenticated brand-owner flow and participant magic-link uploads in a single route

Open Source

Find more on GitHub

These are selected highlights. Explore more repositories, tools, and experiments on my GitHub profile.

View on GitHub