msos/docs/PRE-LAUNCH-TODO.md

60 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MSOS — Pre-Launch To-Do (master list)
Paused before go-live. This is the running list of what's left. Detailed
placeholder inventory lives in `PRE-LAUNCH-CHECKLIST.md`; GA4 setup in
`GA4-ASSISTANT-REPORT.md`.
## 🔴 Must do before launch
- [ ] **Domain decision (most important).** The live site runs on
`msos.spletnimojster.si`. `msosorg.com` does NOT serve the files (404s),
but all SEO tags (canonical/hreflang/sitemap) point to it.
- Option A: ask the host (Spletni Mojster) to point `msosorg.com` at the
same site folder → then re-add the canonical redirect (Claude can do the code).
- Option B: stay on `msos.spletnimojster.si` → flip the SEO tags to it (Claude can script this).
- [ ] **Homepage placeholder content** — replace Lorem-ipsum testimonials and the
leftover "Everything you need to know about the product and billing" line (en/mk/si).
- [ ] **"Coming soon" cards** — blog index (9) and news index (3), ×3 languages: publish or hide.
- [ ] **Student-guide hero images** — 31 pages ×3 languages still show an "Image placeholder" box.
- [ ] **MSOS Hub photos** — replace the temporary placeholder photos (see code comments in `msos-hub`).
- [ ] **Proofread MK/SI** — the machine-drafted curated assistant answers (`assistant.js` INTENTS)
and meta descriptions on legal / msos-hub / support.
- [ ] **Confirm Support-page bank details** are correct real values (IBAN SI56 0284 3026 6115 703 / SWIFT LJBASI2X).
## 🟡 Should do
- [ ] **GA4 custom dimensions** for the assistant (`q`, `result`, `q_lang`, `page_lang`) — see `GA4-ASSISTANT-REPORT.md`. Do this early so data collects.
- [ ] **Test the newsletter end-to-end** — a real MailerLite subscribe + confirmation email.
- [ ] **Commit the blog pages** once their content is finished (they already have the assistant widget in the working tree, uncommitted).
- [ ] **Privacy/cookie policy** — confirm it names Google (Analytics + Forms) and MailerLite as processors, and explains how to request data deletion (email info@msosorg.com). (Covers GDPR "user data deletion".)
## 🟢 Nice to have
- [ ] Wire the homepage "story" video (currently the play button was removed; image kept), or leave as-is.
- [ ] Re-compress the 6 images >250 KB; delete the stale unused `style.css`.
- [ ] Periodically bump Font Awesome (currently 6.5.1, pinned + SRI) and regenerate its integrity hash.
- [ ] Confirm the host takes docroot backups (source is already version-controlled in Gitea; form data in Google Sheets / MailerLite).
## 🛠 Maintenance / build steps to remember
- [ ] **After adding a brand-new page, run SEO.** The pre-commit hook
(`tools/git-hooks/pre-commit`, activate once with
`git config core.hooksPath tools/git-hooks`) auto-syncs the News hub,
homepage "Latest news", `/llms.txt` and `/links-for-bots/` on every commit —
but it does **not** run SEO. For a new page also:
1. add its date to `ARTICLE_DATES` in `tools/seo_inject.py`, then
2. run `python tools/seo_inject.py --all --sitemap` (SEO meta + canonical/hreflang + sitemap entry).
- Open decision: fold `seo_inject` into the hook or a deploy step so even this is hands-off
(kept out by default because it rewrites all ~225 pages).
## ✅ Done (for reference — already live/hardened)
- Security headers (HSTS, enforcing CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)
- HTTPS forced (http→https) + HSTS
- Content-Security-Policy **enforcing** (browser + production verified, 0 violations)
- Exposed-file lockdown (code dump, dev scripts, `.git`, `docs/`, directory listing all 403 live)
- XSS-safe output escaping (+ live-tested the one user-input page)
- No secrets in code; no PII in browser storage/URLs; no file uploads; no permissive CORS
- Accessibility (alt text, lang, labels, keyboard mobile menu), image dimensions (CLS), broken-page fixes
- Offline "Ask MSOS" assistant (search + curated answers, analytics, auto-rebuilding index)