---
title: "Designing with AI: Generating unique artwork for every user"
description: "Supabase Launch Week 7 needed distinctive, shareable tickets that could improve on earlier Launch Week designs while keeping overlaid text readable. The team experimented with Midjourney prompts and blends, then chose minimalist purple swirls and a gold overlay approach after finding generated visuals too chaotic and direct gold prompting unreliable. For each ticket, a Supabase Edge Function retrieves a cached PNG from Supabase Storage or renders HTML and CSS into an SVG with Vercel’s Satori, layering backgrounds, a GitHub profile picture, and text before uploading the result with long cache control. A Postgres view selectively exposes ticket fields, calculates referral counts and marks a ticket golden when both Twitter and LinkedIn sharing have been detected, while row-level security protects the underlying email-containing table. Supabase Realtime then sends client-side updates so users can see progress and stop listening once golden."
---

# Designing with AI: Generating unique artwork for every user

[Supabase](https://yomu.fyi/company/supabase) · marijana,thor\_schaeff · Apr 7, 2023

**Type:** Explainer

## Summary

Supabase Launch Week 7 needed distinctive, shareable tickets that could improve on earlier Launch Week designs while keeping overlaid text readable. The team experimented with Midjourney prompts and blends, then chose minimalist purple swirls and a gold overlay approach after finding generated visuals too chaotic and direct gold prompting unreliable. For each ticket, a Supabase Edge Function retrieves a cached PNG from Supabase Storage or renders HTML and CSS into an SVG with Vercel’s Satori, layering backgrounds, a GitHub profile picture, and text before uploading the result with long cache control. A Postgres view selectively exposes ticket fields, calculates referral counts and marks a ticket golden when both Twitter and LinkedIn sharing have been detected, while row-level security protects the underlying email-containing table. Supabase Realtime then sends client-side updates so users can see progress and stop listening once golden.

## Context

The Launch Week ticket system had to produce artwork that was more distinctive than previous efforts while remaining readable when text was overlaid. The tickets also needed to be shareable through unique Open Graph images, and the design included an interactive way for users to earn golden-ticket status by sharing on Twitter and LinkedIn.

## Approach / What changed

The design combines Midjourney-generated backgrounds with ticket layers, GitHub profile data, and text. A Supabase Edge Function generates each image, checks Supabase Storage first, and caches newly generated PNGs there. GitHub authentication, Postgres, row-level security, a public view, social-bot detection, and Supabase Realtime support ticket data, golden status, referral counts, and live progress updates.

## Takeaways

- Midjourney experiments with prompts and the /blend command produced visuals that were initially too busy for readable ticket text; the final direction used simpler purple swirls and a golden overlay blended with existing artwork.
- The Edge Function avoids regenerating images by checking Supabase Storage before rendering and uploading a PNG with a cacheControl value of 31536000 and upsert disabled.
- A Postgres view computes golden status when both Twitter and LinkedIn sharing timestamps exist, while Supabase Realtime updates the client and unsubscribes after the ticket becomes golden.

**Tags:** [Caching](https://yomu.fyi/topic/caching), [Open Source](https://yomu.fyi/topic/open-source), [Postgres](https://yomu.fyi/topic/postgres), [Serverless](https://yomu.fyi/topic/serverless)

- Source: [Supabase](https://supabase.com/blog/designing-with-ai-midjourney)
- Source URL: https://supabase.com/blog/designing-with-ai-midjourney
- Ingested by Yomu: 2026-08-29T01:16:59.806Z

[Read original post](https://supabase.com/blog/designing-with-ai-midjourney)
