Launch: privacy and terms pages, Urdu 404 and error pages #88

Merged
anas merged 1 commits from feature/launch-pages into main 2026-10-09 19:48:34 +00:00
Owner

Closes #80. Part of #81; the API side (JSON errors without internal details) comes with the monitoring PR (#82).

رازداری (/privacy), written from what the code actually keeps:

  • Reading without an account: no account needed. Preferences stay in the browser, apart from a small numerals cookie. The address is held briefly for sign-in limits; error records keep the page and time.
  • With an account: email, an irreversible password hash, optional name and bio, the reader's library and notes (visible only to them), and a 30-day session cookie (only its hash is kept on the server).
  • Moderators' work is public: published changes are recorded in the open data repo with their public name, never their email, and stay after the account is deleted.
  • Other sites only on the reader's choice: Wikimedia audio, archive.org books, Google search.
  • Rights: edit or delete the account and everything in it; ask for a copy.

استعمال کی شرائط (/terms):

  • licences: public-domain texts, data CC BY-SA 4.0, code GPL v3 without the name and logo (NOTICE, TRADEMARKS.md), e-books under their stated rights;
  • account rules;
  • moderators' and uploaders' responsibilities: uploaders confirm the right to share, reviewers check;
  • reporting problems and copyright claims;
  • limitation of liability.

404 (404.astro) in Urdu, with home, search and tags. Pages that answer "not found" (a missing poet or work) show it too, with status 404.

500 (500.astro): a calm Urdu message with no internal details; the error goes to the server log.

Links: both pages in the footer; a line on the sign-up page.

Contact: in brand.ts. For now it is the repository's issues; it should become an email address or a contact form when you choose one.

Tested on a test server:

  • /privacy and /terms: 200;
  • an unknown address, a missing poet and a missing work: the Urdu 404 page with status 404;
  • with the API unreachable: the Urdu error page with status 500, nothing internal on the page, the error in the log;
  • screenshots in dark mode.

🤖 Generated with Claude Code

Closes #80. Part of #81; the API side (JSON errors without internal details) comes with the monitoring PR (#82). **رازداری** (`/privacy`), written from what the code actually keeps: - **Reading without an account:** no account needed. Preferences stay in the browser, apart from a small numerals cookie. The address is held briefly for sign-in limits; error records keep the page and time. - **With an account:** email, an irreversible password hash, optional name and bio, the reader's library and notes (visible only to them), and a 30-day session cookie (only its hash is kept on the server). - **Moderators' work is public:** published changes are recorded in the open data repo with their **public name**, never their email, and stay after the account is deleted. - **Other sites only on the reader's choice:** Wikimedia audio, archive.org books, Google search. - **Rights:** edit or delete the account and everything in it; ask for a copy. **استعمال کی شرائط** (`/terms`): - licences: public-domain texts, data CC BY-SA 4.0, code GPL v3 without the name and logo (NOTICE, TRADEMARKS.md), e-books under their stated rights; - account rules; - moderators' and uploaders' responsibilities: uploaders confirm the right to share, reviewers check; - reporting problems and copyright claims; - limitation of liability. **404** (`404.astro`) in Urdu, with home, search and tags. Pages that answer "not found" (a missing poet or work) show it too, with status 404. **500** (`500.astro`): a calm Urdu message with no internal details; the error goes to the server log. **Links:** both pages in the footer; a line on the sign-up page. **Contact:** in `brand.ts`. For now it is the repository's issues; it should become an email address or a contact form when you choose one. **Tested** on a test server: - /privacy and /terms: 200; - an unknown address, a missing poet and a missing work: the Urdu 404 page with status 404; - with the API unreachable: the Urdu error page with status 500, nothing internal on the page, the error in the log; - screenshots in dark mode. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
anas added 1 commit 2026-10-09 17:26:48 +00:00
anas merged commit b6f6c708a1 into main 2026-10-09 19:48:34 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: anas/divan#88
No description provided.