6.2 KiB
6.2 KiB
External Integrations
Analysis Date: 2026-04-18
APIs & External Services
Workflow Automation / Search:
- n8n webhook - AI search requests are forwarded from
src/app/api/search/ai/route.tsto the URL inprocess.env.N8N_AI_SEARCH_WEBHOOK.- SDK/Client: Native
fetchinsrc/app/api/search/ai/route.ts - Auth:
N8N_AI_SEARCH_WEBHOOK - Evidence: outbound
GETrequest is constructed insrc/app/api/search/ai/route.ts;.env.exampleprovides the webhook variable name.
- SDK/Client: Native
Vercel Runtime Telemetry:
- Vercel Analytics - Client analytics are mounted in
src/app/VercelMetrics.tsxand only rendered whenprocess.env.VERCEL_ENV === "production"insrc/app/layout.tsx.- SDK/Client:
@vercel/analytics - Auth: Managed by Vercel runtime; no repo-managed token detected
- SDK/Client:
- Vercel Speed Insights - Frontend performance sampling is mounted beside analytics in
src/app/VercelMetrics.tsx.- SDK/Client:
@vercel/speed-insights - Auth: Managed by Vercel runtime; no repo-managed token detected
- SDK/Client:
Static Asset Providers:
- Google Fonts / Material Icons - CSS imports in
src/app/globals.cssload Inter, Space Mono, and Material Icons fromfonts.googleapis.com.- SDK/Client: CSS
@import - Auth: None
- SDK/Client: CSS
- Shields.io - GitHub badge images are generated in
src/lib/github/badges.tsand rendered throughnext/imageinsrc/components/project/ProjectCard.tsxandsrc/components/project/GitHubTextStatsCard.tsx.- SDK/Client: URL construction only
- Auth: None
- Evidence:
img.shields.iois explicitly whitelisted innext.config.js.
Content / Link Surfaces:
- GitHub - The app stores GitHub repository links on projects and builds GitHub badge and deep-link URLs in
src/lib/github/badges.ts.- SDK/Client: None detected
- Auth: None detected
- Note: GitHub API calls are not detected in current code; integration is via stored URLs and Shields.io images.
Data Storage
Databases:
- PostgreSQL
- Connection:
DATABASE_URL - Client: Prisma via
@prisma/clientinsrc/lib/prisma.ts - Schema:
prisma/schema.prisma - Migrations:
prisma/migrations/*/migration.sql - Usage: Queried from
src/hooks/useProjects.ts,src/app/api/projects/route.ts,src/app/api/tags/route.ts,src/app/api/signals/route.ts, and webhook-style route handlers.
- Connection:
File Storage:
- Local filesystem only
- Evidence: No S3, Blob, Cloudinary, or similar storage SDK is declared in
package.jsonor imported undersrc/**/*.
- Evidence: No S3, Blob, Cloudinary, or similar storage SDK is declared in
Caching:
- Next.js data cache via
unstable_cache- Service: Built-in framework cache, not a separate external service
- Implementation:
src/app/api/tags/route.tsandsrc/hooks/useProjects.ts
- External cache service: None detected
- Evidence: No Redis, Memcached, or similar client package is declared in
package.json.
- Evidence: No Redis, Memcached, or similar client package is declared in
Authentication & Identity
Auth Provider:
- Custom shared-secret authentication for machine-to-machine routes
- Implementation:
src/lib/auth.tscompares a provided API key againstprocess.env.WEBHOOK_API_KEYusingcrypto.timingSafeEqual. - Used by:
src/app/api/webhook/signals/route.tssrc/app/api/tags/maintenance/route.tssrc/app/api/tags/reset-projects/route.ts
- Implementation:
- End-user authentication: Not detected
- Evidence: No NextAuth, Clerk, Auth.js, Supabase Auth, OAuth, or session middleware is present in
package.jsonorsrc/**/*.
- Evidence: No NextAuth, Clerk, Auth.js, Supabase Auth, OAuth, or session middleware is present in
Monitoring & Observability
Error Tracking:
- None detected
- Evidence: No Sentry, Bugsnag, Datadog, or Rollbar package is declared in
package.json.
- Evidence: No Sentry, Bugsnag, Datadog, or Rollbar package is declared in
Logs:
- Server logging uses
console.errorandconsole.warnin route handlers such assrc/app/api/search/ai/route.ts,src/app/api/webhook/signals/route.ts, andsrc/app/api/tags/route.ts. - Frontend telemetry uses Vercel Analytics and Speed Insights in
src/app/VercelMetrics.tsx.
CI/CD & Deployment
Hosting:
- Vercel
- Evidence:
vercel.jsonsets"framework": "nextjs",buildCommand,installCommand, and regionhkg1.
- Evidence:
CI Pipeline:
- None detected in repo
- Evidence: No
.github/workflows/*, GitLab CI file, CircleCI config, or other CI config file is present at repo root.
- Evidence: No
Environment Configuration
Required env vars:
DATABASE_URL- Required by Prisma datasource inprisma/schema.prisma.WEBHOOK_API_KEY- Required for authenticated webhook-style POST endpoints insrc/lib/auth.ts.N8N_AI_SEARCH_WEBHOOK- Required by the outbound AI search proxy insrc/app/api/search/ai/route.ts.NEXT_PUBLIC_SITE_URL- Optional but used to generate canonical URLs insrc/app/robots.tsandsrc/app/sitemap.ts; code falls back tohttps://agentpark.ai.VERCEL_ENV- Read insrc/app/layout.tsxto gate Vercel telemetry; expected when deployed on Vercel..env.examplealso includesNEXT_INTL_DEFAULT_LOCALEandNEXT_INTL_SUPPORTED_LOCALES, but current locale middleware and request config rely on hard-coded values insrc/middleware.tsandsrc/i18n/request.ts.
Secrets location:
- Local development secrets:
.env.localand.envfiles are present in repo root; contents were not read. - Production secrets: Vercel environment variables are implied by
vercel.jsonandprocess.env.*usage, but no separate secret manager config is committed.
Webhooks & Callbacks
Incoming:
POST /api/webhook/signalsinsrc/app/api/webhook/signals/route.ts- Purpose: Ingests batched signal payloads into PostgreSQL via Prisma.
- Auth: Shared secret in request body validated against
WEBHOOK_API_KEY.
POST /api/tags/maintenanceinsrc/app/api/tags/maintenance/route.ts- Purpose: Applies tag updates/merges and revalidates project pages.
- Auth: Shared secret in request body validated against
WEBHOOK_API_KEY.
POST /api/tags/reset-projectsinsrc/app/api/tags/reset-projects/route.ts- Purpose: Resets project tag assignments by category and optionally revalidates pages.
- Auth: Shared secret in request body validated against
WEBHOOK_API_KEY.
Outgoing:
- n8n AI search webhook
- Source:
src/app/api/search/ai/route.ts - Method:
GET - Target: URL from
N8N_AI_SEARCH_WEBHOOK
- Source:
- Search engine / badge asset requests from the browser are not hard-coded beyond standard page navigation, Google Fonts CSS, Material Icons CSS, and Shields.io image URLs.
Integration audit: 2026-04-18