One HTML file. The logo is embedded in it, so there are no images to break and nothing to upload alongside.
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.
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.
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:
PRIVACY-POLICY.md — the sourcelib/policyText.js — what the app shows in Settingssite/privacy/index.html — what the public URL servesbuild.py keeps 3 in step with 1. Number 2 is by hand, so change it in the
same sitting.
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.