Skip to content

Repository files navigation

OneMessage — public website

The donation page and the policy pages the app stores require. Plain static HTML: no build step, no framework, no dependencies. Upload the folder and it works.

Pages

File Served at Why it exists
index.html / Donation page — QR, UPI ID, where the money goes
privacy-policy.html /privacy-policy Required by both stores
delete-account.html /delete-account Required by Google Play for any app with accounts
support.html /support Required by Apple (Support URL in App Store Connect)
terms.html /terms Terms of Service / EULA
community-guidelines.html /community-guidelines Required in substance for user-generated content (Apple 1.2, Play UGC)
child-safety.html /child-safety Required by Google Play Child Safety Standards, because the app has chat
404.html any unknown path

Plus robots.txt, sitemap.xml, and host config in netlify.toml / vercel.json / _redirects.

Before you deploy — three things to change

1. The QR and the UPI ID currently point at different accounts

This is the important one.

  • The typed UPI ID, the Copy button and the Open UPI app button all read from one place: the PAYMENT object near the top of index.html. It is currently onemessage@axl.
  • The QR image (assets/upi-qr.png) is a separate file. Decoding it gives upi://pay?pa=9632716392@axl&pn=******6392.

So a donor who scans pays 9632716392@axl, and a donor who types pays onemessage@axl. Fix one or the other before going live:

  • If onemessage@axl is correct, replace assets/upi-qr.png with the QR for that account (export it from the app that issued the handle).
  • If the PhonePe QR is correct, change upiId in index.html to 9632716392@axl.

Then confirm with a ₹1 test payment both ways.

2. The domain

Everything assumes https://onemessage.app, because that is what the app already links to:

frontend/src/app/(auth)/register.js → PRIVACY_POLICY_URL = 'https://onemessage.app/privacy-policy'

If you deploy somewhere else, update the domain in sitemap.xml, robots.txt and the <link rel="canonical"> / og:url tags:

grep -rl "onemessage.app" . | xargs sed -i 's|https://onemessage.app|https://YOUR-DOMAIN|g'

…and update PRIVACY_POLICY_URL in the app to match.

3. The contact email

onemessagedev@gmail.com appears on the support, privacy, terms, delete-account and child-safety pages. If you would rather publish a dedicated address, change it everywhere at once:

grep -rl "onemessagedev@gmail.com" . | xargs sed -i 's|onemessagedev@gmail.com|support@onemessage.app|g'

Whatever you choose must be an address someone actually reads — app reviewers do email it, and the child-safety page commits to prioritising reports sent there.

Clean URLs matter

The app links to /privacy-policy with no .html. Netlify, Vercel, Cloudflare Pages and GitHub Pages all serve privacy-policy.html at that path automatically. If you use a plain nginx or Apache host, enable it yourself:

# nginx
location / { try_files $uri $uri.html $uri/ =404; }
# Apache — .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L]

Internal links deliberately keep the .html suffix so you can open the folder straight off disk to preview it. The <link rel="canonical"> on each page points at the clean URL, which is what search engines index.

Deploying

Netlify — drag the folder onto https://app.netlify.com/drop, or:

npx netlify-cli deploy --prod --dir .

Vercel

npx vercel --prod

Cloudflare Pages — connect the repo, build command empty, output directory .

GitHub Pages — push to a repo, Settings → Pages → deploy from branch root. .nojekyll is already there so the _redirects file is not swallowed.

Then point your domain at it and make sure HTTPS is on. Both stores reject a policy URL that is not reachable over HTTPS.

Where each URL goes in the store consoles

Google Play Console

  • Policy → App content → Privacy policy: https://onemessage.app/privacy-policy
  • Policy → App content → Data safety → deletion URL: https://onemessage.app/delete-account
  • Policy → App content → Child safety standards: https://onemessage.app/child-safety
  • Store listing → Contact details: the email above, plus https://onemessage.app/support

App Store Connect

  • App Privacy → Privacy Policy URL: https://onemessage.app/privacy-policy
  • App Information → Support URL: https://onemessage.app/support
  • App Information → Marketing URL (optional): https://onemessage.app/
  • App Information → License Agreement: Apple's standard EULA, or paste terms.html

Preview locally

python -m http.server 8000

Then open http://127.0.0.1:8000.

Checking it after a change

scripts/ is intentionally absent — there is nothing to build. But the site was verified with a link/structure checker before shipping. To re-run that idea quickly:

  • every internal href and src resolves to a real file
  • one <h1> per page, tags balanced, lang set
  • every page has title, description, viewport, canonical and favicon
  • every page is linked from the footer and listed in sitemap.xml

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages