The Dunleavy Organization

Data · Analytics · Digital Delivery

SinglePlayerGamers.com

Web application for discovering single-player games. Includes user accounts, newsletter signup, production hosting, and a mobile app shell. A production product I built and operate myself.

Click image to expand
Role
Sole developer
Timeline
June–July 2026
Type
Personal production project
Status
Live in production

Problem & Outcome

Most discovery tools mix multiplayer noise into the catalog. This product is built for single-player only — find games, keep a personal list, and skip the multiplayer-first clutter, battle-pass pressure, and endless uncurated dump.

Outcome: a public site with dual catalog (editorial + algorithm), accounts and cloud-synced My List, newsletter + welcome email, blog, Stuck Assist (ranked video/guide links for in-game moments), production HTTPS hosting, and a Capacitor Android shell on the Play path.

Delivery shape: roughly two weeks of focused work after a mid-project pause (~eight intensive build days order of magnitude) — plan through deploy without a handoff chain.

Architecture

Static frontend on a self-hosted origin; auth, database, and edge functions on Supabase; email via Resend. No application server on the home box beyond Caddy serving files.

Hosting & Hardware

Product site: singleplayergamers.com is on Cloudflare Pages. Game covers sit on R2.

This case study is a page on dunleavyorganization.com (also Cloudflare Pages).

Cloud services (not on the home box): Supabase (auth, Postgres, edge functions) and Resend (transactional email). Game catalog browse works from static JSON even if Supabase is paused — My List / auth / newsletter depend on Supabase.

Deploy: catalog scoring on the Windows machine, then publish_pages.ps1 to Cloudflare Pages. Covers go to R2. Secrets stay off the browser and off the public repo.

Cloudflare Pages Cloudflare R2 covers Supabase Windows catalog publish Supabase auth

Tech Stack

Chosen for speed, maintainability, and a solo operator — not a large platform team.

Layer Choice Why
Frontend HTML, Tailwind CDN, vanilla JS No build step; fast iteration; easy static deploy
Game data Static JSON (curated + algorithm catalogs) Git-tracked; works without a DB for browse
Scoring / ingest Python + RAWG + IGDB (+ Steam where app id known) API keys stay local; deploy only the result JSON
Backend Supabase (Auth, Postgres, RLS, Edge Functions) Accounts, My List, newsletter, Stuck Assist API surface
Email Resend (+ Edge Function welcome flow) Reliable transactional delivery
Hosting Ubuntu + Caddy + Cloudflare Self-hosted control + edge performance / TLS
Mobile Capacitor (Android shell) Same web app packaged for Play Store path
Analytics Google Analytics 4 Traffic and conversion events (e.g. newsletter)

Takeaways

Want a product built end to end?

Brief project notes are enough — I reply by email.