codeloop-mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/auth/api_key.d.ts +6 -0
  2. package/dist/auth/api_key.d.ts.map +1 -0
  3. package/dist/auth/api_key.js +87 -0
  4. package/dist/auth/api_key.js.map +1 -0
  5. package/dist/auth/usage_tracker.d.ts +7 -0
  6. package/dist/auth/usage_tracker.d.ts.map +1 -0
  7. package/dist/auth/usage_tracker.js +71 -0
  8. package/dist/auth/usage_tracker.js.map +1 -0
  9. package/dist/config.d.ts +4 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +41 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/diagnosis/vision_reviewer.d.ts +27 -0
  14. package/dist/diagnosis/vision_reviewer.d.ts.map +1 -0
  15. package/dist/diagnosis/vision_reviewer.js +345 -0
  16. package/dist/diagnosis/vision_reviewer.js.map +1 -0
  17. package/dist/evidence/artifacts.d.ts +12 -0
  18. package/dist/evidence/artifacts.d.ts.map +1 -0
  19. package/dist/evidence/artifacts.js +60 -0
  20. package/dist/evidence/artifacts.js.map +1 -0
  21. package/dist/evidence/screenshot_diff.d.ts +30 -0
  22. package/dist/evidence/screenshot_diff.d.ts.map +1 -0
  23. package/dist/evidence/screenshot_diff.js +144 -0
  24. package/dist/evidence/screenshot_diff.js.map +1 -0
  25. package/dist/index.d.ts +3 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +276 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/recommendations/knowledge_base.d.ts +21 -0
  30. package/dist/recommendations/knowledge_base.d.ts.map +1 -0
  31. package/dist/recommendations/knowledge_base.js +839 -0
  32. package/dist/recommendations/knowledge_base.js.map +1 -0
  33. package/dist/recommendations/selector.d.ts +3 -0
  34. package/dist/recommendations/selector.d.ts.map +1 -0
  35. package/dist/recommendations/selector.js +305 -0
  36. package/dist/recommendations/selector.js.map +1 -0
  37. package/dist/runners/base.d.ts +21 -0
  38. package/dist/runners/base.d.ts.map +1 -0
  39. package/dist/runners/base.js +70 -0
  40. package/dist/runners/base.js.map +1 -0
  41. package/dist/runners/flutter.d.ts +4 -0
  42. package/dist/runners/flutter.d.ts.map +1 -0
  43. package/dist/runners/flutter.js +72 -0
  44. package/dist/runners/flutter.js.map +1 -0
  45. package/dist/runners/generic.d.ts +3 -0
  46. package/dist/runners/generic.d.ts.map +1 -0
  47. package/dist/runners/generic.js +65 -0
  48. package/dist/runners/generic.js.map +1 -0
  49. package/dist/runners/maestro.d.ts +12 -0
  50. package/dist/runners/maestro.d.ts.map +1 -0
  51. package/dist/runners/maestro.js +133 -0
  52. package/dist/runners/maestro.js.map +1 -0
  53. package/dist/runners/playwright.d.ts +3 -0
  54. package/dist/runners/playwright.d.ts.map +1 -0
  55. package/dist/runners/playwright.js +76 -0
  56. package/dist/runners/playwright.js.map +1 -0
  57. package/dist/state/section_registry.d.ts +27 -0
  58. package/dist/state/section_registry.d.ts.map +1 -0
  59. package/dist/state/section_registry.js +219 -0
  60. package/dist/state/section_registry.js.map +1 -0
  61. package/dist/tools/design_compare.d.ts +4 -0
  62. package/dist/tools/design_compare.d.ts.map +1 -0
  63. package/dist/tools/design_compare.js +73 -0
  64. package/dist/tools/design_compare.js.map +1 -0
  65. package/dist/tools/diagnose.d.ts +3 -0
  66. package/dist/tools/diagnose.d.ts.map +1 -0
  67. package/dist/tools/diagnose.js +236 -0
  68. package/dist/tools/diagnose.js.map +1 -0
  69. package/dist/tools/gate_check.d.ts +3 -0
  70. package/dist/tools/gate_check.d.ts.map +1 -0
  71. package/dist/tools/gate_check.js +201 -0
  72. package/dist/tools/gate_check.js.map +1 -0
  73. package/dist/tools/integration_check.d.ts +13 -0
  74. package/dist/tools/integration_check.d.ts.map +1 -0
  75. package/dist/tools/integration_check.js +70 -0
  76. package/dist/tools/integration_check.js.map +1 -0
  77. package/dist/tools/release_readiness.d.ts +3 -0
  78. package/dist/tools/release_readiness.d.ts.map +1 -0
  79. package/dist/tools/release_readiness.js +153 -0
  80. package/dist/tools/release_readiness.js.map +1 -0
  81. package/dist/tools/replan.d.ts +12 -0
  82. package/dist/tools/replan.d.ts.map +1 -0
  83. package/dist/tools/replan.js +118 -0
  84. package/dist/tools/replan.js.map +1 -0
  85. package/dist/tools/section_status.d.ts +24 -0
  86. package/dist/tools/section_status.d.ts.map +1 -0
  87. package/dist/tools/section_status.js +61 -0
  88. package/dist/tools/section_status.js.map +1 -0
  89. package/dist/tools/update_baseline.d.ts +11 -0
  90. package/dist/tools/update_baseline.d.ts.map +1 -0
  91. package/dist/tools/update_baseline.js +19 -0
  92. package/dist/tools/update_baseline.js.map +1 -0
  93. package/dist/tools/verify.d.ts +4 -0
  94. package/dist/tools/verify.d.ts.map +1 -0
  95. package/dist/tools/verify.js +136 -0
  96. package/dist/tools/verify.js.map +1 -0
  97. package/dist/tools/visual_review.d.ts +4 -0
  98. package/dist/tools/visual_review.d.ts.map +1 -0
  99. package/dist/tools/visual_review.js +142 -0
  100. package/dist/tools/visual_review.js.map +1 -0
  101. package/package.json +44 -0
