Skip to content

Roadmap: new packages for AI/SaaS workloads #22

@beeeku

Description

@beeeku

Roadmap: new packages for AI/SaaS workloads

Tracks the next wave of @workkit/* packages, surfaced while building entryexit.ai. Each package is a reusable workkit primitive — not entryexit-specific. Build philosophy unchanged: composable, thin wrappers, types over docs, Standard Schema, zero runtime overhead.

Build sequence

Order Issue Package Days Unblocks
1 #23 @workkit/browser 1 Shared Browser Rendering primitive
2 #24 @workkit/pdf 1 Brief rendering, validates Browser Rendering at scale
3 #25 @workkit/agent 3-5 Everything LLM-touching
4 #26 @workkit/notify core 3-4 Notification dispatch foundation
5 #27 @workkit/notify email adapter 1 Email delivery (Resend + React Email)
6 #28 @workkit/notify in-app adapter 1 In-app feed + SSE
7 #29 @workkit/notify WhatsApp adapter 2 WA delivery (parallel with Meta + template approval, 5-10 day lead)

Cross-cutting

Decisions made

  • Build @workkit/browser first, not after @workkit/pdf. Reasoning: shared primitive (~80-150 LOC) is small, pdf becomes a thin consumer, future screenshot/OG generators drop in clean. Avoids extracting later and breaking pdf internals.
  • Agent is provider-agnostic (via @workkit/ai-gateway), not Claude-only. Compounds across SaaS.
  • Handoffs ship in agent v1 (~50 extra LOC, entryexit Research Desk needs it).
  • @workkit/next deferred. Cloudflare Pages' getCloudflareContext() covers it for now. Revisit only when 2+ projects hit the same boilerplate pain.

Explicit non-goals

  • @workkit/mcp-server@modelcontextprotocol/sdk/server already works in a Worker.
  • @workkit/openapi@workkit/api already emits OpenAPI.
  • @workkit/vectorize — defer until a real RAG case lands.
  • @workkit/billing — keep product-specific until 2+ products need the same shape.

Constitution (cross-cutting, see #30)

  • Zero runtime overhead — reject heavy deps without justification
  • Standard Schema only for validation (no Zod-hardcoded signatures)
  • Every package wires @workkit/testing
  • Single src/index.ts export per package
  • No cross-package imports except declared peer deps
  • Changeset required on every public API change

Open questions

  1. Notify template system — inline v1 fine for entryexit. Promote to D1/R2 registry only when non-engineers need to edit copy.
  2. Notify WhatsApp BSP — Gupshup vs Interakt vs AiSensy. Build adapter interface first, swap concrete BSP after pricing + template approval UX comparison.
  3. PDF cost — alert at 50k Browser Rendering sessions/month. Re-evaluate @react-pdf/renderer if we cross that line.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions