DocFast MVP: HTML/Markdown to PDF API with invoice templates

This commit is contained in:
Hoid 2026-02-14 12:30:17 +00:00
parent 789b3bfeeb
commit 77ec1c5524
24 changed files with 5010 additions and 22 deletions

View file

@ -1,21 +1,24 @@
# Decisions Log
## 2026-02-14 — Phase 0: Business Model Analysis
## 2026-02-14 — Product: PDF API (approved by user)
Chose HTML/Markdown to PDF API over webhook relay and JSON schema validation. Fastest to ship, proven demand, clear monetization.
### Constraints Assessed
- €200 budget, no human identity for accounts/payments
- Must be fully automatable by AI agent
- Digital products only
- Human partner handles: domain purchases, account creation, payment setup
- Available tech: Go, TypeScript, Python; Forgejo for git; can deploy on existing infra
## 2026-02-14 — Name: DocFast
Product name "DocFast" — short, memorable, describes value prop (fast document generation). Domain TBD.
### Models Evaluated & Rejected
- **Content/SEO sites**: Too slow to monetize, saturated, requires ongoing content
- **Freelance marketplace**: Requires human identity, client calls
- **Course/info product**: Need audience first, slow ramp
- **Chrome extension**: App store accounts need identity, review process unpredictable
- **Newsletter**: Audience building too slow for €200 budget
- **Marketplace/platform**: Chicken-and-egg problem, needs critical mass
## 2026-02-14 — Tech Stack: TypeScript + Express + Puppeteer
- TypeScript for type safety and fast iteration
- Express for simplicity (no framework overhead)
- Puppeteer for high-fidelity PDF rendering (Chrome-based = pixel-perfect)
- Marked for markdown parsing
- Chose Puppeteer over wkhtmltopdf/pdfkit for better CSS support and template rendering quality
### Models Shortlisted (3 proposals)
See proposals below — sent to user for approval.
## 2026-02-14 — Templates: Invoice + Receipt first
Built-in invoice and receipt templates as differentiator. Most PDF API competitors are raw converters — templates add immediate value for common use cases.
## 2026-02-14 — Pricing model (planned)
- Free tier: 100 PDFs/month
- Pro: $9/mo for 5,000 PDFs
- Business: $29/mo for 25,000 PDFs
- Enterprise: custom
Not yet implemented — need Stripe integration.

View file

@ -22,3 +22,16 @@
- **Status:** Proposals v2 written, awaiting human decision
- **Next:** Build MVP once product is chosen
- **Blocker:** Need human to pick a product direction
## Session 3 — 2026-02-14 12:24 UTC (Morning Session 1)
- Phase 1: Build MVP — **core API complete and tested**
- Built "DocFast API" in TypeScript + Express + Puppeteer
- Endpoints working: HTML→PDF, Markdown→PDF, Invoice template, Receipt template
- Features: API key auth, rate limiting (100/min), helmet security headers
- All endpoints tested locally — HTML (11KB), Markdown (17KB), Invoice (25KB) PDFs generated successfully
- Added Dockerfile, README with full API docs
- Installed Chrome dependencies on VM for Puppeteer
- **Tech stack:** TypeScript, Express, Puppeteer, Marked
- **Status:** Core MVP functional, needs deployment
- **Next:** Ask human to create Forgejo repo, decide on hosting, add tests, build landing page
- **Blockers:** Need git repo + hosting

View file

@ -1,11 +1,21 @@
{
"phase": 1,
"phaseLabel": "Build MVP",
"status": "approved",
"product": "HTML/Markdown to PDF API",
"currentPriority": "Build the MVP. Markdown/HTML in, PDF out. Include built-in invoice templates as differentiator. Ship fast, test everything. Ask human to create a git repo when ready to push code.",
"humanFeedback": "User approved PDF API. Said 'lets go with the agent recommendation'. Start building.",
"blockers": [],
"status": "in-progress",
"product": "DocFast - HTML/Markdown to PDF API",
"currentPriority": "Deploy MVP. Need git repo on Forgejo and hosting. Add landing page. Consider adding more templates (letter, report). Write tests.",
"mvpStatus": {
"core": "done",
"endpoints": ["POST /v1/convert/html", "POST /v1/convert/markdown", "POST /v1/templates/:id/render", "GET /v1/templates"],
"templates": ["invoice", "receipt"],
"auth": "done",
"rateLimiting": "done",
"docker": "done",
"tests": "todo",
"landingPage": "todo",
"deployment": "todo"
},
"blockers": ["Need Forgejo repo created", "Need hosting decision (VPS or user's infra?)"],
"startDate": "2026-02-14",
"sessionCount": 3
"sessionCount": 4
}