@@ -0,0 +1,839 @@
1
+ export const KNOWLEDGE_BASE = [
2
+ // --- hosting ---
3
+ {
4
+ name: "Vercel",
5
+ description: "Serverless-first platform for frontend frameworks with edge functions, previews, and analytics add-ons.",
6
+ website: "https://vercel.com",
7
+ category: "hosting",
8
+ bestFor: "Next.js and static sites with global edge delivery and zero-config Git deploys.",
9
+ pricingTier: "Free hobby tier; Pro from ~$20/user/mo; Enterprise custom.",
10
+ freeTier: true,
11
+ selfHosted: false,
12
+ openSource: false,
13
+ complianceNotes: "SOC 2 Type II; EU data residency options on Enterprise; sign DPA for GDPR.",
14
+ integrationComplexity: "trivial",
15
+ supportedStacks: ["nextjs", "react", "svelte", "vue", "node", "static"],
16
+ strengths: ["Best-in-class Next.js integration", "Preview deployments", "Edge network"],
17
+ weaknesses: ["Vendor lock-in for advanced edge features", "Cold starts on infrequent serverless"],
18
+ tradeoffs: "Easiest path for Next/React at the cost of platform-specific conventions.",
19
+ starterTasks: [
20
+ "Connect GitHub and enable preview deployments for PRs.",
21
+ "Configure environment variables per environment.",
22
+ "Add edge middleware for auth or geo routing.",
23
+ ],
24
+ recommendationType: "neutral",
25
+ },
26
+ {
27
+ name: "Netlify",
28
+ description: "JAMstack hosting with serverless functions, forms, identity, and split testing.",
29
+ website: "https://www.netlify.com",
30
+ category: "hosting",
31
+ bestFor: "Static sites and SPAs with Netlify Functions and generous free tier.",
32
+ pricingTier: "Free tier; Pro from ~$19/seat/mo; Enterprise custom.",
33
+ freeTier: true,
34
+ selfHosted: false,
35
+ openSource: false,
36
+ complianceNotes: "SOC 2; GDPR-ready with DPA; EU edge options available.",
37
+ integrationComplexity: "trivial",
38
+ supportedStacks: ["react", "vue", "svelte", "gatsby", "astro", "static", "node"],
39
+ strengths: ["Simple DX", "Forms and split testing built in", "Good docs"],
40
+ weaknesses: ["Less deep Next.js coupling than Vercel", "Function limits on free tier"],
41
+ tradeoffs: "Great general JAMstack host; slightly less Next-optimized than Vercel.",
42
+ starterTasks: [
43
+ "Deploy from Git with build command and publish directory.",
44
+ "Enable Netlify Functions for API routes.",
45
+ "Set up branch deploy previews.",
46
+ ],
47
+ recommendationType: "neutral",
48
+ },
49
+ {
50
+ name: "Railway",
51
+ description: "PaaS for apps, databases, and cron with Git-based deploys and usage-based billing.",
52
+ website: "https://railway.app",
53
+ category: "hosting",
54
+ bestFor: "Full-stack Node, Python, Go, and Docker services with managed Postgres/Redis.",
55
+ pricingTier: "Trial credits; usage-based pay-as-you-go after.",
56
+ freeTier: true,
57
+ selfHosted: false,
58
+ openSource: false,
59
+ complianceNotes: "SOC 2; contact for GDPR DPA and data residency details.",
60
+ integrationComplexity: "moderate",
61
+ supportedStacks: ["node", "python", "go", "rust", "docker", "postgres"],
62
+ strengths: ["Fast provisioning", "First-class Docker", "Simple networking between services"],
63
+ weaknesses: ["Costs can spike with traffic if not capped", "Smaller ecosystem than hyperscalers"],
64
+ tradeoffs: "Flexible PaaS with less lock-in than serverless-only vendors but usage must be watched.",
65
+ starterTasks: [
66
+ "Create a project from GitHub repo.",
67
+ "Add a Postgres plugin and connect via private networking.",
68
+ "Configure health checks and custom domains.",
69
+ ],
70
+ recommendationType: "neutral",
71
+ },
72
+ {
73
+ name: "Render",
74
+ description: "Unified platform for web services, static sites, workers, and managed Postgres/Redis.",
75
+ website: "https://render.com",
76
+ category: "hosting",
77
+ bestFor: "Long-running web services and background workers with straightforward pricing.",
78
+ pricingTier: "Free tier for static/workers (limits); paid instances from a few dollars/mo.",
79
+ freeTier: true,
80
+ selfHosted: false,
81
+ openSource: false,
82
+ complianceNotes: "SOC 2; HIPAA available on Enterprise; standard GDPR processing terms.",
83
+ integrationComplexity: "moderate",
84
+ supportedStacks: ["node", "python", "go", "ruby", "docker", "postgres", "redis"],
85
+ strengths: ["Predictable service model", "Managed datastores", "Simple scaling sliders"],
86
+ weaknesses: ["Cold starts on free web services", "Fewer edge features than Vercel"],
87
+ tradeoffs: "Strong for traditional web apps; less edge-native than Vercel/Netlify.",
88
+ starterTasks: [
89
+ "Define build and start commands in render.yaml or dashboard.",
90
+ "Provision managed Postgres and link as env vars.",
91
+ "Set up cron jobs or background workers.",
92
+ ],
93
+ recommendationType: "neutral",
94
+ },
95
+ {
96
+ name: "Fly.io",
97
+ description: "Run Docker apps close to users globally with Machines, volumes, and private networking.",
98
+ website: "https://fly.io",
99
+ category: "hosting",
100
+ bestFor: "Low-latency APIs and WebSockets with full VM-style control at the edge.",
101
+ pricingTier: "Free allowances; pay for CPU/RAM/bandwidth beyond.",
102
+ freeTier: true,
103
+ selfHosted: false,
104
+ openSource: false,
105
+ complianceNotes: "GDPR DPA available; review regional deployment for data residency.",
106
+ integrationComplexity: "complex",
107
+ supportedStacks: ["docker", "node", "go", "elixir", "rust", "postgres-lite"],
108
+ strengths: ["Global regions", "WebSockets and stateful workloads", "Volumes"],
109
+ weaknesses: ["Steeper learning curve", "Ops mindset required"],
110
+ tradeoffs: "Maximum control near users; more moving parts than managed serverless.",
111
+ starterTasks: [
112
+ "Install flyctl and run fly launch from Dockerfile.",
113
+ "Configure regions and scale counts per region.",
114
+ "Attach volumes for persistent data if needed.",
115
+ ],
116
+ recommendationType: "neutral",
117
+ },
118
+ {
119
+ name: "AWS Amplify",
120
+ description: "AWS-managed CI/CD and hosting for web apps with Cognito, AppSync, and S3 integration.",
121
+ website: "https://aws.amazon.com/amplify/",
122
+ category: "hosting",
123
+ bestFor: "Teams already on AWS wanting quick full-stack hosting with IAM and Cognito.",
124
+ pricingTier: "Pay per build minutes, hosting, and backend usage; free tier for new accounts.",
125
+ freeTier: true,
126
+ selfHosted: false,
127
+ openSource: false,
128
+ complianceNotes: "Inherits AWS compliance (SOC, HIPAA-eligible services); configure regions and KMS.",
129
+ integrationComplexity: "complex",
130
+ supportedStacks: ["react", "nextjs", "vue", "angular", "static", "graphql"],
131
+ strengths: ["Deep AWS integration", "Cognito and AppSync", "Enterprise SLAs via AWS"],
132
+ weaknesses: ["Console can feel heavy", "Build pipeline quirks vs Vercel"],
133
+ tradeoffs: "Powerful inside AWS; slower iteration than opinionated frontend hosts.",
134
+ starterTasks: [
135
+ "Connect repo and pick Amplify build settings.",
136
+ "Wire Cognito for auth.",
137
+ "Map custom domain via Route 53 or external DNS.",
138
+ ],
139
+ recommendationType: "neutral",
140
+ },
141
+ // --- email ---
142
+ {
143
+ name: "Mailgun",
144
+ description: "Transactional and marketing email API with validation, inbound routing, and logs.",
145
+ website: "https://www.mailgun.com",
146
+ category: "email",
147
+ bestFor: "High-volume transactional email with REST APIs and detailed deliverability tooling.",
148
+ pricingTier: "Trial then paid tiers; Foundation plan for smaller senders.",
149
+ freeTier: true,
150
+ selfHosted: false,
151
+ openSource: false,
152
+ complianceNotes: "SOC 2; GDPR and HIPAA options on higher tiers; EU region available.",
153
+ integrationComplexity: "moderate",
154
+ supportedStacks: ["node", "python", "php", "ruby", "go", "rest"],
155
+ strengths: ["Mature APIs", "Inbound parse", "Logs and analytics"],
156
+ weaknesses: ["Pricing jumps at scale", "UI less modern than newer vendors"],
157
+ tradeoffs: "Battle-tested for ops-heavy teams; less minimalist than Resend.",
158
+ starterTasks: [
159
+ "Verify sending domain with DNS records.",
160
+ "Send test message via API with template ID.",
161
+ "Enable webhooks for bounces and complaints.",
162
+ ],
163
+ recommendationType: "neutral",
164
+ },
165
+ {
166
+ name: "SendGrid",
167
+ description: "Twilio-owned email API and marketing campaigns with templates and stats.",
168
+ website: "https://sendgrid.com",
169
+ category: "email",
170
+ bestFor: "Transactional plus light marketing with large integration ecosystem.",
171
+ pricingTier: "Free limited daily sends; paid plans scale with volume.",
172
+ freeTier: true,
173
+ selfHosted: false,
174
+ openSource: false,
175
+ complianceNotes: "SOC 2; GDPR DPA; HIPAA available with proper configuration.",
176
+ integrationComplexity: "moderate",
177
+ supportedStacks: ["node", "python", "csharp", "java", "rest"],
178
+ strengths: ["Wide SDK support", "Marketing add-ons", "Twilio ecosystem"],
179
+ weaknesses: ["Support quality varies", "UI complexity"],
180
+ tradeoffs: "Safe default for enterprises already using Twilio stack.",
181
+ starterTasks: [
182
+ "Create API key and sender authentication.",
183
+ "Build dynamic template and send with substitutions.",
184
+ "Subscribe to event webhooks for delivery metrics.",
185
+ ],
186
+ recommendationType: "neutral",
187
+ },
188
+ {
189
+ name: "Postmark",
190
+ description: "Transactional-only email with strong deliverability focus and message streams.",
191
+ website: "https://postmarkapp.com",
192
+ category: "email",
193
+ bestFor: "Product emails where inbox placement and speed of delivery matter most.",
194
+ pricingTier: "No perpetual free tier; low entry paid per email blocks.",
195
+ freeTier: false,
196
+ selfHosted: false,
197
+ openSource: false,
198
+ complianceNotes: "SOC 2; GDPR-ready; separate transactional vs broadcast streams.",
199
+ integrationComplexity: "trivial",
200
+ supportedStacks: ["node", "ruby", "python", "csharp", "rest"],
201
+ strengths: ["Excellent deliverability reputation", "Clear API", "Great logs"],
202
+ weaknesses: ["Stricter on content than bulk marketing tools", "Costs add up"],
203
+ tradeoffs: "Pay for quality transactional; not a cheap bulk marketing choice.",
204
+ starterTasks: [
205
+ "Verify domain and set up SPF/DKIM.",
206
+ "Create server and send test with template.",
207
+ "Use inbound for reply parsing if needed.",
208
+ ],
209
+ recommendationType: "neutral",
210
+ },
211
+ {
212
+ name: "Resend",
213
+ description: "Developer-centric email API with React Email and first-class DX for modern stacks.",
214
+ website: "https://resend.com",
215
+ category: "email",
216
+ bestFor: "Next.js/TypeScript teams wanting simple APIs and React-based templates.",
217
+ pricingTier: "Free tier with monthly caps; paid by volume.",
218
+ freeTier: true,
219
+ selfHosted: false,
220
+ openSource: false,
221
+ complianceNotes: "SOC 2; GDPR; review data processing agreement for EU customers.",
222
+ integrationComplexity: "trivial",
223
+ supportedStacks: ["node", "nextjs", "react", "rest"],
224
+ strengths: ["Excellent DX", "React Email", "Fast iteration"],
225
+ weaknesses: ["Younger than Mailgun/SendGrid", "Fewer enterprise war stories"],
226
+ tradeoffs: "Best developer experience; validate enterprise needs separately.",
227
+ starterTasks: [
228
+ "Add API key and verify domain DNS.",
229
+ "Send email from React Email template.",
230
+ "Configure webhooks for events.",
231
+ ],
232
+ recommendationType: "neutral",
233
+ },
234
+ {
235
+ name: "Amazon SES",
236
+ description: "AWS email sending service with SMTP/API, very low per-email cost at scale.",
237
+ website: "https://aws.amazon.com/ses/",
238
+ category: "email",
239
+ bestFor: "High volume on AWS with IAM, VPC, and KMS integration.",
240
+ pricingTier: "Very cheap per 1000 emails; free tier in first year in some regions.",
241
+ freeTier: true,
242
+ selfHosted: false,
243
+ openSource: false,
244
+ complianceNotes: "Inherits AWS compliance; configure regions and encryption for GDPR/HIPAA.",
245
+ integrationComplexity: "complex",
246
+ supportedStacks: ["node", "python", "java", "smtp", "lambda"],
247
+ strengths: ["Low cost at scale", "IAM integration", "VPC endpoints"],
248
+ weaknesses: ["DIY deliverability and suppression lists", "Sandbox limits initially"],
249
+ tradeoffs: "Cheapest at scale if you own deliverability ops.",
250
+ starterTasks: [
251
+ "Move out of sandbox with production access request.",
252
+ "Verify domain and set up DKIM in SES.",
253
+ "Send via SDK or SMTP from your app.",
254
+ ],
255
+ recommendationType: "neutral",
256
+ },
257
+ // --- auth ---
258
+ {
259
+ name: "Auth0",
260
+ description: "Identity platform with social, enterprise SSO, MFA, and extensible rules/actions.",
261
+ website: "https://auth0.com",
262
+ category: "auth",
263
+ bestFor: "B2B SaaS needing SAML/OIDC enterprise connections and complex auth flows.",
264
+ pricingTier: "Free dev tier; B2C/B2B paid tiers scale with MAU.",
265
+ freeTier: true,
266
+ selfHosted: false,
267
+ openSource: false,
268
+ complianceNotes: "SOC 2, ISO; HIPAA BAA available; strong GDPR tooling.",
269
+ integrationComplexity: "complex",
270
+ supportedStacks: ["nextjs", "react", "node", "mobile", "spa"],
271
+ strengths: ["Enterprise IdPs", "Rules/actions", "Large docs"],
272
+ weaknesses: ["Cost at scale", "Complexity"],
273
+ tradeoffs: "Feature-rich; may be heavy for simple apps.",
274
+ starterTasks: [
275
+ "Create tenant and application (SPA or regular web).",
276
+ "Configure callback URLs and test Universal Login.",
277
+ "Add social connection or SAML for enterprise.",
278
+ ],
279
+ recommendationType: "neutral",
280
+ },
281
+ {
282
+ name: "Clerk",
283
+ description: "Auth and user management with prebuilt UI components and session handling.",
284
+ website: "https://clerk.com",
285
+ category: "auth",
286
+ bestFor: "React/Next.js apps wanting fast, polished sign-in/up and org features.",
287
+ pricingTier: "Free tier with MAU limits; Pro scales with active users.",
288
+ freeTier: true,
289
+ selfHosted: false,
290
+ openSource: false,
291
+ complianceNotes: "SOC 2 Type II; GDPR; review subprocessors for EU requirements.",
292
+ integrationComplexity: "trivial",
293
+ supportedStacks: ["nextjs", "react", "remix", "expo"],
294
+ strengths: ["Fastest time-to-ship UI", "Sessions and orgs", "Great DX"],
295
+ weaknesses: ["Less customizable than raw OIDC", "Pricing at scale"],
296
+ tradeoffs: "Best DX for standard B2C/B2B web; deep custom IAM may need Auth0/Cognito.",
297
+ starterTasks: [
298
+ "Install SDK and wrap app with ClerkProvider.",
299
+ "Use prebuilt SignIn/SignUp components.",
300
+ "Sync users to your DB via webhooks.",
301
+ ],
302
+ recommendationType: "neutral",
303
+ },
304
+ {
305
+ name: "Supabase Auth",
306
+ description: "Open-source auth bundled with Postgres RLS, OAuth, magic links, and phone OTP.",
307
+ website: "https://supabase.com/docs/guides/auth",
308
+ category: "auth",
309
+ bestFor: "Supabase or Postgres-centric apps tying auth to Row Level Security.",
310
+ pricingTier: "Free tier; Pro includes higher MAU and add-ons.",
311
+ freeTier: true,
312
+ selfHosted: true,
313
+ openSource: true,
314
+ complianceNotes: "Cloud SOC 2; self-host requires you to harden; GDPR DPA on cloud.",
315
+ integrationComplexity: "moderate",
316
+ supportedStacks: ["nextjs", "react", "flutter", "swift", "kotlin"],
317
+ strengths: ["RLS integration", "Self-host option", "OAuth providers"],
318
+ weaknesses: ["Fewer enterprise IdP features than Auth0", "Support tier differences"],
319
+ tradeoffs: "Ideal when data lives in Supabase; less ideal for non-Postgres stacks.",
320
+ starterTasks: [
321
+ "Enable email provider and OAuth providers in dashboard.",
322
+ "Use supabase-js on client with session handling.",
323
+ "Define RLS policies using auth.uid().",
324
+ ],
325
+ recommendationType: "neutral",
326
+ },
327
+ {
328
+ name: "Firebase Auth",
329
+ description: "Google-backed auth with phone, social, anonymous, and custom tokens.",
330
+ website: "https://firebase.google.com/docs/auth",
331
+ category: "auth",
332
+ bestFor: "Mobile-first apps and Firebase/GCP ecosystems.",
333
+ pricingTier: "Free generous quotas; Blaze pay-as-you-go beyond.",
334
+ freeTier: true,
335
+ selfHosted: false,
336
+ openSource: false,
337
+ complianceNotes: "Google Cloud compliance umbrella; configure regions and IAP as needed.",
338
+ integrationComplexity: "moderate",
339
+ supportedStacks: ["flutter", "swift", "kotlin", "react", "web"],
340
+ strengths: ["Mobile SDKs", "Phone auth", "Anonymous users"],
341
+ weaknesses: ["Google ecosystem coupling", "Export complexity"],
342
+ tradeoffs: "Smooth for Firebase data; awkward if backend is not GCP-aligned.",
343
+ starterTasks: [
344
+ "Create Firebase project and enable sign-in methods.",
345
+ "Add client SDK and handle ID token verification on server.",
346
+ "Use custom claims for roles.",
347
+ ],
348
+ recommendationType: "neutral",
349
+ },
350
+ {
351
+ name: "NextAuth.js",
352
+ description: "Open-source authentication for Next.js with many OAuth providers and adapters.",
353
+ website: "https://authjs.dev",
354
+ category: "auth",
355
+ bestFor: "Next.js apps wanting self-controlled sessions and database-backed users.",
356
+ pricingTier: "Free (OSS); you pay for hosting and DB only.",
357
+ freeTier: true,
358
+ selfHosted: true,
359
+ openSource: true,
360
+ complianceNotes: "You own compliance posture; secrets and session storage are your responsibility.",
361
+ integrationComplexity: "moderate",
362
+ supportedStacks: ["nextjs", "node"],
363
+ strengths: ["Full control", "Many providers", "Community"],
364
+ weaknesses: ["You maintain security updates", "Setup time"],
365
+ tradeoffs: "Maximum flexibility; you own incidents and scaling patterns.",
366
+ starterTasks: [
367
+ "Install Auth.js and configure providers in route handler.",
368
+ "Add Prisma/Drizzle adapter for user storage.",
369
+ "Protect API routes and server actions with session checks.",
370
+ ],
371
+ recommendationType: "neutral",
372
+ },
373
+ // --- analytics ---
374
+ {
375
+ name: "PostHog",
376
+ description: "Product analytics, session replay, feature flags, and experiments in one platform.",
377
+ website: "https://posthog.com",
378
+ category: "analytics",
379
+ bestFor: "Product teams wanting analytics plus flags and replays without stitching five tools.",
380
+ pricingTier: "Generous free tier; paid by usage and features.",
381
+ freeTier: true,
382
+ selfHosted: true,
383
+ openSource: true,
384
+ complianceNotes: "Cloud SOC 2; EU hosting; self-host shifts compliance burden to you.",
385
+ integrationComplexity: "moderate",
386
+ supportedStacks: ["nextjs", "react", "node", "python", "mobile"],
387
+ strengths: ["All-in-one", "Feature flags", "Open source"],
388
+ weaknesses: ["Can feel heavy for analytics-only needs", "Self-host ops"],
389
+ tradeoffs: "Powerful; may be more than you need for simple pageview counts.",
390
+ starterTasks: [
391
+ "Create project and install browser SDK.",
392
+ "Capture pageviews and custom events.",
393
+ "Enable session replay sampling for key flows.",
394
+ ],
395
+ recommendationType: "neutral",
396
+ },
397
+ {
398
+ name: "Plausible",
399
+ description: "Privacy-first, lightweight web analytics without cookies on the hosted product.",
400
+ website: "https://plausible.io",
401
+ category: "analytics",
402
+ bestFor: "Sites needing simple metrics and GDPR-friendly defaults.",
403
+ pricingTier: "Paid by monthly pageviews; self-host is free software.",
404
+ freeTier: false,
405
+ selfHosted: true,
406
+ openSource: true,
407
+ complianceNotes: "EU cloud option; self-host for full data control; minimal PII by design.",
408
+ integrationComplexity: "trivial",
409
+ supportedStacks: ["static", "nextjs", "wordpress", "any-web"],
410
+ strengths: ["Privacy positioning", "Lightweight script", "Simple UI"],
411
+ weaknesses: ["Less funnel depth than PostHog/Mixpanel", "No mobile SDKs like GA"],
412
+ tradeoffs: "Great for marketing sites; limited for deep product analytics.",
413
+ starterTasks: [
414
+ "Add single script snippet to layout.",
415
+ "Set up goals for key URLs or events.",
416
+ "Export stats via API if needed.",
417
+ ],
418
+ recommendationType: "neutral",
419
+ },
420
+ {
421
+ name: "Mixpanel",
422
+ description: "Event analytics with cohorts, funnels, and retention focused on product teams.",
423
+ website: "https://mixpanel.com",
424
+ category: "analytics",
425
+ bestFor: "SaaS products analyzing user journeys, retention, and experiments.",
426
+ pricingTier: "Free tier with limits; growth plans by monthly tracked users.",
427
+ freeTier: true,
428
+ selfHosted: false,
429
+ openSource: false,
430
+ complianceNotes: "SOC 2; GDPR and EU data residency options; sign DPA.",
431
+ integrationComplexity: "moderate",
432
+ supportedStacks: ["javascript", "ios", "android", "python", "node"],
433
+ strengths: ["Funnels and cohorts", "Governance features", "Mature product"],
434
+ weaknesses: ["Can get expensive", "Implementation discipline required"],
435
+ tradeoffs: "Deep product analytics; heavier than Plausible for simple sites.",
436
+ starterTasks: [
437
+ "Define tracking plan and event names.",
438
+ "Install SDK and identify users.",
439
+ "Build funnel from signup to activation.",
440
+ ],
441
+ recommendationType: "neutral",
442
+ },
443
+ {
444
+ name: "Google Analytics",
445
+ description: "Ubiquitous web analytics with audiences, Ads linkage, and BigQuery export.",
446
+ website: "https://analytics.google.com",
447
+ category: "analytics",
448
+ bestFor: "Marketing measurement and Google Ads alignment at global scale.",
449
+ pricingTier: "Free (GA4); GA360 enterprise licensing for large orgs.",
450
+ freeTier: true,
451
+ selfHosted: false,
452
+ openSource: false,
453
+ complianceNotes: "EU consent mode and SCCs required; scrutinize GDPR use—some EU regulators are strict on GA.",
454
+ integrationComplexity: "trivial",
455
+ supportedStacks: ["web", "firebase", "gtm"],
456
+ strengths: ["Free and ubiquitous", "Ads integration", "BigQuery export"],
457
+ weaknesses: ["Privacy scrutiny in EU", "Complex UI"],
458
+ tradeoffs: "Default for marketing analytics; may conflict with strict privacy policies.",
459
+ starterTasks: [
460
+ "Create GA4 property and data stream.",
461
+ "Install gtag or GTM with consent banner.",
462
+ "Mark conversions and link Google Ads.",
463
+ ],
464
+ recommendationType: "neutral",
465
+ },
466
+ // --- monitoring ---
467
+ {
468
+ name: "Sentry",
469
+ description: "Error tracking and performance monitoring with releases, profiling, and replay.",
470
+ website: "https://sentry.io",
471
+ category: "monitoring",
472
+ bestFor: "Engineering teams fixing production errors across web, mobile, and backend.",
473
+ pricingTier: "Free developer tier; paid by errors and seats.",
474
+ freeTier: true,
475
+ selfHosted: true,
476
+ openSource: true,
477
+ complianceNotes: "SOC 2; EU region; self-hosted for data residency control.",
478
+ integrationComplexity: "trivial",
479
+ supportedStacks: ["javascript", "node", "python", "go", "java", "mobile"],
480
+ strengths: ["Stack traces and breadcrumbs", "Release health", "Wide SDK support"],
481
+ weaknesses: ["Costs climb with volume", "Not full infra APM replacement alone"],
482
+ tradeoffs: "Best-in-class errors; pair with metrics vendor for full observability.",
483
+ starterTasks: [
484
+ "Create project and add DSN to SDK init.",
485
+ "Upload source maps in CI.",
486
+ "Set up alerts for new issues and regressions.",
487
+ ],
488
+ recommendationType: "neutral",
489
+ },
490
+ {
491
+ name: "Datadog",
492
+ description: "Full observability: metrics, logs, traces, RUM, security, and synthetic tests.",
493
+ website: "https://www.datadoghq.com",
494
+ category: "monitoring",
495
+ bestFor: "Enterprises needing unified APM, infra, and security in one bill.",
496
+ pricingTier: "No real free tier; per-host and per-GB pricing; enterprise deals.",
497
+ freeTier: false,
498
+ selfHosted: false,
499
+ openSource: false,
500
+ complianceNotes: "FedRAMP and SOC 2; HIPAA; strong enterprise compliance story.",
501
+ integrationComplexity: "complex",
502
+ supportedStacks: ["kubernetes", "docker", "node", "python", "java", "serverless"],
503
+ strengths: ["Breadth of modules", "Correlation across signals", "Market leader"],
504
+ weaknesses: ["Expensive", "Complex pricing"],
505
+ tradeoffs: "Powerful; overkill for early-stage unless budget is there.",
506
+ starterTasks: [
507
+ "Install agent on hosts or use serverless layers.",
508
+ "Instrument APM for key services.",
509
+ "Create dashboards and SLO monitors.",
510
+ ],
511
+ recommendationType: "neutral",
512
+ },
513
+ {
514
+ name: "Better Stack",
515
+ description: "Uptime monitoring, status pages, incident management, and log management (Better Stack Logs).",
516
+ website: "https://betterstack.com",
517
+ category: "monitoring",
518
+ bestFor: "SRE-friendly uptime, public status pages, and structured logs without Datadog weight.",
519
+ pricingTier: "Free tier for limited checks; paid for teams and retention.",
520
+ freeTier: true,
521
+ selfHosted: false,
522
+ openSource: false,
523
+ complianceNotes: "GDPR; review subprocessors; EU-focused company.",
524
+ integrationComplexity: "trivial",
525
+ supportedStacks: ["http", "tcp", "ping", "node", "kubernetes"],
526
+ strengths: ["Beautiful status pages", "Simple pricing vs hyperscalers", "Good DX"],
527
+ weaknesses: ["Not full APM like Datadog", "Narrower than all-in-one giants"],
528
+ tradeoffs: "Great uptime + logs combo; add APM elsewhere if needed.",
529
+ starterTasks: [
530
+ "Create monitors for critical endpoints.",
531
+ "Publish branded status page.",
532
+ "Ship logs with vector or syslog integration.",
533
+ ],
534
+ recommendationType: "neutral",
535
+ },
536
+ {
537
+ name: "Axiom",
538
+ description: "Serverless log management with fast querying and generous ingest pricing.",
539
+ website: "https://axiom.co",
540
+ category: "monitoring",
541
+ bestFor: "Centralizing logs and traces from Vercel, Fly, and Kubernetes affordably.",
542
+ pricingTier: "Free tier with ingest limits; pay for retention and volume.",
543
+ freeTier: true,
544
+ selfHosted: false,
545
+ openSource: false,
546
+ complianceNotes: "SOC 2; GDPR; check data residency for strict EU needs.",
547
+ integrationComplexity: "moderate",
548
+ supportedStacks: ["kubernetes", "vercel", "nodejs", "opentelemetry"],
549
+ strengths: ["Fast queries", "Good price/performance", "OTel support"],
550
+ weaknesses: ["Younger ecosystem than Datadog", "Fewer ancillary modules"],
551
+ tradeoffs: "Strong log/trace store; combine with metrics as needed.",
552
+ starterTasks: [
553
+ "Create dataset and ingest token.",
554
+ "Ship logs from app or vector agent.",
555
+ "Build dashboards and alerts on query patterns.",
556
+ ],
557
+ recommendationType: "neutral",
558
+ },
559
+ // --- database ---
560
+ {
561
+ name: "Supabase",
562
+ description: "Postgres with auth, realtime, storage, and auto-generated APIs.",
563
+ website: "https://supabase.com",
564
+ category: "database",
565
+ bestFor: "Greenfield apps wanting Postgres plus batteries-included backend services.",
566
+ pricingTier: "Free tier; Pro for production workloads and support.",
567
+ freeTier: true,
568
+ selfHosted: true,
569
+ openSource: true,
570
+ complianceNotes: "SOC 2 cloud; self-host shifts responsibility; EU project region available.",
571
+ integrationComplexity: "moderate",
572
+ supportedStacks: ["nextjs", "react", "flutter", "postgres"],
573
+ strengths: ["RLS and Auth", "Realtime", "DX"],
574
+ weaknesses: ["Vendor abstractions", "Self-host complexity"],
575
+ tradeoffs: "Fastest path to production Postgres API; mind lock-in on platform features.",
576
+ starterTasks: [
577
+ "Create project and run SQL migrations.",
578
+ "Enable RLS policies.",
579
+ "Use supabase-js from edge or client with keys scoped correctly.",
580
+ ],
581
+ recommendationType: "neutral",
582
+ },
583
+ {
584
+ name: "PlanetScale",
585
+ description: "MySQL-compatible serverless database with branching and non-blocking schema changes.",
586
+ website: "https://planetscale.com",
587
+ category: "database",
588
+ bestFor: "Teams wanting MySQL ergonomics with Git-like schema workflows.",
589
+ pricingTier: "Scaler plan free tier (limits); paid for production scale.",
590
+ freeTier: true,
591
+ selfHosted: false,
592
+ openSource: false,
593
+ complianceNotes: "SOC 2; HIPAA on enterprise; review regional deployment.",
594
+ integrationComplexity: "moderate",
595
+ supportedStacks: ["mysql", "prisma", "rails", "laravel"],
596
+ strengths: ["Branching deploy requests", "Vitess scale", "Good DX"],
597
+ weaknesses: ["MySQL feature caveats", "Pricing changes historically annoyed users"],
598
+ tradeoffs: "Great for relational at scale; validate MySQL feature needs vs Postgres.",
599
+ starterTasks: [
600
+ "Create database and connect with connection string.",
601
+ "Open deploy request for schema migration.",
602
+ "Integrate Prisma or Drizzle with PlanetScale adapter.",
603
+ ],
604
+ recommendationType: "neutral",
605
+ },
606
+ {
607
+ name: "Neon",
608
+ description: "Serverless Postgres with autoscaling, branching, and instant provisioning.",
609
+ website: "https://neon.tech",
610
+ category: "database",
611
+ bestFor: "Postgres with per-branch databases for preview environments.",
612
+ pricingTier: "Free tier; paid for compute and storage.",
613
+ freeTier: true,
614
+ selfHosted: false,
615
+ openSource: false,
616
+ complianceNotes: "SOC 2; GDPR DPA; choose region per project.",
617
+ integrationComplexity: "trivial",
618
+ supportedStacks: ["postgres", "nextjs", "prisma", "drizzle", "serverless"],
619
+ strengths: ["Branching", "Scale to zero", "Simple pricing"],
620
+ weaknesses: ["Cold start latency", "Not for legacy on-prem patterns"],
621
+ tradeoffs: "Ideal serverless Postgres; pair with connection pooling for heavy traffic.",
622
+ starterTasks: [
623
+ "Create project and run schema via migration tool.",
624
+ "Use branching for PR previews.",
625
+ "Configure pooled connection string for serverless runtimes.",
626
+ ],
627
+ recommendationType: "neutral",
628
+ },
629
+ {
630
+ name: "Turso",
631
+ description: "Edge SQLite with libSQL, replication, and low-latency reads globally.",
632
+ website: "https://turso.tech",
633
+ category: "database",
634
+ bestFor: "Edge functions and mobile-ish workloads needing SQLite semantics at the edge.",
635
+ pricingTier: "Free tier; paid for storage and locations.",
636
+ freeTier: true,
637
+ selfHosted: true,
638
+ openSource: true,
639
+ complianceNotes: "Review data residency across edge locations; self-host option via libSQL.",
640
+ integrationComplexity: "moderate",
641
+ supportedStacks: ["libsql", "sqlite", "edge", "rust", "node"],
642
+ strengths: ["Edge replication", "SQLite ergonomics", "Low ops"],
643
+ weaknesses: ["Not full Postgres feature set", "Edge consistency model"],
644
+ tradeoffs: "Great for edge-native data; wrong choice for heavy OLAP.",
645
+ starterTasks: [
646
+ "Create database and get libsql URL.",
647
+ "Use Drizzle or Prisma libsql driver.",
648
+ "Plan replication regions for read patterns.",
649
+ ],
650
+ recommendationType: "neutral",
651
+ },
652
+ {
653
+ name: "MongoDB Atlas",
654
+ description: "Managed MongoDB with global clusters, search, and serverless tiers.",
655
+ website: "https://www.mongodb.com/atlas",
656
+ category: "database",
657
+ bestFor: "Document models with flexible schema and MongoDB ecosystem (Atlas Search, Charts).",
658
+ pricingTier: "Free M0 cluster; paid tiers for production SLAs.",
659
+ freeTier: true,
660
+ selfHosted: false,
661
+ openSource: false,
662
+ complianceNotes: "SOC 2, HIPAA, GDPR; regional clusters and encryption options.",
663
+ integrationComplexity: "moderate",
664
+ supportedStacks: ["node", "python", "java", "go", "realm"],
665
+ strengths: ["Flexible documents", "Atlas Search", "Global clusters"],
666
+ weaknesses: ["Different consistency model than SQL", "Can sprawl without discipline"],
667
+ tradeoffs: "Right for document workloads; avoid forcing relational patterns.",
668
+ starterTasks: [
669
+ "Create cluster and IP allowlist or VPC peering.",
670
+ "Define indexes for query patterns.",
671
+ "Use connection string with pooling in app.",
672
+ ],
673
+ recommendationType: "neutral",
674
+ },
675
+ // --- storage ---
676
+ {
677
+ name: "Cloudflare R2",
678
+ description: "S3-compatible object storage without egress fees to Workers and many Cloudflare services.",
679
+ website: "https://www.cloudflare.com/developer-platform/r2/",
680
+ category: "storage",
681
+ bestFor: "Assets served via Cloudflare Workers or CDN with predictable egress economics.",
682
+ pricingTier: "Pay for storage and class A/B ops; free egress to internet via CF.",
683
+ freeTier: true,
684
+ selfHosted: false,
685
+ openSource: false,
686
+ complianceNotes: "SOC 2; configure jurisdiction and encryption; review GDPR transfer tools.",
687
+ integrationComplexity: "moderate",
688
+ supportedStacks: ["workers", "s3-api", "nextjs"],
689
+ strengths: ["No egress to CF", "S3 API", "Global"],
690
+ weaknesses: ["Ecosystem smaller than AWS", "Some advanced S3 features missing"],
691
+ tradeoffs: "Excellent with Workers; less universal than S3 for enterprise integrations.",
692
+ starterTasks: [
693
+ "Create bucket and API token.",
694
+ "Upload via AWS SDK with R2 endpoint.",
695
+ "Bind bucket to Worker for authenticated reads.",
696
+ ],
697
+ recommendationType: "neutral",
698
+ },
699
+ {
700
+ name: "AWS S3",
701
+ description: "Industry-standard object storage with infinite features: tiers, replication, compliance.",
702
+ website: "https://aws.amazon.com/s3/",
703
+ category: "storage",
704
+ bestFor: "Any workload already on AWS needing maximum ecosystem compatibility.",
705
+ pricingTier: "Pay per GB and requests; free tier limited time for new accounts.",
706
+ freeTier: true,
707
+ selfHosted: false,
708
+ openSource: false,
709
+ complianceNotes: "Extensive compliance programs; Object Lock for immutability; region choice.",
710
+ integrationComplexity: "moderate",
711
+ supportedStacks: ["any", "lambda", "sdk"],
712
+ strengths: ["Universal integrations", "Lifecycle policies", "Replication"],
713
+ weaknesses: ["Egress costs if not on AWS", "IAM complexity"],
714
+ tradeoffs: "Default for enterprises; watch egress if users download from outside AWS.",
715
+ starterTasks: [
716
+ "Create bucket with block public access defaults.",
717
+ "Use presigned URLs for uploads/downloads.",
718
+ "Add lifecycle rule to Glacier for archives.",
719
+ ],
720
+ recommendationType: "neutral",
721
+ },
722
+ {
723
+ name: "Uploadthing",
724
+ description: "File uploads for Next.js/React with typed routers and built-in validation.",
725
+ website: "https://uploadthing.com",
726
+ category: "storage",
727
+ bestFor: "App uploads in Next.js without rolling your own presign pipeline.",
728
+ pricingTier: "Free tier with limits; paid for bandwidth and files.",
729
+ freeTier: true,
730
+ selfHosted: false,
731
+ openSource: false,
732
+ complianceNotes: "SOC 2; GDPR; data processed on infrastructure—review DPA.",
733
+ integrationComplexity: "trivial",
734
+ supportedStacks: ["nextjs", "react", "solid", "vue"],
735
+ strengths: ["Fast integration", "Type-safe routes", "Nice dashboard"],
736
+ weaknesses: ["Opinionated to web stacks", "Less generic than raw S3"],
737
+ tradeoffs: "Best when you want upload UX fast; raw S3 for multi-cloud.",
738
+ starterTasks: [
739
+ "Create app and set API keys.",
740
+ "Define file router with middleware.",
741
+ "Use UploadButton component in UI.",
742
+ ],
743
+ recommendationType: "neutral",
744
+ },
745
+ {
746
+ name: "Supabase Storage",
747
+ description: "Object storage integrated with Supabase Auth and Postgres metadata patterns.",
748
+ website: "https://supabase.com/docs/guides/storage",
749
+ category: "storage",
750
+ bestFor: "Supabase projects needing buckets with RLS-aligned access rules.",
751
+ pricingTier: "Included in Supabase project quotas; overage pricing.",
752
+ freeTier: true,
753
+ selfHosted: true,
754
+ openSource: true,
755
+ complianceNotes: "Same as Supabase project; self-host requires securing MinIO layer.",
756
+ integrationComplexity: "moderate",
757
+ supportedStacks: ["nextjs", "react", "flutter", "postgres"],
758
+ strengths: ["Auth integration", "RLS patterns", "Simple API"],
759
+ weaknesses: ["Tied to Supabase ecosystem", "Not raw S3 everywhere"],
760
+ tradeoffs: "Seamless with Supabase; redundant if you only need dumb S3.",
761
+ starterTasks: [
762
+ "Create bucket and policies referencing auth.uid().",
763
+ "Upload from client with JWT.",
764
+ "Serve public assets via CDN URL or signed URLs.",
765
+ ],
766
+ recommendationType: "neutral",
767
+ },
768
+ // --- payments ---
769
+ {
770
+ name: "Stripe",
771
+ description: "Payments, subscriptions, invoicing, Connect for marketplaces, and tax.",
772
+ website: "https://stripe.com",
773
+ category: "payments",
774
+ bestFor: "Most SaaS and e-commerce globally with strong APIs and documentation.",
775
+ pricingTier: "Per successful charge; no monthly minimum on standard pricing.",
776
+ freeTier: false,
777
+ selfHosted: false,
778
+ openSource: false,
779
+ complianceNotes: "PCI scope minimized with Elements/Checkout; SOC 2; GDPR and regional entities.",
780
+ integrationComplexity: "moderate",
781
+ supportedStacks: ["node", "ruby", "python", "php", "go", "mobile"],
782
+ strengths: ["Best docs", "Global methods", "Connect for platforms"],
783
+ weaknesses: ["Fees add up", "Disputes handling is merchant responsibility"],
784
+ tradeoffs: "Default choice for online payments; evaluate Connect vs alternatives for MOSS.",
785
+ starterTasks: [
786
+ "Create product and price in Dashboard or API.",
787
+ "Implement Checkout Session or Payment Element.",
788
+ "Handle webhooks idempotently for subscription state.",
789
+ ],
790
+ recommendationType: "neutral",
791
+ },
792
+ {
793
+ name: "Lemonsqueezy",
794
+ description: "Merchant of record for digital products—handles VAT/GST and payouts.",
795
+ website: "https://www.lemonsqueezy.com",
796
+ category: "payments",
797
+ bestFor: "Indie SaaS and digital goods where MoR simplifies global tax compliance.",
798
+ pricingTier: "Fee per sale; no separate Stripe account for tax handling.",
799
+ freeTier: false,
800
+ selfHosted: false,
801
+ openSource: false,
802
+ complianceNotes: "MoR model shifts tax reporting; review contract for your jurisdiction.",
803
+ integrationComplexity: "trivial",
804
+ supportedStacks: ["webhooks", "rest", "nextjs"],
805
+ strengths: ["MoR simplicity", "Good for digital", "Checkout links"],
806
+ weaknesses: ["Less flexible than Stripe for complex marketplaces", "Payout schedule"],
807
+ tradeoffs: "Easiest tax story for solo founders; less control than direct PSP.",
808
+ starterTasks: [
809
+ "Create store and product.",
810
+ "Embed checkout or use payment links.",
811
+ "Listen to webhooks to unlock software access.",
812
+ ],
813
+ recommendationType: "neutral",
814
+ },
815
+ {
816
+ name: "Paddle",
817
+ description: "Payments and subscription billing as merchant of record for software companies.",
818
+ website: "https://www.paddle.com",
819
+ category: "payments",
820
+ bestFor: "B2B and B2C SaaS wanting MoR with invoicing and localization.",
821
+ pricingTier: "Percentage of revenue; enterprise contracts.",
822
+ freeTier: false,
823
+ selfHosted: false,
824
+ openSource: false,
825
+ complianceNotes: "MoR handles sales tax; align contracts with GDPR and data roles.",
826
+ integrationComplexity: "moderate",
827
+ supportedStacks: ["rest", "webhooks", "node", "billing-systems"],
828
+ strengths: ["MoR for software", "Invoicing", "Enterprise sales support"],
829
+ weaknesses: ["Take rate", "Less ubiquitous than Stripe for custom flows"],
830
+ tradeoffs: "Strong when tax/compliance overhead is the bottleneck.",
831
+ starterTasks: [
832
+ "Onboard as Paddle vendor.",
833
+ "Create subscription plans and checkout.",
834
+ "Integrate webhooks for subscription lifecycle.",
835
+ ],
836
+ recommendationType: "neutral",
837
+ },
838
+ ];
839
+ //# sourceMappingURL=knowledge_base.js.map