We built an AI design SaaS for small businesses in two months: Next.js, Supabase, Stripe as merchant of record, fal.ai
Case study from Weblevo, a two-person web studio in Madeira. Brifora is our own product, so this is the honest version. The problem My co-founder runs a print and embroidery shop. Every week someone brings a phone photo of a logo and asks for it on a t-shirt. The file is a 400-px JPG; the embroidery machine needs a vector; the customer has no designer and no budget for one. We built Brifora to…
Weblevo, a two-person web studio in Madeira, created Brifora, an AI design Software as a Service (SaaS) for small businesses, in just two months. The company's founder owns a print and embroidery shop where customers often provide logo JPGs and request embroidered designs. Brifora turns these JPGs into vector files that can be used for embroidery.
Brifora's features include generating logos from a six-question brief, creating product images and short videos from static images, removing backgrounds, creating new scenes, upscaling images, outpainting, object removal, and generating free captions. The service also offers logo mockups on eight products, a free position/curve editor, brand kits, and cross-stitch patterns from any image.
The stacked is built with Next.js 16 on Vercel, using the App Router, server actions, edge routing for OG images, Supabase for PostgreSQL, authentication via email code, storage, row-level security (RLS), Stripe Managed Payments as the merchant of record, fal.ai for generating images, vectors, videos, and a small text model for the assistant, Resend for email, ElevenLabs for the assistant's recorded voice, and Vercel Analytics (without cookies or banners).
The developers made five key decisions that contributed to the success of Brifora:
1. Every AI generation is a job. The browser enqueues jobs, and a signed webhook is called on completion by fal.ai. A one-minute cron job handles stragglers and refunds credits in case of provider failure. This approach allows users to close the tab after initiating a job.
2. The model draws the blank; code places the logo. Instead of asking the model to place the logo directly onto a product, Brifora renders an empty product and composites the user's actual file using sharp. This method ensures the logo remains crisp and editable.
3. Prices live in one table. By keeping credit costs in a single source, Brifora was able to change prices multiple times before launch without stale numbers appearing on cards, pages, or FAQ answers.
4. Language is handled in the URL, not in a cookie. To avoid Google indexing only English content, Brifora uses language prefixes (/pt/, /uk/, /ru/) with hreflang tags. This change took only a day and significantly improved the site's SEO.
5. Launch mode is controlled by an environment variable. By using the LAUNCH_MODE environment variable, the "coming soon" banner can be turned off at launch without requiring a redeploy. This simple approach streamlines the launch process.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.