# Blog v1.0 — Production Deployment Checklist **Owner:** Daedalus (frontend) + Socrates (backend) **Approver:** Matt **Date:** 2026-04-21 **Status:** Ready for deployment --- ## Pre-Deployment ### 1. Bundle the Frontend ```bash # On workspace-daedalus: cd ~/.openclaw/workspace-daedalus tar -czf blog-frontend-$(date +%Y%m%d).tar.gz blog/templates blog/static blog/admin ``` ### 2. Copy to titanium-butler ```bash scp blog-frontend-20260421.tar.gz hoffmann_admin@titanium-butler:~/ ``` ### 3. Deploy Frontend Files ```bash # SSH to titanium-butler: ssh hoffmann_admin@titanium-butler cd ~ bash workspace-daedalus/blog/deploy-frontend.sh ``` ### 4. Verify File Permissions ```bash # On titanium-butler after deploy: ls -la /home/hoffmann_admin/hoffdesk/blog/templates/ ls -la /home/hoffmann_admin/hoffdesk/blog/static/ ``` --- ## Backend Requirements (Socrates) ### 5. API Routes Wired ✅ - [x] `/admin/posts` — POST list, GET list - [x] `/admin/posts/new` — GET form - [x] `/admin/posts/{id}` — GET edit form - [x] `/admin/posts/{id}/delete` — POST delete - [x] `/admin/posts/{id}/publish` — POST publish - [x] `/admin/content/health` — GET pipeline status - [x] `/admin/content/generate` — POST generate content - [x] `/admin/content/jobs/{job_id}` — GET job status - [x] `/admin/content/jobs/{job_id}/cancel` — POST cancel ### 6. Static files - [x] `fuse.min.js` — Fuzzy search library (CDN or local copy needed) ### 7. Radicale/CalDAV Status (Cal.com integration) - [ ] Socrates to verify calendar sync is working - [ ] Blog can read events for "upcoming" widget if needed --- ## Post-Deployment Verification ### 8. Smoke Tests ```bash # Public site curl https://blog.hoffdesk.com/ # Admin panel curl https://blog.hoffdesk.com/admin/ # RSS feed curl https://blog.hoffdesk.com/blog/feed.xml # API posts curl https://blog.hoffdesk.com/admin/api/posts ``` ### 9. Design Verification - [ ] Index page renders correctly on mobile (375px) - [ ] Index page renders correctly on desktop (1280px) - [ ] Category bar is collapsible on mobile - [ ] Search overlay opens on click - [ ] Hero card displays with image - [ ] Post cards display with images ### 10. Content Generation Test - [ ] Navigate to `/admin/posts/new` - [ ] Enter topic: "Why I switched from Pi-hole to AdGuard" - [ ] Click Magic Wand - [ ] Verify 5 stages animate - [ ] Verify content populates editor - [ ] Save draft --- ## Rollback Plan If something breaks: ```bash # On titanium-butler: ls /home/hoffmann_admin/hoffdesk/.backup-*/ # Find latest backup directory # Restore: cp -r .backup-YYYYMMDD-HHMMSS/* /home/hoffmann_admin/hoffdesk/blog/ ``` --- ## DNS / Cloudflare - [x] `blog.hoffdesk.com` → tunnel to titanium-butler:5000 ✅ (existing) - [x] `hook.hoffdesk.com` → webhook tunnel ✅ (existing) --- ## Notes - Dev server files are in `workspace-daedalus/blog/` and NOT the same as production - Production files live at `/home/hoffmann_admin/hoffdesk/blog/` - Admin templates at `/home/hoffmann_admin/hoffdesk/blog/admin/templates/`