# Project State & Enhancement Backlog Living list of what's done and what's next for blog.hoelee.com. Work through these **one by one** β€” don't batch unrelated changes. Check off items as they land. **Status key:** βœ… done Β· πŸ”΅ in progress Β· ⬜ not started --- ## Done (foundation) - βœ… Astro 5 static + Markdown, Gitea Actions CI/CD β†’ nginx β†’ Cloudflare (deployed) - βœ… Design system: hoelee.com brand palette, Inter + JetBrains Mono, light/dark, sticky nav, code copy button - βœ… Brand "Mr Hoelee" (replaced "hoelee.dev") - βœ… Author card + `Person`/`ProfilePage` JSON-LD (E-E-A-T), article meta, reading time, related posts - βœ… Full SEO: canonical, Open Graph (+dims), twitter:card, favicon (all sizes), RSS + sitemap - βœ… Category pages (`/categories/`, `/categories/[category]/`) - βœ… Locale scheme: English flat in `posts/`, Chinese in `posts/zh/` (lang derived from folder, no `lang:` frontmatter) - βœ… Language switcher in nav β€” links to the **same post** in the other language (auto-matches by `zh/` prefix; falls back to section landing when no translation) - βœ… Locale-aware nav labels (EN: Posts/Categories/About/RSS; ZH: ζ–‡η« /εˆ†η±»/ε…³δΊŽ/RSS) - βœ… Dark mode default (light is opt-in via toggle) - βœ… Case study post "How I Host This Blog" β€” docker-compose sample + real install gotchas (from commit history) - βœ… Chinese translation of the case study (`posts/zh/how-i-host-this-blog.md`) - βœ… hello-world intro post β€” "What I write about" skills map + corrected business framing - βœ… Business framing corrected everywhere: website design & development = primary; email hosting = secondary (not the focus) - βœ… Knowledge guides in `docs/` (content, design, seo, ops, post-guideline) + README index + `hoelee-blog` skill - βœ… Both repos public (Gitea + GitHub) with title/description/homepage/topics + `v1.0.0` release --- ## Tier 1 β€” Content (80% of value; do this first) - ⬜ **Write the 2 flagship case studies** β€” highest ROI, these are the portfolio: - ⬜ "How I Built the DigiKedai Telegram AI Bot" (DSM Docker + Cloudflare tunnel webhook + LiteLLM) - ⬜ "Self-Hosting a Mem0 Memory Stack" (API + LiteLLM + pgvector) - ⬜ **2–3 gotcha posts** from real debugging history (short, Google-friendly): - ⬜ "The Traefik forward-auth gotcha that cost me a day" - ⬜ "Site-to-site OpenVPN behind CGNAT" - ⬜ "Fixing the WordPress /cv 301β†’404 chain" (from own audit) - ⬜ **"Hard job β†’ post" habit** β€” every solved problem becomes a `notes` entry the same week (template in `docs/content-guide.md` Β§4) --- ## Tier 2 β€” Structural gaps - ⬜ **Tag pages** β€” tags currently render as labels only; add `/tags/[tag]/` archive pages for fine-grained discovery + internal linking - ⬜ **Categories page shows all 7 categories** (not just those with posts) β€” signal intended coverage; show "0 posts / coming soon" for empty ones - ⬜ **Search** β€” AstroPaper-style fuzzy search (low priority until >20 posts) - ⬜ **Dedicated `/zh/posts/` and `/zh/categories/` archive pages** β€” currently zh nav links point to `/zh/` landing; split into real archives when Chinese content grows --- ## Tier 3 β€” Polish / later - ⬜ **Google Search Console submission** β€” submit `sitemap-index.xml` for faster indexing - ⬜ **Newsletter / email capture** β€” only after real traffic exists --- ## Conventions (non-negotiable) - Push git.hoelee.com first, then GitHub - English-first; Chinese selective (2–3 flagship case studies); no Malay - No overclaiming, especially Web3 - Name identity: "Lee Teong Hoe" / "Mr Hoelee" + same photo + same `sameAs` handles everywhere - Business framing: website design & development is primary; email hosting is secondary - See `docs/post-guideline.md` for post-writing rules (title case, locale structure, frontmatter, etc.)