How I ship single-purpose AI photo apps on Vercel with one-time payments (no accounts)
I run the Sadana apps used as examples. I build single-purpose AI photo apps (old-photo restoration, headshots, room redesign, product shots). Each one is a static site plus a few serverless functions on Vercel, and each is sold as a one-time payment with no user accounts. Here is the setup and what I learned. 1. Static HTML + serverless /api The front end is plain static HTML, CSS and a little…
The Sadana apps, as used in these examples, represent a unique approach to developing single-purpose AI photo applications. These applications are built using static HTML, CSS, and a minimal amount of JavaScript, ensuring fast load times and easy indexing. All sensitive operations, such as model calls and payment verification, are handled by serverless functions under the /api route, with the browser never exposed to API keys.
Rather than requiring user accounts or passwords, a license key serves as the primary means of access. After a successful checkout, Lemon Squeezy emails the license key to the user. The app then verifies this key via a /api function, checking against the Lemon Squeezy license API. This system validates the key and tracks the remaining credits, which can be as few as three photos. This approach not only streamlines the user experience but also eliminates the need for a user database, reducing potential vulnerabilities.
The app takes a strict stance on handling user uploads. Photos are processed entirely in memory and sent directly to the image model provider for generation. No photos are stored on disk, in a database, or in any cloud bucket. This policy is clearly communicated to users, who appreciate the lack of storage concerns. In the event of a generation failure, users are automatically refunded the credit without cost.
The app also refunds services errors and unused codes within a seven-day window. Once a result is delivered, no refunds are offered for changes of heart. This policy is determined prior to launch and influences the credit accounting logic in the API.
Lastly, to boost discoverability, the Sadana apps employ programmatic SEO techniques. Single-purpose landing pages, each addressing a specific use case, are generated from templates and data files. Changes to these URLs are promptly submitted to IndexNow, enabling quick indexing by search engines like Bing. It's essential that each page is genuinely useful and not merely thin content.
The takeaway here is that focusing on a single job per app, replacing accounts with license keys, and avoiding stored uploads enhances code simplicity, user experience, and privacy protection. For further examples of these applications, visit Sadana.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.