yowlapp-site

yowlapp.com — the privacy policy page

One HTML file. The logo is embedded in it, so there are no images to break and nothing to upload alongside.

Why this is a separate repo from the app

GitHub Pages needs a public repo on the free plan. Your app repo doesn’t have to be public just to host one page, so this folder is meant to be pushed somewhere of its own.

Nothing here is secret. Nothing in the app repo is either — the Supabase key in lib/config.js is the anon key, which is designed to be shipped inside the app and is useless without the row-level security rules. But “it’s fine to publish” and “publish it” aren’t the same decision, and this way you don’t have to make the second one.

Publishing it

1. Make a new repo on github.com — call it yowlapp-site. Public. Don’t add a README, it’ll only get in the way.

2. Push this folder to it. From ~/Desktop/doggo-app:

cd site
git init
git add .
git commit -m "privacy policy"
git branch -M main
git remote add origin https://github.com/YOUR-USERNAME/yowlapp-site.git
git push -u origin main

3. Turn Pages on. In that repo: Settings → Pages. Under Source choose Deploy from a branch, branch main, folder / (root). Save.

Give it a minute. It’ll publish at https://YOUR-USERNAME.github.io/yowlapp-site/privacy/

4. Point your domain at it. In Porkbun, DNS for yowlapp.com:

Type Host Answer
A (blank) 185.199.108.153
A (blank) 185.199.109.153
A (blank) 185.199.110.153
A (blank) 185.199.111.153
CNAME www YOUR-USERNAME.github.io

Those four addresses are GitHub’s — check the current list at https://docs.github.com/pages/configuring-a-custom-domain-for-your-github-pages-site in case they’ve changed.

Back in Settings → Pages, put yowlapp.com in Custom domain, then tick Enforce HTTPS once it lets you. The certificate takes a few minutes.

5. Check the exact URL the app expects.

lib/config.js says:

export const PRIVACY_POLICY_URL = 'https://yowlapp.com/privacy';

The file here lives at privacy/index.html, so that address works as-is. If you move it, change that line too — a store reviewer clicking a 404 is a rejection.

When the policy changes

Don’t edit this HTML by hand. The logo is 76KB of base64 sitting in the middle of it, and hand-editing around that is how the two copies start disagreeing — which is the thing that gets apps pulled.

PRIVACY-POLICY.md in the app repo is the source of truth. Three commands:

cd ~/Desktop/doggo-app
python3 site/build.py
cd site && git add -A && git commit -m "policy update" && git push

build.py replaces only the text between the header and the footer, so the logo, the styling and the page shell are never touched. It prints the “last updated” date it found, which is a quick way to check you remembered to change it.

Three copies have to agree, and a store reviewer can see all three:

  1. PRIVACY-POLICY.md — the source
  2. lib/policyText.js — what the app shows in Settings
  3. site/privacy/index.html — what the public URL serves

build.py keeps 3 in step with 1. Number 2 is by hand, so change it in the same sitting.

The DNS wait

DNS changes can take anything from two minutes to a couple of hours. If the domain doesn’t work immediately, that’s normal — the GitHub Pages URL from step 3 works straight away and is a fine thing to test with.