@adityanair98/api-oracle 0.5.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 (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/dist/cli.d.ts +11 -0
  4. package/dist/cli.js +74 -0
  5. package/dist/dashboard/public/app.js +1004 -0
  6. package/dist/dashboard/public/index.html +142 -0
  7. package/dist/dashboard/public/public/app.js +1004 -0
  8. package/dist/dashboard/public/public/index.html +142 -0
  9. package/dist/dashboard/public/public/styles.css +1464 -0
  10. package/dist/dashboard/public/styles.css +1464 -0
  11. package/dist/dashboard/routes/api.d.ts +7 -0
  12. package/dist/dashboard/routes/api.js +245 -0
  13. package/dist/dashboard/server.d.ts +9 -0
  14. package/dist/dashboard/server.js +45 -0
  15. package/dist/index.d.ts +5 -0
  16. package/dist/index.js +23 -0
  17. package/dist/knowledge/db.d.ts +22 -0
  18. package/dist/knowledge/db.js +182 -0
  19. package/dist/knowledge/schema.d.ts +275 -0
  20. package/dist/knowledge/schema.js +135 -0
  21. package/dist/knowledge/scorer.d.ts +63 -0
  22. package/dist/knowledge/scorer.js +314 -0
  23. package/dist/knowledge/search.d.ts +37 -0
  24. package/dist/knowledge/search.js +111 -0
  25. package/dist/knowledge/synonyms.d.ts +36 -0
  26. package/dist/knowledge/synonyms.js +523 -0
  27. package/dist/knowledge/tfidf.d.ts +42 -0
  28. package/dist/knowledge/tfidf.js +138 -0
  29. package/dist/server.d.ts +9 -0
  30. package/dist/server.js +40 -0
  31. package/dist/tools/check-freshness.d.ts +9 -0
  32. package/dist/tools/check-freshness.js +95 -0
  33. package/dist/tools/compare-apis.d.ts +8 -0
  34. package/dist/tools/compare-apis.js +149 -0
  35. package/dist/tools/find-api.d.ts +9 -0
  36. package/dist/tools/find-api.js +120 -0
  37. package/dist/tools/get-setup-guide.d.ts +8 -0
  38. package/dist/tools/get-setup-guide.js +127 -0
  39. package/dist/updater/linter.d.ts +31 -0
  40. package/dist/updater/linter.js +219 -0
  41. package/dist/updater/report.d.ts +29 -0
  42. package/dist/updater/report.js +96 -0
  43. package/dist/updater/staleness.d.ts +39 -0
  44. package/dist/updater/staleness.js +66 -0
  45. package/dist/updater/version-tracker.d.ts +28 -0
  46. package/dist/updater/version-tracker.js +50 -0
  47. package/dist/utils/config.d.ts +11 -0
  48. package/dist/utils/config.js +13 -0
  49. package/dist/utils/logger.d.ts +20 -0
  50. package/dist/utils/logger.js +32 -0
  51. package/package.json +56 -0
  52. package/src/entries/ai/anthropic.json +95 -0
  53. package/src/entries/ai/eleven-labs.json +90 -0
  54. package/src/entries/ai/openai.json +95 -0
  55. package/src/entries/ai/replicate.json +87 -0
  56. package/src/entries/ai/resemble-ai.json +88 -0
  57. package/src/entries/ai/stability-ai.json +89 -0
  58. package/src/entries/analytics/posthog.json +88 -0
  59. package/src/entries/analytics/sentry.json +84 -0
  60. package/src/entries/auth/auth0.json +90 -0
  61. package/src/entries/auth/clerk.json +95 -0
  62. package/src/entries/cms/contentful.json +92 -0
  63. package/src/entries/cms/sanity.json +92 -0
  64. package/src/entries/cms/strapi.json +93 -0
  65. package/src/entries/commerce/medusa.json +91 -0
  66. package/src/entries/commerce/shopify-api.json +91 -0
  67. package/src/entries/communication/sendbird.json +85 -0
  68. package/src/entries/communication/stream-chat.json +94 -0
  69. package/src/entries/database/firebase.json +88 -0
  70. package/src/entries/database/neon.json +94 -0
  71. package/src/entries/database/planetscale.json +95 -0
  72. package/src/entries/database/supabase.json +94 -0
  73. package/src/entries/database/upstash.json +94 -0
  74. package/src/entries/devops/fly-io.json +90 -0
  75. package/src/entries/devops/netlify.json +90 -0
  76. package/src/entries/devops/railway.json +90 -0
  77. package/src/entries/devops/vercel.json +90 -0
  78. package/src/entries/email/mailgun.json +91 -0
  79. package/src/entries/email/postmark.json +91 -0
  80. package/src/entries/email/resend.json +89 -0
  81. package/src/entries/email/sendgrid.json +90 -0
  82. package/src/entries/forms/formspark.json +85 -0
  83. package/src/entries/forms/typeform.json +98 -0
  84. package/src/entries/infrastructure/aws-s3.json +104 -0
  85. package/src/entries/infrastructure/cloudflare-r2.json +92 -0
  86. package/src/entries/infrastructure/cloudflare-workers.json +92 -0
  87. package/src/entries/infrastructure/digital-ocean-spaces.json +87 -0
  88. package/src/entries/integration/nango.json +90 -0
  89. package/src/entries/integration/zapier.json +92 -0
  90. package/src/entries/maps/google-maps.json +89 -0
  91. package/src/entries/maps/mapbox.json +87 -0
  92. package/src/entries/media/deepgram.json +84 -0
  93. package/src/entries/media/imgix.json +84 -0
  94. package/src/entries/media/mux.json +94 -0
  95. package/src/entries/messaging/ably.json +94 -0
  96. package/src/entries/messaging/pusher.json +94 -0
  97. package/src/entries/messaging/twilio.json +94 -0
  98. package/src/entries/messaging/vonage.json +89 -0
  99. package/src/entries/notifications/knock.json +84 -0
  100. package/src/entries/notifications/novu.json +84 -0
  101. package/src/entries/notifications/onesignal.json +84 -0
  102. package/src/entries/payments/lemonsqueezy.json +91 -0
  103. package/src/entries/payments/paddle.json +90 -0
  104. package/src/entries/payments/paypal.json +91 -0
  105. package/src/entries/payments/razorpay.json +85 -0
  106. package/src/entries/payments/square.json +91 -0
  107. package/src/entries/payments/stripe.json +96 -0
  108. package/src/entries/scheduling/cal-com.json +90 -0
  109. package/src/entries/scheduling/calendly.json +90 -0
  110. package/src/entries/search/algolia.json +96 -0
  111. package/src/entries/security/arcjet.json +89 -0
  112. package/src/entries/security/snyk.json +90 -0
  113. package/src/entries/storage/cloudinary.json +93 -0
  114. package/src/entries/storage/uploadthing.json +90 -0
  115. package/src/entries/testing/browserstack.json +86 -0
  116. package/src/entries/testing/checkly.json +89 -0
  117. package/src/entries/workflow/inngest.json +88 -0
  118. package/src/entries/workflow/temporal.json +90 -0
  119. package/src/entries/workflow/trigger-dev.json +89 -0
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "Resemble AI",
3
+ "slug": "resemble-ai",
4
+ "category": "ai",
5
+ "subcategory": "voice-synthesis",
6
+ "website": "https://www.resemble.ai",
7
+ "description": "Resemble AI is a voice cloning and AI speech generation platform that creates hyper-realistic synthetic voices from audio samples. It supports real-time streaming TTS, custom voice cloning from as little as 3 seconds of audio, and a localization API for dubbing content into multiple languages. Used for IVR systems, audiobooks, game characters, and personalized voice experiences.",
8
+ "useCases": [
9
+ {
10
+ "task": "Clone a specific person's voice for text-to-speech",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Generate realistic AI voiceover for videos or podcasts",
15
+ "fit": "perfect"
16
+ },
17
+ {
18
+ "task": "Build voice-enabled IVR or customer service bots with custom voices",
19
+ "fit": "perfect"
20
+ },
21
+ {
22
+ "task": "Stream TTS audio in real-time for low-latency voice applications",
23
+ "fit": "perfect"
24
+ },
25
+ {
26
+ "task": "Localize/dub video content into multiple languages",
27
+ "fit": "good"
28
+ }
29
+ ],
30
+ "auth": {
31
+ "method": "api_key",
32
+ "setupSteps": [
33
+ "Sign up at app.resemble.ai",
34
+ "Go to Account > API Key to generate your API token",
35
+ "Create a voice (or clone one by uploading audio samples)",
36
+ "Note your project UUID from the project settings",
37
+ "Set RESEMBLE_API_KEY environment variable"
38
+ ],
39
+ "envVarName": "RESEMBLE_API_KEY",
40
+ "codeSnippet": "import Resemble from '@resemble/node';\nResemble.setApiKey(process.env.RESEMBLE_API_KEY!);"
41
+ },
42
+ "pricing": {
43
+ "model": "usage_based",
44
+ "freeTier": "No persistent free tier; trial credits provided on signup",
45
+ "startingPrice": "$0.006 per second of generated audio (pay-as-you-go)",
46
+ "costPer": "$0.006/second for standard TTS; real-time streaming has different pricing; voice cloning: included with API access",
47
+ "pricingUrl": "https://www.resemble.ai/pricing"
48
+ },
49
+ "rateLimits": {
50
+ "tier": "default",
51
+ "limit": "Varies by plan; async clip generation has no strict rate limit; streaming is concurrent-connection limited",
52
+ "notes": "Async clip generation (non-streaming) is queued and can handle high throughput. Real-time streaming connections are limited per account tier. Contact sales for high-volume pricing.",
53
+ "retryStrategy": "Implement exponential backoff for 429 and 503 responses. For async clip generation, poll the clip status endpoint rather than holding the connection open."
54
+ },
55
+ "sdk": {
56
+ "primaryLanguage": "typescript",
57
+ "installCommand": "npm install --save-exact @resemble/node",
58
+ "importStatement": "import Resemble from '@resemble/node';",
59
+ "otherLanguages": ["python"]
60
+ },
61
+ "codeExamples": [
62
+ {
63
+ "title": "Generate a speech clip from text (async)",
64
+ "language": "typescript",
65
+ "code": "import Resemble from '@resemble/node';\n\nResemble.setApiKey(process.env.RESEMBLE_API_KEY!);\n\nconst projectUuid = process.env.RESEMBLE_PROJECT_UUID!;\nconst voiceUuid = process.env.RESEMBLE_VOICE_UUID!;\n\n// Create an async clip (non-streaming)\nconst response = await Resemble.v2.clips.createAsync(projectUuid, {\n voice_uuid: voiceUuid,\n body: 'Hello, this is a test of Resemble AI voice synthesis.',\n is_public: false,\n is_archived: false,\n sample_rate: 44100,\n output_format: 'mp3',\n precision: 'PCM_16',\n});\n\nif (response.success) {\n const clipUuid = response.item.uuid;\n console.log('Clip created:', clipUuid);\n \n // Poll until complete (or use webhook callback_uri)\n let clip = response.item;\n while (!clip.audio_src) {\n await new Promise(r => setTimeout(r, 1000));\n const status = await Resemble.v2.clips.get(projectUuid, clipUuid);\n if (status.success) clip = status.item;\n }\n \n console.log('Audio URL:', clip.audio_src);\n} else {\n console.error('Failed to create clip:', response.message);\n}",
66
+ "notes": "Use callback_uri instead of polling for production — pass a webhook URL and Resemble will POST to it when the clip is ready. For real-time use cases, use the streaming API instead of async clips."
67
+ }
68
+ ],
69
+ "gotchas": [
70
+ "Voice cloning quality depends heavily on the quality and diversity of the training audio. Clean audio with minimal background noise and varied intonation (not monotone reading) produces significantly better results than low-quality samples.",
71
+ "Resemble's async clip generation can take 10-60 seconds for longer texts. For user-facing real-time applications, use the streaming WebSocket API instead, which delivers audio chunks as they're generated with much lower latency.",
72
+ "The `body` field for clip generation accepts plain text but also supports SSML for controlling pronunciation, pauses, and emphasis. However, not all SSML tags are supported — test carefully before relying on SSML in production.",
73
+ "Generated audio URLs are temporary and expire. Download and store the audio to your own storage (e.g., S3, Cloudinary) immediately after generation if you need persistent access."
74
+ ],
75
+ "reliability": {
76
+ "uptimeGuarantee": "99.5% uptime on standard plans",
77
+ "statusPageUrl": "https://status.resemble.ai",
78
+ "notes": "Resemble AI is production-grade and used by enterprise customers. Async generation is highly reliable; real-time streaming is more sensitive to network conditions."
79
+ },
80
+ "qualityScore": 7,
81
+ "qualityJustification": "Best-in-class for voice cloning realism, especially from short audio samples. The API is well-designed and the Node SDK is usable. The main limitations are the pay-as-you-go pricing (no free tier) and the need to manage clip polling or webhooks for async generation. A solid choice for voice-heavy applications; compare with ElevenLabs for non-cloning TTS use cases.",
82
+ "alternatives": ["replicate", "eleven-labs"],
83
+ "complementary": ["mux", "cloudinary", "openai", "deepgram"],
84
+ "bestFor": "Custom voice cloning and high-realism AI speech generation for IVR, audiobooks, and branded voice experiences",
85
+ "lastVerified": "2026-02-25",
86
+ "entryVersion": 1,
87
+ "addedBy": "claude-code-session-2"
88
+ }
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "Stability AI",
3
+ "slug": "stability-ai",
4
+ "category": "ai",
5
+ "subcategory": "image-generation",
6
+ "website": "https://platform.stability.ai",
7
+ "description": "Stability AI provides the Stable Diffusion image generation API — the leading open source image AI model. The Stability AI Platform API (api.stability.ai) provides hosted inference for Stable Diffusion, SDXL, SD3 Medium, and Stable Image services. Generate images from text prompts, edit images, remove backgrounds, and upscale images via REST API.",
8
+ "useCases": [
9
+ {
10
+ "task": "Generate images from text prompts using Stable Diffusion",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Edit existing images with inpainting or outpainting",
15
+ "fit": "good"
16
+ },
17
+ {
18
+ "task": "Remove backgrounds from product photos automatically",
19
+ "fit": "good"
20
+ },
21
+ {
22
+ "task": "Upscale low-resolution images to higher quality",
23
+ "fit": "good"
24
+ }
25
+ ],
26
+ "auth": {
27
+ "method": "api_key",
28
+ "setupSteps": [
29
+ "Create an account at platform.stability.ai",
30
+ "Navigate to API Keys in your account dashboard",
31
+ "Click 'Create new API key'",
32
+ "Copy the key and set the STABILITY_API_KEY environment variable"
33
+ ],
34
+ "envVarName": "STABILITY_API_KEY",
35
+ "codeSnippet": "// Stability AI uses Authorization: Bearer header — no official SDK\nconst response = await fetch('https://api.stability.ai/v2beta/stable-image/generate/core', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${process.env.STABILITY_API_KEY}`,\n Accept: 'application/json',\n },\n});"
36
+ },
37
+ "pricing": {
38
+ "model": "usage_based",
39
+ "freeTier": "25 free credits on signup; credits do not refresh — purchase additional credits when exhausted",
40
+ "startingPrice": "Pay per use: SDXL ~$0.002/image, SD3 Medium ~$0.035/image, Stable Image Core ~$0.003/image",
41
+ "costPer": "SDXL 1.0: 0.2 credits/image ($0.002); SD3 Medium: 3.5 credits/image ($0.035); Stable Image Core: 0.3 credits/image ($0.003); 1000 credits = $10",
42
+ "pricingUrl": "https://platform.stability.ai/docs/credits-and-billing"
43
+ },
44
+ "rateLimits": {
45
+ "tier": "standard",
46
+ "limit": "150 requests per 10 seconds per API key; concurrent request limit also applies",
47
+ "notes": "Rate limits reset every 10 seconds. Image generation latency varies: SDXL takes 1-5 seconds; SD3 takes 5-20 seconds. Use async patterns for frontend apps.",
48
+ "retryStrategy": "Retry on 429 with exponential backoff. For longer-running generations (SD3), poll for results rather than expecting synchronous response."
49
+ },
50
+ "sdk": {
51
+ "primaryLanguage": "typescript",
52
+ "installCommand": "npm install --save-exact node-fetch",
53
+ "importStatement": "// No official JS SDK — use fetch with Authorization: Bearer header",
54
+ "otherLanguages": ["python"]
55
+ },
56
+ "codeExamples": [
57
+ {
58
+ "title": "Generate an image with Stable Diffusion XL",
59
+ "language": "typescript",
60
+ "code": "import fs from 'fs';\nimport path from 'path';\n\ninterface StabilityResponse {\n image: string;\n finish_reason: string;\n seed: number;\n}\n\nasync function generateImage(prompt: string, outputPath: string): Promise<void> {\n const formData = new FormData();\n formData.append('prompt', prompt);\n formData.append('output_format', 'png');\n formData.append('width', '1024');\n formData.append('height', '1024');\n\n const response = await fetch(\n 'https://api.stability.ai/v2beta/stable-image/generate/core',\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${process.env.STABILITY_API_KEY}`,\n Accept: 'application/json',\n },\n body: formData,\n }\n );\n\n if (!response.ok) {\n const error = await response.json();\n throw new Error(`Stability AI error ${response.status}: ${JSON.stringify(error)}`);\n }\n\n const data = (await response.json()) as StabilityResponse;\n\n // Response contains base64-encoded image\n const imageBuffer = Buffer.from(data.image, 'base64');\n fs.writeFileSync(outputPath, imageBuffer);\n\n console.log(`Image saved to ${outputPath} (seed: ${data.seed})`);\n}\n\nawait generateImage(\n 'A photorealistic red fox sitting in a snowy forest, golden hour lighting',\n path.join(process.cwd(), 'output.png')\n);",
61
+ "notes": "Use Accept: 'application/json' to receive base64-encoded image in the response body. Use Accept: 'image/*' to receive raw binary data instead. The v2beta endpoint uses FormData, not JSON body."
62
+ },
63
+ {
64
+ "title": "Remove background from an image",
65
+ "language": "typescript",
66
+ "code": "import fs from 'fs';\n\nasync function removeBackground(\n inputImagePath: string,\n outputImagePath: string\n): Promise<void> {\n const imageBuffer = fs.readFileSync(inputImagePath);\n const imageBlob = new Blob([imageBuffer], { type: 'image/png' });\n\n const formData = new FormData();\n formData.append('image', imageBlob, 'input.png');\n formData.append('output_format', 'png');\n\n const response = await fetch(\n 'https://api.stability.ai/v2beta/stable-image/edit/remove-background',\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${process.env.STABILITY_API_KEY}`,\n Accept: 'application/json',\n },\n body: formData,\n }\n );\n\n if (!response.ok) {\n const error = await response.json();\n throw new Error(`Background removal failed ${response.status}: ${JSON.stringify(error)}`);\n }\n\n const data = (await response.json()) as { image: string; finish_reason: string };\n const outputBuffer = Buffer.from(data.image, 'base64');\n fs.writeFileSync(outputImagePath, outputBuffer);\n\n console.log(`Background removed. Saved to ${outputImagePath}`);\n}\n\nawait removeBackground('product.png', 'product-nobg.png');",
67
+ "notes": "Background removal costs 2 credits per image ($0.02). Works best on images with clear subject-background separation. Returns a PNG with transparent background — preserve the PNG format to keep transparency."
68
+ }
69
+ ],
70
+ "gotchas": [
71
+ "Stability AI credits are NOT free trial credits that refresh monthly — they are one-time credits you purchase. The 25 signup credits are enough for ~100 SDXL images or ~7 SD3 images. After that, you must buy more credits. Budget accordingly for any app with real user-generated images.",
72
+ "Stability AI returns images as binary data (application/octet-stream) or base64-encoded JSON depending on the endpoint and the Accept header you send. The response format also differs between REST API versions (v1 vs v2beta). Always verify the Accept header matches your parsing logic.",
73
+ "The Stability AI API does NOT guarantee content safety — prompts can generate inappropriate content unless you add your own content filtering. Implement prompt screening (using a moderation API) and output validation before showing generated images to users.",
74
+ "Stability AI API availability has been inconsistent historically. The company has had financial difficulties and has pivoted its API products multiple times. For production apps requiring high availability, consider using Replicate (which also hosts Stable Diffusion models) as a more operationally stable provider."
75
+ ],
76
+ "reliability": {
77
+ "uptimeGuarantee": null,
78
+ "statusPageUrl": "https://stability.statuspage.io",
79
+ "notes": "No published SLA. Historical availability has been inconsistent — the platform has experienced multi-hour outages during peak demand and during company restructuring periods. Monitor the status page and implement a fallback provider for production use."
80
+ },
81
+ "qualityScore": 7,
82
+ "qualityJustification": "Direct access to Stable Diffusion models including SDXL and SD3 with competitive per-image pricing. Good for image generation use cases. Loses points for inconsistent platform reliability, lack of an official Node.js SDK, region-specific response format quirks, and the company's unstable business history. Replicate offers a more reliable hosted alternative for Stable Diffusion.",
83
+ "alternatives": ["replicate", "openai"],
84
+ "complementary": ["cloudinary", "uploadthing", "openai"],
85
+ "bestFor": "Generating images from text prompts with Stable Diffusion models — SDXL for fast, cheap generation; SD3 for higher quality photorealistic images",
86
+ "lastVerified": "2026-02-25",
87
+ "entryVersion": 1,
88
+ "addedBy": "claude-code-session-4"
89
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "PostHog",
3
+ "slug": "posthog",
4
+ "category": "analytics",
5
+ "subcategory": "product-analytics",
6
+ "website": "https://posthog.com",
7
+ "description": "PostHog is an open-source product analytics platform combining event tracking, funnels, session recording, feature flags, and A/B testing in a single tool. It can be self-hosted for full data ownership or used as a managed cloud service, making it the preferred choice for privacy-conscious teams and developers who want full control over their analytics stack.",
8
+ "useCases": [
9
+ {
10
+ "task": "Track user events and build product analytics funnels",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Record user sessions to understand how users interact with your UI",
15
+ "fit": "perfect"
16
+ },
17
+ {
18
+ "task": "Roll out features gradually with feature flags",
19
+ "fit": "perfect"
20
+ },
21
+ {
22
+ "task": "Run A/B tests to measure feature impact",
23
+ "fit": "perfect"
24
+ },
25
+ {
26
+ "task": "Self-host analytics for GDPR compliance or data residency requirements",
27
+ "fit": "perfect"
28
+ }
29
+ ],
30
+ "auth": {
31
+ "method": "api_key",
32
+ "setupSteps": [
33
+ "Sign up at posthog.com (or self-host via Docker/Kubernetes)",
34
+ "Create a new project in the PostHog dashboard",
35
+ "Copy your Project API Key from Project Settings > Project API Key",
36
+ "Install the PostHog SDK for your platform",
37
+ "Set POSTHOG_API_KEY and POSTHOG_HOST environment variables"
38
+ ],
39
+ "envVarName": "POSTHOG_API_KEY",
40
+ "codeSnippet": "import { PostHog } from 'posthog-node';\nconst client = new PostHog(process.env.POSTHOG_API_KEY!, {\n host: process.env.POSTHOG_HOST ?? 'https://us.i.posthog.com',\n});"
41
+ },
42
+ "pricing": {
43
+ "model": "freemium",
44
+ "freeTier": "1,000,000 events/month free, unlimited projects, session recordings included",
45
+ "startingPrice": "Pay-as-you-go after 1M events: $0.00005/event (very gradual scale)",
46
+ "costPer": "$0.00005 per event above 1M/month; session recordings: $0.005/recording above 5,000 free",
47
+ "pricingUrl": "https://posthog.com/pricing"
48
+ },
49
+ "rateLimits": {
50
+ "tier": "all tiers",
51
+ "limit": "No documented API rate limit for event ingestion; batch events to be safe",
52
+ "notes": "PostHog is designed for high-volume event ingestion. Use the SDK's built-in batching (default batch size: 20 events, flush interval: 10s) rather than sending individual events.",
53
+ "retryStrategy": "PostHog Node SDK handles retries automatically. For self-hosted setups, events queue locally and retry on network failures."
54
+ },
55
+ "sdk": {
56
+ "primaryLanguage": "typescript",
57
+ "installCommand": "npm install --save-exact posthog-node",
58
+ "importStatement": "import { PostHog } from 'posthog-node';",
59
+ "otherLanguages": ["python", "ruby", "go", "php", "java", "ios", "android", "react-native", "flutter"]
60
+ },
61
+ "codeExamples": [
62
+ {
63
+ "title": "Track events and identify users (server-side)",
64
+ "language": "typescript",
65
+ "code": "import { PostHog } from 'posthog-node';\n\nconst posthog = new PostHog(process.env.POSTHOG_API_KEY!, {\n host: process.env.POSTHOG_HOST ?? 'https://us.i.posthog.com',\n flushAt: 20, // batch size before auto-flush\n flushInterval: 10000, // ms between auto-flushes\n});\n\n// Identify a user with properties\nposthog.identify({\n distinctId: 'user-123',\n properties: {\n email: 'jane@example.com',\n plan: 'pro',\n signedUpAt: '2026-01-15',\n },\n});\n\n// Track an event\nposthog.capture({\n distinctId: 'user-123',\n event: 'checkout_completed',\n properties: {\n orderId: 'order_456',\n totalAmount: 99.99,\n currency: 'USD',\n itemCount: 3,\n },\n});\n\n// Check a feature flag\nconst flagEnabled = await posthog.isFeatureEnabled('new-checkout-flow', 'user-123');\nif (flagEnabled) {\n // show new experience\n}\n\n// IMPORTANT: flush before process exits (e.g., in serverless)\nawait posthog.shutdown();",
66
+ "notes": "Always call posthog.shutdown() before the process exits (e.g., in serverless/edge functions) to flush the event queue. In long-running servers, the SDK auto-flushes on interval. Use distinctId consistently — it ties all events to one user."
67
+ }
68
+ ],
69
+ "gotchas": [
70
+ "PostHog Node SDK batches events and flushes asynchronously — in serverless functions (Vercel, AWS Lambda), the process may exit before events are sent. Always call `await posthog.shutdown()` at the end of serverless handlers, or use `await posthog.flushAsync()`.",
71
+ "The free 1M events/month sounds huge, but session recordings count separately and can add up quickly if you have many users. Session recordings are $0.005 each above 5,000/month — audit your recording settings and consider sampling.",
72
+ "Feature flags are evaluated server-side by calling the PostHog API on each request unless you use local evaluation. Enable local evaluation (requires downloading the flag config) to avoid latency on every request.",
73
+ "Self-hosting PostHog requires significant infrastructure (ClickHouse, Kafka, Redis, PostgreSQL). The all-in-one Docker Compose setup works for small scale but needs ~4GB RAM minimum. The cloud version is much easier to start with."
74
+ ],
75
+ "reliability": {
76
+ "uptimeGuarantee": "99.9% uptime on cloud; self-hosted depends on your infrastructure",
77
+ "statusPageUrl": "https://status.posthog.com",
78
+ "notes": "PostHog cloud (US and EU regions) has strong reliability. The SDK is designed to fail silently — analytics errors should never break your application."
79
+ },
80
+ "qualityScore": 8,
81
+ "qualityJustification": "Best product analytics platform with the most generous free tier (1M events/month). The combination of event tracking, session recording, feature flags, and A/B testing in one SDK is a genuine differentiator. Open-source and self-hostable for data control. The only drawbacks are self-hosting complexity and the serverless flush gotcha.",
82
+ "alternatives": ["sentry"],
83
+ "complementary": ["sentry", "clerk", "supabase", "stripe"],
84
+ "bestFor": "Product analytics, feature flags, and session recording with a generous free tier and optional self-hosting for data ownership",
85
+ "lastVerified": "2026-02-25",
86
+ "entryVersion": 1,
87
+ "addedBy": "claude-code-session-2"
88
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "Sentry",
3
+ "slug": "sentry",
4
+ "category": "analytics",
5
+ "subcategory": "error-monitoring",
6
+ "website": "https://sentry.io",
7
+ "description": "Sentry is the industry-standard error tracking and application performance monitoring platform. It automatically captures unhandled exceptions, tracks performance regressions, and provides full stack traces with source maps — giving developers the context needed to reproduce and fix bugs fast. Available as cloud SaaS or self-hosted.",
8
+ "useCases": [
9
+ {
10
+ "task": "Capture and track unhandled errors and exceptions in production",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Monitor application performance and identify slow API calls or transactions",
15
+ "fit": "perfect"
16
+ },
17
+ {
18
+ "task": "Set up alerts when error rates spike or new issues appear",
19
+ "fit": "perfect"
20
+ },
21
+ {
22
+ "task": "Debug production issues with full stack traces and breadcrumbs",
23
+ "fit": "perfect"
24
+ }
25
+ ],
26
+ "auth": {
27
+ "method": "api_key",
28
+ "setupSteps": [
29
+ "Sign up at sentry.io and create a new project",
30
+ "Select your platform (Node.js, React, Next.js, etc.)",
31
+ "Copy the DSN (Data Source Name) from the project settings",
32
+ "Install the Sentry SDK and initialize with the DSN",
33
+ "Set SENTRY_DSN environment variable"
34
+ ],
35
+ "envVarName": "SENTRY_DSN",
36
+ "codeSnippet": "import * as Sentry from '@sentry/node';\nSentry.init({ dsn: process.env.SENTRY_DSN! });"
37
+ },
38
+ "pricing": {
39
+ "model": "freemium",
40
+ "freeTier": "5,000 errors/month, 10,000 performance transactions/month, 1 user",
41
+ "startingPrice": "$26/month (Team plan) for 50,000 errors and additional team members",
42
+ "costPer": "Errors: $0.00029/error above quota; Performance: $0.0001/transaction",
43
+ "pricingUrl": "https://sentry.io/pricing"
44
+ },
45
+ "rateLimits": {
46
+ "tier": "free tier",
47
+ "limit": "5,000 events/month; ingest rate limited based on plan",
48
+ "notes": "Sentry silently drops events once quota is exhausted unless you configure rate limiting or purchase more quota. Set up quota alerts in the dashboard.",
49
+ "retryStrategy": "Sentry SDK handles retries internally. If quota is exhausted, events are dropped server-side. Monitor quota usage via the Sentry dashboard stats API."
50
+ },
51
+ "sdk": {
52
+ "primaryLanguage": "typescript",
53
+ "installCommand": "npm install --save-exact @sentry/node @sentry/profiling-node",
54
+ "importStatement": "import * as Sentry from '@sentry/node';",
55
+ "otherLanguages": ["python", "ruby", "java", "go", "php", "react", "vue", "angular", "nextjs"]
56
+ },
57
+ "codeExamples": [
58
+ {
59
+ "title": "Initialize Sentry in a Node.js/Express app",
60
+ "language": "typescript",
61
+ "code": "import * as Sentry from '@sentry/node';\nimport { nodeProfilingIntegration } from '@sentry/profiling-node';\nimport express from 'express';\n\n// IMPORTANT: Initialize Sentry BEFORE any other imports/setup\nSentry.init({\n dsn: process.env.SENTRY_DSN!,\n environment: process.env.NODE_ENV ?? 'development',\n integrations: [nodeProfilingIntegration()],\n tracesSampleRate: 1.0, // Capture 100% of transactions (reduce in prod)\n profilesSampleRate: 1.0,\n});\n\nconst app = express();\n\n// Add routes here...\n\n// IMPORTANT: Sentry error handler must be AFTER routes and BEFORE other error handlers\nSentry.setupExpressErrorHandler(app);\n\n// Example: manually capture an error with context\ntry {\n const result = await riskyOperation();\n} catch (error) {\n Sentry.captureException(error, {\n extra: { userId: 'user-123', operation: 'riskyOperation' },\n tags: { feature: 'checkout' },\n });\n throw error;\n}",
62
+ "notes": "Sentry MUST be initialized before any other code. In Next.js, use sentry.server.config.ts and the Sentry Next.js wizard (`npx @sentry/wizard@latest -i nextjs`). The tracesSampleRate controls APM cost — set to 0.1-0.2 in production."
63
+ }
64
+ ],
65
+ "gotchas": [
66
+ "Sentry must be initialized before any other imports — especially in Next.js where the initialization order matters. Using the Sentry wizard (`npx @sentry/wizard@latest -i nextjs`) handles this automatically and is strongly recommended over manual setup.",
67
+ "The free plan quota (5,000 errors/month) is exhausted quickly in active development if you're also capturing dev/staging errors. Always filter by environment and set up separate DSNs for dev vs. production.",
68
+ "Source maps are required for readable stack traces in minified/compiled code. Without them, you'll see `bundle.js:1:45820` instead of actual file/line numbers. Configure source map upload in your build pipeline.",
69
+ "Sentry's performance monitoring (tracing) adds overhead to every request. Set tracesSampleRate to 0.1 or lower in production, not 1.0, unless you're on a paid plan with sufficient transaction quota."
70
+ ],
71
+ "reliability": {
72
+ "uptimeGuarantee": "99.9% uptime SLA on Business and above",
73
+ "statusPageUrl": "https://status.sentry.io",
74
+ "notes": "Sentry is battle-tested at scale, used by companies like GitHub, Cloudflare, and Disney. The SDK is designed to be non-blocking and fail silently to avoid impacting your application."
75
+ },
76
+ "qualityScore": 9,
77
+ "qualityJustification": "The undisputed standard for error tracking. Exceptional SDK quality across every major language and framework. Source map support, breadcrumbs, performance monitoring, and release tracking are all best-in-class. The free tier is limiting for teams but sufficient for solo projects. Near-zero setup friction with the wizard.",
78
+ "alternatives": ["posthog"],
79
+ "complementary": ["posthog", "supabase", "stripe"],
80
+ "bestFor": "Production error tracking and performance monitoring — the default choice for any application that needs to catch and debug runtime errors",
81
+ "lastVerified": "2026-02-25",
82
+ "entryVersion": 1,
83
+ "addedBy": "claude-code-session-2"
84
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "name": "Auth0",
3
+ "slug": "auth0",
4
+ "category": "auth",
5
+ "subcategory": "identity-platform",
6
+ "website": "https://auth0.com",
7
+ "description": "Auth0 (by Okta) is an enterprise-grade identity platform supporting a wide range of authentication flows including social login, SSO, MFA, and custom databases. It is the industry standard for enterprise applications requiring compliance (SOC 2, HIPAA, GDPR), fine-grained authorization, and support for complex multi-tenant identity scenarios.",
8
+ "useCases": [
9
+ {
10
+ "task": "Add enterprise SSO and SAML authentication",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Implement machine-to-machine authentication for APIs",
15
+ "fit": "perfect"
16
+ },
17
+ {
18
+ "task": "Build HIPAA or SOC 2 compliant authentication",
19
+ "fit": "perfect"
20
+ },
21
+ {
22
+ "task": "Add social login to a web application",
23
+ "fit": "good"
24
+ },
25
+ {
26
+ "task": "Simple sign-up/sign-in for a consumer app",
27
+ "fit": "good"
28
+ }
29
+ ],
30
+ "auth": {
31
+ "method": "oauth2",
32
+ "setupSteps": [
33
+ "Sign up at auth0.com",
34
+ "Create a new Application in the Auth0 Dashboard (choose Regular Web App, SPA, or Machine to Machine)",
35
+ "Configure Allowed Callback URLs and Allowed Logout URLs",
36
+ "Copy your Domain and Client ID (and Client Secret for server-side)",
37
+ "Set AUTH0_DOMAIN, AUTH0_CLIENT_ID, and AUTH0_CLIENT_SECRET environment variables",
38
+ "Install the Auth0 SDK for your framework"
39
+ ],
40
+ "envVarName": "AUTH0_CLIENT_SECRET",
41
+ "codeSnippet": "import { initAuth0 } from '@auth0/nextjs-auth0';\nexport const auth0 = initAuth0({\n domain: process.env.AUTH0_DOMAIN!,\n clientId: process.env.AUTH0_CLIENT_ID!,\n clientSecret: process.env.AUTH0_CLIENT_SECRET!,\n secret: process.env.AUTH0_SECRET!, // Random string for session encryption\n baseURL: process.env.APP_BASE_URL!,\n});"
42
+ },
43
+ "pricing": {
44
+ "model": "freemium",
45
+ "freeTier": "7,500 MAU, unlimited logins, social connections",
46
+ "startingPrice": "$35/month for up to 1,000 MAU on Professional plan",
47
+ "costPer": "Professional: ~$0.07/MAU; Enterprise pricing is custom",
48
+ "pricingUrl": "https://auth0.com/pricing"
49
+ },
50
+ "rateLimits": {
51
+ "tier": "free tier",
52
+ "limit": "300 requests/minute for Management API; authentication endpoints have separate limits",
53
+ "notes": "Management API rate limits are separate from authentication limits. Authentication endpoints (login, token) have generous limits. Check dashboard for current limits.",
54
+ "retryStrategy": "Respect Retry-After header on 429 responses; implement exponential backoff for Management API calls"
55
+ },
56
+ "sdk": {
57
+ "primaryLanguage": "typescript",
58
+ "installCommand": "npm install --save-exact @auth0/nextjs-auth0",
59
+ "importStatement": "import { initAuth0 } from '@auth0/nextjs-auth0';",
60
+ "otherLanguages": ["react", "vue", "angular", "python", "java", "ruby", "go", "dotnet"]
61
+ },
62
+ "codeExamples": [
63
+ {
64
+ "title": "Set up Auth0 in Next.js App Router",
65
+ "language": "typescript",
66
+ "code": "// lib/auth0.ts\nimport { initAuth0 } from '@auth0/nextjs-auth0';\n\nexport const auth0 = initAuth0({\n domain: process.env.AUTH0_DOMAIN!,\n clientId: process.env.AUTH0_CLIENT_ID!,\n clientSecret: process.env.AUTH0_CLIENT_SECRET!,\n secret: process.env.AUTH0_SECRET!,\n baseURL: process.env.APP_BASE_URL!,\n});\n\n// app/api/auth/[auth0]/route.ts\nimport { auth0 } from '@/lib/auth0';\nexport const GET = auth0.handleAuth();\n\n// Get user in a Server Component\nimport { auth0 } from '@/lib/auth0';\nexport default async function Dashboard() {\n const session = await auth0.getSession();\n if (!session) redirect('/api/auth/login');\n return <h1>Hello, {session.user.name}</h1>;\n}",
67
+ "notes": "The handleAuth() handler creates /api/auth/login, /api/auth/logout, /api/auth/callback, and /api/auth/me endpoints automatically."
68
+ }
69
+ ],
70
+ "gotchas": [
71
+ "Auth0's free tier is 7,500 MAU but the jump to paid is steep ($35/month minimum). If you have between 7,500 and 10,000 MAU, Clerk's free tier (10,000 MAU) is more cost-effective.",
72
+ "The Management API (for user CRUD, role management) has strict rate limits (300 req/min). Caching user data in your own database and only calling the Management API when data changes is strongly recommended for any real application.",
73
+ "Auth0 has multiple SDKs for different frameworks (@auth0/nextjs-auth0, @auth0/auth0-react, auth0-spa-js). Make sure you install the right one for your stack — they are NOT interchangeable.",
74
+ "Auth0 Tenant configuration is complex. Actions (custom code), Rules (legacy), Hooks, Connections, and Applications all interact. Plan your tenant architecture before building.",
75
+ "SSO and enterprise connections (SAML, OIDC, Active Directory) are only available on paid plans. If your primary use case is enterprise SSO, factor this into your pricing evaluation."
76
+ ],
77
+ "reliability": {
78
+ "uptimeGuarantee": "99.99% uptime SLA on Enterprise plans",
79
+ "statusPageUrl": "https://status.auth0.com",
80
+ "notes": "Auth0 is enterprise-grade with global infrastructure. The Okta acquisition has brought additional enterprise resources. Compliance certifications: SOC 2, ISO 27001, HIPAA, GDPR."
81
+ },
82
+ "qualityScore": 7,
83
+ "qualityJustification": "Gold standard for enterprise auth with unmatched compliance and SSO capabilities. However, it has a steeper learning curve, more complex setup, higher pricing, and a less modern developer experience compared to Clerk. The ideal choice when enterprise SSO or compliance requirements demand it.",
84
+ "alternatives": ["clerk"],
85
+ "complementary": ["stripe", "resend"],
86
+ "bestFor": "Enterprise applications requiring SSO, SAML, fine-grained authorization, compliance certifications, or complex multi-tenant identity scenarios",
87
+ "lastVerified": "2026-02-25",
88
+ "entryVersion": 1,
89
+ "addedBy": "claude-code-session-1"
90
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "name": "Clerk",
3
+ "slug": "clerk",
4
+ "category": "auth",
5
+ "subcategory": "authentication-platform",
6
+ "website": "https://clerk.com",
7
+ "description": "Clerk is a complete authentication and user management platform with drop-in UI components for sign-up, sign-in, and user profiles. It handles OAuth providers, passkeys, magic links, multi-factor authentication, and organizations out-of-the-box — making it the fastest way to add auth to a Next.js or React application.",
8
+ "useCases": [
9
+ {
10
+ "task": "Add complete authentication (sign-up, sign-in, OAuth) to a Next.js app",
11
+ "fit": "perfect"
12
+ },
13
+ {
14
+ "task": "Implement multi-tenant organizations and team management",
15
+ "fit": "perfect"
16
+ },
17
+ {
18
+ "task": "Add social login (Google, GitHub, etc.) to a web app",
19
+ "fit": "perfect"
20
+ },
21
+ {
22
+ "task": "Protect API routes and server components with authentication",
23
+ "fit": "perfect"
24
+ },
25
+ {
26
+ "task": "Build custom authentication flows from scratch",
27
+ "fit": "partial"
28
+ }
29
+ ],
30
+ "auth": {
31
+ "method": "api_key",
32
+ "setupSteps": [
33
+ "Sign up at clerk.com",
34
+ "Create a new application in the Clerk Dashboard",
35
+ "Configure authentication providers (email, Google, GitHub, etc.)",
36
+ "Copy your Publishable Key and Secret Key",
37
+ "Set NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY environment variables",
38
+ "Wrap your app with <ClerkProvider> and add middleware"
39
+ ],
40
+ "envVarName": "CLERK_SECRET_KEY",
41
+ "codeSnippet": "import { ClerkProvider } from '@clerk/nextjs';\n// In middleware.ts:\nimport { clerkMiddleware } from '@clerk/nextjs/server';\nexport default clerkMiddleware();"
42
+ },
43
+ "pricing": {
44
+ "model": "freemium",
45
+ "freeTier": "10,000 monthly active users (MAU), all core features",
46
+ "startingPrice": "$25/month for 10,001-100,000 MAU",
47
+ "costPer": "$0.02 per MAU above free tier (Pro plan)",
48
+ "pricingUrl": "https://clerk.com/pricing"
49
+ },
50
+ "rateLimits": {
51
+ "tier": "free tier",
52
+ "limit": "No API rate limits documented; frontend auth calls managed by Clerk's infrastructure",
53
+ "notes": "Rate limits are handled by Clerk's infrastructure. Unusual activity triggers automatic protection.",
54
+ "retryStrategy": "Clerk SDK handles retries internally. Implement standard retry for backend API calls to Clerk's REST API."
55
+ },
56
+ "sdk": {
57
+ "primaryLanguage": "typescript",
58
+ "installCommand": "npm install --save-exact @clerk/nextjs",
59
+ "importStatement": "import { ClerkProvider, SignIn, SignUp, useUser } from '@clerk/nextjs';",
60
+ "otherLanguages": ["react", "remix", "astro", "express", "fastify", "hono"]
61
+ },
62
+ "codeExamples": [
63
+ {
64
+ "title": "Protect a Next.js route and get current user",
65
+ "language": "typescript",
66
+ "code": "// middleware.ts (protects all routes by default)\nimport { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';\n\nconst isPublicRoute = createRouteMatcher(['/sign-in(.*)', '/sign-up(.*)', '/']);\n\nexport default clerkMiddleware(async (auth, request) => {\n if (!isPublicRoute(request)) {\n await auth.protect(); // Redirects to sign-in if not authenticated\n }\n});\n\nexport const config = {\n matcher: ['/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)', '/(api|trpc)(.*)'],\n};",
67
+ "notes": "clerkMiddleware is the recommended approach for Next.js App Router. Add the matcher to skip static files."
68
+ },
69
+ {
70
+ "title": "Get user in a Server Component",
71
+ "language": "typescript",
72
+ "code": "// app/dashboard/page.tsx\nimport { auth, currentUser } from '@clerk/nextjs/server';\nimport { redirect } from 'next/navigation';\n\nexport default async function DashboardPage() {\n const { userId } = await auth();\n \n if (!userId) {\n redirect('/sign-in');\n }\n \n const user = await currentUser();\n \n return (\n <div>\n <h1>Welcome, {user?.firstName}!</h1>\n <p>Your ID: {userId}</p>\n </div>\n );\n}",
73
+ "notes": "Use auth() for just the userId (fast, no extra API call). Use currentUser() for full profile data. Both are server-only."
74
+ }
75
+ ],
76
+ "gotchas": [
77
+ "Clerk's pricing is based on Monthly Active Users (MAU), not API calls. An MAU is any user who authenticates at least once per month. With a large but mostly dormant user base, this is very cost-effective. With a highly active user base, plan carefully.",
78
+ "The middleware matcher must be configured correctly — missing routes in the matcher means they won't be protected. The default matcher skips static files and _next — copy it exactly from the docs.",
79
+ "Clerk creates its own User object with a Clerk user ID (clerkId). You typically need to sync this to your own database on first sign-in using Clerk webhooks. Plan this user sync from day one.",
80
+ "Clerk components (SignIn, SignUp, UserButton) use an iframe in some modes, which can cause CSP (Content Security Policy) issues. Configure your CSP to allow Clerk's domains."
81
+ ],
82
+ "reliability": {
83
+ "uptimeGuarantee": "99.99% uptime SLA on Enterprise plans",
84
+ "statusPageUrl": "https://status.clerk.com",
85
+ "notes": "Clerk's infrastructure is highly available with global edge deployment. Authentication flows are critical path — Clerk treats this accordingly."
86
+ },
87
+ "qualityScore": 9,
88
+ "qualityJustification": "Best developer experience for adding auth to Next.js applications. Exceptional TypeScript support, beautiful pre-built components, generous free tier, and comprehensive feature set. Minor deductions for potential complexity with custom auth flows and the user sync webhook requirement.",
89
+ "alternatives": ["auth0"],
90
+ "complementary": ["resend", "stripe", "uploadthing"],
91
+ "bestFor": "Drop-in authentication with pre-built UI for Next.js and React applications, especially with social auth and multi-tenancy needs",
92
+ "lastVerified": "2026-02-25",
93
+ "entryVersion": 1,
94
+ "addedBy": "claude-code-session-1"
95
+ }