Case Study — Art Gallery + App
A WooCommerce art gallery with augmented reality painting previews, a Flutter app that shows the work in your space before you buy, and a custom plugin suite built specifically for how a working artist studio actually sells.
Overview
Danielle runs a working art studio. She paints originals, prints limited editions, and sells through the website. The standard WooCommerce experience was not built for original artwork — there is no concept of a one-of-a-kind piece that is gone when it sells, no way to mark something as SOLD with context rather than just deleting it, and no way to show the buyer what the painting looks like at life size on their wall before they commit.
So we built what was missing. A custom plugin suite that handles the art gallery's specific needs: SOLD badge display with history tracking, a commission inquiry form, an artwork dimensions field, category filtering for the gallery view, and a Related Works shortcode. On top of that, a Flutter progressive web app with augmented reality, where the buyer can point their phone camera at their wall and see the painting at real scale.
The AR feature is the part that takes the most explaining but sells the hardest when people actually try it. Danielle uploads a photo of the painting and a short video. The AR target gets compiled in the browser. The Flutter app opens a camera overlay and shows the work in the room.
"Selling original art online has one central problem: people cannot tell how big it is or whether it will work on their wall. The AR preview solves that directly."
Signature Feature
Danielle does the entire setup from the WordPress admin. No technical knowledge required after the initial build. The whole pipeline runs from her laptop.
Danielle uploads a flat-on photo of the painting and a short video of it hanging in the studio. Both go into the rds-ar-manager plugin.
The plugin uses browser-based AR target compilation. No server-side processing, no external AR service subscription. The target image descriptor is stored with the product.
The Flutter PWA at flutter.rds.ink reads the product data via REST API. The buyer taps "View in your space" and the app opens a camera overlay showing the painting at real scale on their wall.
The AR feature works well on mid-range Android and current iOS. Older phones with limited camera APIs see a standard overlay without full spatial tracking. It is a genuine enhancement for most buyers, not a universal replacement for visiting the studio. We document this clearly in the app.
Custom Development
Standard WooCommerce treats every product the same. These plugins exist because original artwork is not the same as a T-shirt. Each one addresses a specific gap in how the gallery actually works.
Commerce Layer
Running Duck Studio sells two things: original paintings at original prices, and print reproductions via Gelato. Gelato handles fulfilment — they print and ship from the production facility closest to the buyer. The WooCommerce integration connects the two.
Each original is a single WooCommerce product with a custom SOLD state. When it sells, the product switches to SOLD, shows the sold price and date, and remains visible as portfolio history rather than disappearing from the site.
Limited edition prints are fulfilled by Gelato. The buyer places a WooCommerce order; Gelato picks it up automatically and handles printing, packaging, and shipping. No inventory, no fulfilment work on Danielle's end.
The commission form (part of rds-core) captures buyer requirements, preferred size, colour palette, and budget. It feeds into a structured email workflow rather than a generic contact form. Danielle gets everything she needs in one message.
Gelato's WooCommerce API has specific requirements around product variant mapping that we had to document carefully. When Gelato updates their product catalogue, variant IDs can change and previously mapped products need re-linking. It is not a set-and-forget integration. We handle those updates as part of the ongoing management relationship.
Mobile Experience
The Flutter progressive web app at flutter.rds.ink is a 8.4 MB build that runs in the browser on any device. No app store download required. The buyer opens it from their phone browser or via a QR code on the gallery page.
The app reads product data from the WordPress REST API on launch. Featured collections, theme colours, and the gallery structure all come from the rds-flutter-config plugin — so the app stays in sync with the website without being redeployed every time Danielle adds a new collection.
Core screens: gallery browse by category, individual artwork detail with AR trigger, Danielle's story, commission inquiry form, and a direct link to the WooCommerce cart. The cart itself runs in a WebView pointed at the WordPress site to avoid duplicating the payment integration.
Works on Android and iOS via the browser. Users can add it to their home screen for an app-like experience. The service worker caches the gallery for offline browsing.
The app reads the product catalogue via REST API. New artwork appears in the app automatically when published in WordPress. No separate app deployment needed for content updates.
Purchases complete through the WooCommerce site inside a WebView. No duplicated payment integration, no Stripe keys managed in two places.
Technical Details
The platform runs on shared infrastructure on the same Brisbane server as the rest of the HELP4BIS portfolio. Total hosting cost for rds.ink and the Flutter subdomain is included in the Tailored Website Management plan at $200/month. Gelato charges per print fulfilled; there is no monthly fee for their integration.
Standard WooCommerce is a solid foundation. The question is whether it fits what you actually sell. If it does not, we build the parts that are missing.