Directive: proper status page instead of raw /health JSON

This commit is contained in:
Hoid 2026-02-16 19:38:01 +00:00
parent 84aacf0f4f
commit c4c16326be
3 changed files with 48 additions and 8 deletions

View file

@ -3,7 +3,7 @@
"phaseLabel": "Build Production-Grade Product",
"status": "near-launch-ready",
"product": "DocFast \u2014 HTML/Markdown to PDF API",
"currentPriority": "1) CI/CD secrets setup. 2) Marketing launch. 3) Proactive improvements.",
"currentPriority": "1) BUG-049 invoice fix (investor action). 2) Marketing launch prep. 3) Remaining MEDIUM audit items.",
"ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip.",
"ownerDirectives": [
"Stripe: owner has existing Stripe account from another project \u2014 use same account, just create separate Product + webhook endpoint for DocFast.",
@ -15,6 +15,7 @@
"CI/CD PIPELINE: Forgejo Actions workflow created. Needs 3 repository secrets added in Forgejo settings (SERVER_HOST, SERVER_USER, SSH_PRIVATE_KEY).",
"REPRODUCIBLE INFRASTRUCTURE: DONE \u2014 setup.sh, docker-compose, configs, disaster recovery docs all in infrastructure/ directory.",
"PRO PLAN LIMITS: DONE \u2014 Set to 2,500 PDFs/month at \u20ac9/mo. Competitive with html2pdf.app. Enforced in code, updated on landing page + JSON-LD + Stripe.",
"STATUS PAGE: The health link on the website currently points to the raw API /health endpoint which returns JSON — unprofessional. Create a proper /status page with a nice UI showing service status, uptime, response time, etc. Keep the raw /health API endpoint for monitoring, but the public-facing link should be a styled status page.",
"SUPPORT EMAIL LIVE: support@docfast.dev is now active in FreeScout. The CEO can spawn a support agent that accesses FreeScout via API to handle customer inquiries. Update the website contact/support references to use this address.",
"BUG-049 HIGH: Pro customers do not receive an invoice after payment. This is legally required in Austria/EU. Stripe can auto-generate invoices for subscriptions \u2014 enable Stripe Invoicing or implement invoice generation. Customer must receive a proper invoice with: company name, ATU number, invoice number, date, amount, VAT breakdown.",
"WEBSITE TEMPLATING: DONE \u2014 Build-time system with partials (nav/footer/styles). Source in public/src/, build with node scripts/build-html.cjs."
@ -48,7 +49,9 @@
"proLimitsSet": true,
"proLimitsNote": "2,500 PDFs/month for Pro. Enforced in usage middleware. Landing page, JSON-LD, Stripe all consistent.",
"websiteTemplating": true,
"websiteTemplatingNote": "Build-time HTML templating with shared nav/footer partials. npm run build:pages"
"websiteTemplatingNote": "Build-time HTML templating with shared nav/footer partials. npm run build:pages",
"supportEmailLive": true,
"supportEmailNote": "support@docfast.dev on footer, impressum, terms, openapi.json, landing page"
},
"loadTestResults": {
"sequential": "~2.1s per PDF, ~28/min",
@ -91,11 +94,21 @@
"openBugs": {
"CRITICAL": [],
"HIGH": [
"BUG-049: No invoice sent to Pro customers after payment"
"BUG-049: No invoice email sent to Pro customers \u2014 needs Stripe Dashboard setting enabled"
],
"MEDIUM": [],
"LOW": [],
"note": "All bugs (040-048) resolved as of Session 41. BUG-046 (usage data leak), BUG-047 (copy button), BUG-048 (change email) fixed."
"MEDIUM": [
"Audit #10: Usage data written on every request (should batch)",
"Audit #12: In-memory caches can diverge from DB",
"Audit #14: No per-endpoint body size limits",
"Audit #15: Browser pool queue no per-key fairness",
"Audit #17: No duplicate session_id check on billing success"
],
"LOW": [
"Audit #18: Rate limit store potential memory growth",
"Audit #22: Unused import in convert.ts",
"Audit #25: Inconsistent error response shapes"
],
"note": "Session 45: Fixed audit #3 (Critical), #6, #7, #11 (HIGH). Added support@docfast.dev to all pages."
},
"blockers": [],
"resolvedBlockers": [
@ -104,5 +117,5 @@
"Off-site backups \u2014 DONE 2026-02-16, Hetzner Storage Box configured with BorgBackup"
],
"startDate": "2026-02-14",
"sessionCount": 44
"sessionCount": 45
}