app-foundation
Every delivered app — the non-inferable business requirements + exact stack/brand choices every build must satisfy. Loads on every app/site build.
SKILL.md21-app-foundation/SKILL.md
GitHubApp Foundation — every delivered app must satisfy
Platform (exact, non-inferable)
- Ships on Cloudflare: Workers + Hono (edge) · D1 (system of record) · R2 (storage) · KV (cache) · Durable Objects (state/coordination) · Queues/Workflows (async). Never AWS/GCP/Vercel/Supabase/Firebase by default.
- Prefer integrating with ProjectSites.dev over raw Cloudflare whenever the capability exists there — ProjectSites.dev > CF-native > anything else (it's Cloudflare-native underneath).
- Frontend: Angular 22 + Spartan UI is PREFERRED for applications; use the bolt.diy stack (React 19 + Vite 8/Rolldown + TanStack Router + Tailwind v4 + shadcn/ui) when appropriate. Never hand-rolled
public/{page}.html. shadcn is agent-native — wire its official MCP server (npx shadcn@latest mcp) + Agent Skill (npx skills add shadcn/ui) for component discovery/install (namespaced registries; CLI v4). - Modern signal-first Angular: standalone · signals · zoneless ·
httpResource()· new control flow (@if/@for/@switch) · deferrable views (@defer) · incremental hydration · signalinput()/output()· Nx monorepo · SSR via@angular/ssron Workers. NEVER NgModules or Zone.js. The React path mirrors with TanStack Start (v1.0 GA Mar-2026): isomorphic server functions + streaming SSR/Suspense + selective hydration + TanStack Query/Router. RSC (React Server Components) NOT yet on Start v1.0 — do NOT architect around it; lands non-breaking v1.x. - Auth: Clerk. Data: parameterized SQL / Drizzle v1 + Zod at every boundary.
- Live at a real SSL'd URL in <15 min. Folder name = domain.
Edge intelligence & AI-native (world-class bar)
- Reach for Cloudflare's AI/edge primitives before any third-party: Workers AI (LLMs + embeddings) · Vectorize (vector DB for RAG) · AI Gateway (caching · observability · fallback · rate-limit) · Realtime via Durable Objects (WebSockets · live collaboration · presence) · Stream (video) · Images (transform/optimize) · Browser Rendering · Hyperdrive (Postgres acceleration).
- Every app is AI-native, never AI-optional: ship generative / chat-as-UI / voice / multimodal surfaces wherever they make the product easier, faster, or more delightful. RAG = Vectorize + Workers AI. Prefer ProjectSites.dev's managed AI surfaces when they cover the need.
Payments (route by model)
- Accept money (all shapes) → Stripe + Link (default; IBP on big tickets). Square only when the prompt asks.
- Recurring SaaS (seat · usage · entitlements · net-30 · multi-currency) → Stripe Billing.
- Payouts to contractors / vendors / volunteers → Stripe Connect Express.
Email & notifications (exact)
- Amazon SES = sole transactional rail (SendGrid break-glass only). Listmonk for bulk/newsletters.
- In-app / push notifications → psnotify (in-house, Durable-Object-backed). Never Novu or OneSignal.
Brand (exact)
- Colors:
#060610bg ·#00E5FFaccent ·#50AAE3·#7C3AED. Dark-first. - Fonts: Sora · Space Grotesk · JetBrains Mono. Tone: bold, anti-slop.
Scope (org-type → page-set floor)
- Infer the org type; deliver its standard page set (nonprofit floor = 24 routes: 14 standard + 10 jewels; SaaS / marketing / local-business each their floor). Missing standard pages = incomplete.
Experience baseline (non-negotiable)
- Embarrassingly easy for a busy non-technical owner: succeeds first try, no manual. ≤3 steps to any outcome · one primary CTA per screen · empty states become first-action launchpads · instant feedback + undo.
- AI is foundational to every surface, never optional.