DEV Community

Reza Nosrat
Reza Nosrat

Posted on

How I built a bilingual AI image-prompt gallery as a PWA

I run a small studio called RENOX where I build automation, Telegram bots and web apps. Recently I shipped a side project worth sharing: a bilingual (English/Persian) gallery of ready-to-use AI image prompts for ChatGPT, Sora and Midjourney. It's live and free to browse at rnosrat.com/prompts.

Here is how it's built and a few things I learned.

The stack

  • PHP 8 + SQLite (PDO) on shared LiteSpeed hosting - no build step, cheap, and fast enough for a read-heavy gallery.
  • Vanilla JS front-end with light progressive enhancement.
  • PWA: a manifest plus a service worker, so people can install it on their phone and browse prompts offline.

Why SQLite

For a catalog of a few hundred prompts with light writes (members, copy counts), SQLite is ideal: one file, no server to manage, trivial backups. I only reach for MySQL when I actually need concurrent writes at scale.

Bilingual without a framework

Every prompt stores both an English and a Persian field. The UI toggles with a data-lang attribute and CSS, so switching languages never reloads the page, and RTL/LTR is handled with a dir attribute on the root element.

A page per prompt for SEO

Each prompt has its own URL (?p=<id>) with its own title, description and sample image. That turned a single-page app into hundreds of indexable pages - which is what search engines actually rank.

Lessons

  1. Ship the smallest useful thing, then iterate.
  2. A PWA gets you "installable" without app-store friction.
  3. Individual, indexable pages beat one big client-rendered page for discovery.

If you want to see the result, it's at rnosrat.com/prompts. Happy to answer any questions about the build.

Top comments (0)