DocFast Session 44: security audit + 8 fixes, templating refactor, Pro limit fix

This commit is contained in:
Hoid 2026-02-16 18:59:13 +00:00
parent 0abd81f024
commit 3b7375d0a5
3 changed files with 89 additions and 16 deletions

View file

@ -1,9 +1,9 @@
{
"phase": 1,
"phaseLabel": "Build Production-Grade Product",
"status": "launch-ready",
"status": "near-launch-ready",
"product": "DocFast \u2014 HTML/Markdown to PDF API",
"currentPriority": "1) Marketing launch prep. 2) UX polish & accessibility. 3) Performance optimization. All critical blockers RESOLVED.",
"currentPriority": "1) CI/CD secrets setup. 2) Marketing launch. 3) Proactive improvements.",
"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,7 +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.",
"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 enable Stripe Invoicing or implement invoice generation. Customer must receive a proper invoice with: company name, ATU number, invoice number, date, amount, VAT breakdown.",
"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."
],
"launchChecklist": {
@ -47,7 +47,7 @@
"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 partials for nav/footer/styles. Single source of truth."
"websiteTemplatingNote": "Build-time HTML templating with shared nav/footer partials. npm run build:pages"
},
"loadTestResults": {
"sequential": "~2.1s per PDF, ~28/min",
@ -88,17 +88,19 @@
},
"openBugs": {
"CRITICAL": [],
"HIGH": ["BUG-049: No invoice sent to Pro customers after payment"],
"HIGH": [
"BUG-049: No invoice sent to Pro customers after payment"
],
"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."
},
"blockers": [],
"resolvedBlockers": [
"E2E Pro payment test — DONE 2026-02-16, investor paid €9 successfully, Pro key provisioned",
"CI/CD secrets DONE 2026-02-16, 3 Forgejo secrets added by investor",
"Off-site backups DONE 2026-02-16, Hetzner Storage Box configured with BorgBackup"
"E2E Pro payment test \u2014 DONE 2026-02-16, investor paid \u20ac9 successfully, Pro key provisioned",
"CI/CD secrets \u2014 DONE 2026-02-16, 3 Forgejo secrets added by investor",
"Off-site backups \u2014 DONE 2026-02-16, Hetzner Storage Box configured with BorgBackup"
],
"startDate": "2026-02-14",
"sessionCount": 42
"sessionCount": 44
}