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
- Ship the smallest useful thing, then iterate.
- A PWA gets you "installable" without app-store friction.
- 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)