7.1 KiB
7.1 KiB
Technology Stack
Analysis Date: 2026-04-20
Languages
Primary:
- TypeScript 5.x - Main application, API, Prisma helpers, hooks, and tooling live in
src/**/*.ts,src/**/*.tsx,prisma/seed.ts,tailwind.config.ts, andvitest.config.ts; the compiler is declared inpackage.json.
Secondary:
- JavaScript - Runtime and framework config live in
next.config.js,postcss.config.mjs, andscripts/generate-n8n-context.mjs. - CSS - Global styling and external font/icon imports live in
src/app/globals.css. - JSON - Repo and content config live in
package.json,tsconfig.json,.eslintrc.json,.prettierrc.json,vercel.json,docs/integrations/n8n/registry.json, andsrc/messages/*.json. - Prisma schema DSL - Database schema, datasource, enums, and vector column definitions live in
prisma/schema.prisma. - SQL migrations - Prisma migration output lives in
prisma/migrations/*/migration.sql. - Markdown - Integration contracts and workflow docs live in
docs/integrations/n8n/*.md,docs/integrations/n8n/workflows/*.md, and mirrored GSD docs in.planning/codebase/N8N-CONTEXT.mdand.planning/codebase/N8N-DATAFLOW.md.
Runtime
Environment:
- Node.js 22.x - Containerized runtime is pinned by
DockerfileandDockerfile.runtime, both based onnode:22-bookworm. - Server runtime is Next.js App Router with standalone output enabled in
next.config.jsand consumed byDockerfile.runtime. - Local runtime version pin file is not committed. No
.nvmrc,.node-version, or.tool-versionsfile is present at repo root.
Package Manager:
pnpm- All install/build/test scripts inpackage.json,vercel.json,Dockerfile, andnixpacks.tomlusepnpm.- Lockfile: present in
pnpm-lock.yaml.
Frameworks
Core:
- Next.js
15.1.11- App Router pages, layouts, metadata routes, and route handlers live insrc/app/**/*; framework config is innext.config.js. - React
19.0.0andreact-dom19.0.0- UI runtime for components insrc/components/**/*and route segments insrc/app/**/*. next-intl^4.0.2- Locale middleware and message loading are wired throughnext.config.js,src/middleware.ts,src/i18n/request.ts, and localized routes undersrc/app/[locale].- Prisma
^6.1.0/@prisma/client^6.1.0- ORM and generated client used bysrc/lib/prisma.ts,src/hooks/useProjects.ts,src/hooks/useHome.ts, and route handlers undersrc/app/api/**/*. - Zod
^3.24.1- Runtime validation is centralized insrc/lib/validations.tsand consumed by API routes such assrc/app/api/search/ai/route.tsandsrc/app/api/webhook/signals/route.ts.
Testing:
- Vitest
^2.1.8- Unit-style tests are configured invitest.config.tsand run againstsrc/**/*.test.ts. - Playwright: Not detected in committed dependencies or config. No
playwright.config.*file and no committede2e/directory are present.
Build/Dev:
- Tailwind CSS
^3.4.17- Utility styling is configured intailwind.config.tsand loaded fromsrc/app/globals.css. tailwindcss-animate^1.0.7- Tailwind plugin registered intailwind.config.ts.- PostCSS
^8withautoprefixer^10.4.20- CSS processing is configured inpostcss.config.mjs. - ESLint
^9witheslint-config-next15.1.11andeslint-config-prettier^9.1.0- Linting rules are configured in.eslintrc.json. - Prettier
^3.4.2- Formatting rules are configured in.prettierrc.json. ts-node^10.9.2- Used by the Prisma seed command configured inpackage.json.
Key Dependencies
Critical:
next15.1.11- Main web framework forsrc/app/**/*.react19.0.0andreact-dom19.0.0- Required by all React components insrc/components/**/*.@prisma/client^6.1.0- Data access layer instantiated insrc/lib/prisma.ts.prisma^6.1.0- Schema and migration tooling forprisma/schema.prismaandprisma/migrations/*.next-intl^4.0.2- Locale-aware routing and translations forsrc/middleware.ts,src/i18n/request.ts, andsrc/messages/*.json.zod^3.24.1- Request validation for search, tags, and webhook contracts insrc/lib/validations.ts.
Infrastructure:
@vercel/analytics^1.6.1- Client analytics are mounted insrc/app/VercelMetrics.tsx.@vercel/speed-insights^1.3.1- Frontend performance telemetry is mounted insrc/app/VercelMetrics.tsx.react-markdown^10.1.0,remark-gfm^4.0.1, andrehype-sanitize^6.0.0- Markdown rendering and sanitization stack used bysrc/components/project/MarkdownContent.tsx.lucide-react^0.468.0- Icon package optimized throughexperimental.optimizePackageImportsinnext.config.js.
Configuration
Environment:
- Database connectivity is anchored by
DATABASE_URLinprisma/schema.prismaand normalized bybuildPrismaDataSourceUrl()insrc/lib/prisma-url.ts. - Optional Postgres mTLS/SSL overlay is configured in
src/lib/prisma-url.tsusingPG_SSL_ROOT_CERT_B64,PG_SSL_IDENTITY_P12_B64,PG_SSL_IDENTITY_PASSWORD,PG_SSL_CERT_DIR, andPG_SSL_MODE. - Internal machine-to-machine auth uses
WEBHOOK_API_KEYinsrc/lib/auth.ts. - Outbound AI search proxying uses
N8N_AI_SEARCH_WEBHOOKinsrc/app/api/search/ai/route.ts. - Canonical URL generation uses
NEXT_PUBLIC_SITE_URLinsrc/app/robots.tsandsrc/app/sitemap.ts. - Vercel-only telemetry gating uses
VERCEL_ENVinsrc/app/layout.tsx. - Template env files exist as
.env.example,.env.local, and.env; contents were not read.
Build:
next.config.jsenablesoutput: "standalone", wiresnext-intl, configures remote image hosts, and optimizeslucide-reactimports.tsconfig.jsonenables strict TypeScript,noUncheckedIndexedAccess,noImplicitReturns,noFallthroughCasesInSwitch, and the@/*alias.tailwind.config.tsandpostcss.config.mjsdefine the frontend styling pipeline.vercel.jsondefines install/build commands, thenextjsframework target, and regionhkg1.Dockerfile,Dockerfile.runtime, andnixpacks.tomldefine container build and runtime packaging.scripts/generate-n8n-context.mjsgeneratesdocs/integrations/n8n/CONTEXT.generated.mdand the GSD mirror.planning/codebase/N8N-CONTEXT.md.
Platform Requirements
Development:
- Node.js 22-compatible runtime and
pnpmare required to runpackage.jsonscripts. - PostgreSQL is required because
prisma/schema.prismauses thepostgresqlprovider. - Prisma client generation is part of the build path in
vercel.json,Dockerfile, andnixpacks.toml. - The n8n context refresh flow requires
pnpm n8n:context, which runsscripts/generate-n8n-context.mjs.
Production:
- Vercel is a first-class deployment target via
vercel.jsonand the telemetry components insrc/app/VercelMetrics.tsx. - Container deployment is also supported through
Dockerfile,Dockerfile.runtime, andnixpacks.toml. - Production data storage is PostgreSQL via Prisma, with a
vectorcolumn inprisma/schema.prismaused by semantic-search-related workflows documented underdocs/integrations/n8n/. - Standalone Next.js output is expected by
Dockerfile.runtime, which boots.next/standalone/server.js.
Stack analysis: 2026-04-20