6.4 KiB
6.4 KiB
Technology Stack
Analysis Date: 2026-04-18
Languages
Primary:
- TypeScript 5.x - Application code, API routes, hooks, Prisma access, and most tooling live in
src/**/*.ts,src/**/*.tsx,prisma/seed.ts,tailwind.config.ts, andvitest.config.ts; the compiler is declared inpackage.json.
Secondary:
- JavaScript - Next.js and PostCSS config live in
next.config.jsandpostcss.config.mjs. - CSS - Global styling and external font/icon imports live in
src/app/globals.css. - JSON - Locale message catalogs live in
src/messages/en.jsonandsrc/messages/zh.json; repo config also uses.eslintrc.jsonand.prettierrc.json. - Prisma schema DSL - Database schema and datasource definitions live in
prisma/schema.prisma.
Runtime
Environment:
- Node.js - Repo runtime is Node-based because scripts use
next,vitest,prisma, andts-nodefrompackage.json. - Version pinning: Not detected in repo. No
.nvmrc,.node-version, or.tool-versionsfile is present. - Local tool version observed in this workspace: Node.js
v22.21.1.
Package Manager:
pnpm- Project commands, lockfile, and Vercel install/build configuration usepnpminpackage.json,pnpm-lock.yaml, andvercel.json.- Local tool version observed in this workspace:
pnpm 10.27.0. - Lockfile: present in
pnpm-lock.yaml.
Frameworks
Core:
- Next.js
15.1.11- App Router web framework for pages, layouts, metadata, and route handlers insrc/app/**/*; version declared inpackage.json. - React
19.0.0andreact-dom19.0.0- UI runtime for components insrc/components/**/*and route segments insrc/app/**/*; versions declared inpackage.json. next-intl4.0.2- Locale routing and message loading vianext.config.js,src/middleware.ts,src/i18n/request.ts, andsrc/app/[locale]/layout.tsx.- Prisma
6.1.0/@prisma/client6.1.0- ORM and generated client used insrc/lib/prisma.ts,src/hooks/useProjects.ts,src/app/api/**/*,prisma/schema.prisma, andprisma/seed.ts. - Zod
3.24.1- Request and payload validation insrc/lib/validations.tsand multiple route handlers undersrc/app/api/**/*.
Testing:
- Vitest
2.1.8- Unit-style test runner configured invitest.config.tsand used by files such assrc/lib/auth.test.tsandsrc/app/api/tags/route.test.ts.
Build/Dev:
- Tailwind CSS
3.4.17- Utility-first styling configured intailwind.config.tsand consumed bysrc/app/globals.cssand component classes acrosssrc/components/**/*. - PostCSS
8.xwithautoprefixer10.4.20- CSS processing configured inpostcss.config.mjs. - ESLint
9.xwitheslint-config-next15.1.11andeslint-config-prettier9.1.0- Linting configured in.eslintrc.json. - Prettier
3.4.2- Formatting configured in.prettierrc.json. ts-node10.9.2- TypeScript execution for seeding via theprisma.seedcommand inpackage.json.tailwindcss-animate1.0.7- Tailwind plugin loaded intailwind.config.ts.
Key Dependencies
Critical:
next15.1.11- Main application framework; routes, layouts, metadata, and route handlers all depend on files undersrc/app/**/*.react19.0.0/react-dom19.0.0- Required by all React components insrc/components/**/*and page/layout files insrc/app/**/*.@prisma/client6.1.0- Database access layer instantiated insrc/lib/prisma.tsand used heavily insrc/hooks/useProjects.ts,src/app/api/projects/route.ts,src/app/api/signals/route.ts, and related files.prisma6.1.0- Schema and migration tool backingprisma/schema.prismaandprisma/migrations/*/migration.sql.next-intl4.0.2- Locale middleware and message loading depend onsrc/middleware.ts,src/i18n/request.ts, andsrc/messages/*.json.zod3.24.1- Input validation for search, tag maintenance, and webhook payloads insrc/app/api/search/ai/route.ts,src/app/api/tags/maintenance/route.ts, andsrc/app/api/webhook/signals/route.ts.
Infrastructure:
@vercel/analytics1.6.1and@vercel/speed-insights1.3.1- Vercel client telemetry mounted insrc/app/VercelMetrics.tsxand conditionally included insrc/app/layout.tsx.react-markdown10.1.0,remark-gfm4.0.1, andrehype-sanitize6.0.0- Markdown rendering stack used bysrc/components/project/MarkdownContent.tsx.lucide-react0.468.0- Icon set optimized throughexperimental.optimizePackageImportsinnext.config.js.
Configuration
Environment:
- Template env vars are documented in
.env.example. - Real runtime env files exist as
.envand.env.local; contents were not read. - Code-level env usage is limited to:
DATABASE_URLinprisma/schema.prismaWEBHOOK_API_KEYinsrc/lib/auth.tsN8N_AI_SEARCH_WEBHOOKinsrc/app/api/search/ai/route.tsNEXT_PUBLIC_SITE_URLinsrc/app/robots.tsandsrc/app/sitemap.tsVERCEL_ENVinsrc/app/layout.tsx
.env.examplealso declaresNEXT_INTL_DEFAULT_LOCALEandNEXT_INTL_SUPPORTED_LOCALES, but locale handling in current code is hard-coded insrc/i18n/request.tsandsrc/middleware.ts.
Build:
next.config.jswiresnext-intl, remote image hosts, andoptimizePackageImports.tsconfig.jsonenables strict TypeScript,noUncheckedIndexedAccess,noImplicitReturns, and the@/*path alias.tailwind.config.tsandpostcss.config.mjsdefine the styling pipeline.vercel.jsondefines deployment-time build/install commands, Next.js framework selection, regionhkg1, and disables Git-triggered deployments.package.jsonscripts exposedev,build,start,lint,test, and Prisma seeding.
Platform Requirements
Development:
- Node.js and
pnpmare required to runpackage.jsonscripts. - PostgreSQL is required because
prisma/schema.prismauses thepostgresqlprovider andDATABASE_URL. - Prisma client generation is required before production builds;
vercel.jsonexplicitly runspnpm prisma generate && pnpm build.
Production:
- Vercel is the explicit deployment target indicated by
vercel.jsonand the Vercel-specific telemetry components insrc/app/VercelMetrics.tsx. - The app expects Vercel environment semantics for telemetry gating via
process.env.VERCEL_ENVinsrc/app/layout.tsx. - Server runtime storage is PostgreSQL via Prisma; no alternate production datastore is configured in repo.
Stack analysis: 2026-04-18