Overview
i18n Doctor is built with modern, production-ready technologies emphasizing developer experience, performance, and scalability. This page provides a comprehensive breakdown of every layer in the stack.Frontend Stack
Next.js 15
Next.js 15.5.9
The React framework for production, providing server-side rendering, static site generation, and API routes.
- App Router: File-system based routing with React Server Components
- Server Components: Default server-side rendering for optimal performance
- Client Components: Interactive UI with
'use client'directive - API Routes: Backend endpoints in
app/api/ - Turbopack: Next-generation bundler for dev and production builds
- Parallel Routes: Advanced routing patterns for layouts
- Route Groups: Organize routes without affecting URL structure
React 19
Version:19.1.0
The latest version of React with improved concurrent rendering and Server Components support.
New Features Used:
- Server Components by default
- Improved hydration and streaming
- Better type safety with TypeScript
- Enhanced
usehook for async data fetching
Tailwind CSS v4
Version:^4 (latest)
Utility-first CSS framework with significant performance improvements in v4.
Setup:
@tailwindcss/postcss- PostCSS plugin for Tailwind v4
- Faster builds with Rust-based engine
- Smaller CSS output
- Better performance with CSS Modules
- Native CSS variable support
UI Component Libraries
Base UI
Package:@base-ui/react@^1.2.0
Unstyled, accessible UI primitives from the team behind Material UI.
Components Used:
- Buttons
- Dialogs/Modals
- Tooltips
- Dropdowns
- Form controls
Radix UI
Packages:@radix-ui/react-label@^2.1.7@radix-ui/react-slot@^1.2.3@radix-ui/react-tooltip@^1.2.8
Icon Libraries
Packages:@heroicons/react@^2.2.0- Beautiful hand-crafted SVG icons@hugeicons/react@^1.0.5- Large collection of stroke icons@remixicon/react@^4.6.0- Open-source icon systemlucide-react@^0.544.0- Community-maintained icons
Utility Libraries
Class Management:Backend Stack
Next.js API Routes
Serverless API endpoints built into the Next.js framework. Example Route:/api/scan- Repository scanning endpoint/api/report/[id]- Fetch saved reports/api/leaderboard- Benchmark data
Database: PostgreSQL with Drizzle ORM
ORM: Drizzle ORM (TypeScript-first SQL ORM) Database Provider: Supabase (managed PostgreSQL) Environment Variable:- Type-safe queries
- Automatic migrations
- SQL-like syntax
- Excellent TypeScript support
Authentication: better-auth
Package:better-auth
Modern authentication library for Next.js with excellent TypeScript support.
Provider: GitHub OAuth
Features:
- Session management
- GitHub OAuth integration
- User profile management
- Secure token handling
GitHub API Integration
Client Library: Custom implementation usingfetch
API Version: GitHub REST API v3
Implementation:
- Without token: 60 requests/hour
- With token: 5,000 requests/hour
Lingo.dev Integration
Purpose: Automated translation of missing/incomplete locale keys Integration Points:- SDK for runtime translations
- CLI for batch processing
- Compiler for dogfooding (the app is multilingual)
- CI/CD GitHub Action for auto-translation
Build Tools & Development
Package Manager: pnpm
Version:10.4.1 (enforced via packageManager field)
Why pnpm?
- Fast, disk-efficient installs
- Strict dependency resolution
- Built-in workspace support
- Content-addressable storage
Monorepo: Turborepo
Version:^2.5.5
High-performance build system for JavaScript and TypeScript monorepos.
Features:
- Intelligent task caching
- Parallel task execution
- Remote caching (optional)
- Task pipelines with dependencies
Bundler: Turbopack
Next-generation bundler built in Rust, integrated into Next.js 15. Usage:- 10x faster than Webpack
- Incremental compilation
- Out-of-the-box CSS/TypeScript support
- Better error messages
TypeScript
Version:5.9.2
Configuration:
- Strict mode enabled
- Path aliases (
@/components,@/lib) - Shared configs across workspace
Linting & Formatting
ESLint:- Custom flat config in
@workspace/eslint-config - Next.js plugin integration
- Zero warnings policy (
--max-warnings 0)
- Version:
^3.6.2 - Formats TypeScript, TSX, and Markdown
- Consistent code style across workspace
Deployment & Hosting
Vercel
Platform: Vercel (serverless Next.js hosting) Features:- Automatic deployments from GitHub
- Edge Network CDN
- Serverless Functions for API routes
- Preview deployments for PRs
- Web Analytics
Supabase
Services Used:- Database: Managed PostgreSQL with connection pooling
- Auth: GitHub OAuth integration (if configured)
- Storage: Potential future use for report file storage
- Row-Level Security: Secure data access policies
Analytics
Package:@vercel/analytics@^1.6.1
Implementation:
Validation & Type Safety
Zod
Version:^4.1.5
TypeScript-first schema validation library.
Usage:
- API request validation
- Form input validation
- Environment variable validation
- Type inference from schemas
Development Tools
Node.js
Minimum Version: Node.js >= 20 Specified in:tsx
Version:^4.21.0
TypeScript execute - run TypeScript files directly.
Usage:
Git Hooks
Automated tasks on git events (future integration). Potential Tools:- Husky for hook management
- lint-staged for pre-commit linting
Runtime & Node APIs
Key Node.js Modules:fs/promises- File system operationspath- Path manipulationcrypto- Hashing and tokens
- Edge Runtime for lightweight API routes
- Node.js Runtime for complex operations
Font System
Primary Fonts:- Fustat: Sans-serif and heading font
- Geist Mono: Monospace font for code
Complete Dependency List
Production Dependencies
| Package | Version | Purpose |
|---|---|---|
next | 15.5.9 | React framework |
react | 19.1.0 | UI library |
react-dom | 19.1.0 | React DOM rendering |
@base-ui/react | ^1.2.0 | Unstyled UI primitives |
@radix-ui/react-label | ^2.1.7 | Accessible labels |
@radix-ui/react-slot | ^1.2.3 | Slot composition |
@radix-ui/react-tooltip | ^1.2.8 | Tooltips |
@heroicons/react | ^2.2.0 | Icon library |
@hugeicons/react | ^1.0.5 | Icon library |
@remixicon/react | ^4.6.0 | Icon library |
lucide-react | ^0.544.0 | Icon library |
@supabase/ssr | ^0.9.0 | Supabase SSR helpers |
@supabase/supabase-js | ^2.99.0 | Supabase client |
@vercel/analytics | ^1.6.1 | Analytics |
@workspace/ui | workspace:* | Shared UI library |
class-variance-authority | ^0.7.1 | Variant styling |
clsx | ^2.1.1 | Conditional classes |
tailwind-merge | ^3.3.1 | Merge Tailwind classes |
zod | ^4.1.5 | Schema validation |
Development Dependencies
| Package | Version | Purpose |
|---|---|---|
typescript | ^5.9.2 | TypeScript compiler |
@types/node | ^20 | Node.js types |
@types/react | ^19 | React types |
@types/react-dom | ^19 | React DOM types |
tailwindcss | ^4 | CSS framework |
@tailwindcss/postcss | ^4 | PostCSS plugin |
tsx | ^4.21.0 | TS execution |
@workspace/eslint-config | workspace:^ | ESLint config |
@workspace/typescript-config | workspace:* | TS config |
prettier | ^3.6.2 | Code formatter |
turbo | ^2.5.5 | Monorepo tool |
Technology Decisions
Why Next.js 15?
Why Next.js 15?
- App Router with Server Components for optimal performance
- Turbopack for 10x faster builds
- Built-in API routes eliminate need for separate backend
- Excellent TypeScript support
- Seamless Vercel deployment
Why Drizzle ORM over Prisma?
Why Drizzle ORM over Prisma?
- Lighter weight and faster
- SQL-like syntax for developers familiar with SQL
- Better TypeScript inference
- No separate schema language to learn
Why pnpm + Turborepo?
Why pnpm + Turborepo?
- pnpm: Fastest installs, disk efficiency, strict dependencies
- Turborepo: Intelligent caching speeds up monorepo builds
- Together: Optimal monorepo developer experience
Why multiple icon libraries?
Why multiple icon libraries?
- Different icon styles for different use cases
- Heroicons: High-quality UI icons
- Lucide: Developer-friendly stroke icons
- Huge Icons: Extended icon set for specialized needs
Why Tailwind v4?
Why Tailwind v4?
- Significant performance improvements
- Rust-based engine for faster builds
- Smaller CSS output
- Better DX with improved error messages
Performance Characteristics
Build Time
~30-60 seconds for full production build with Turbopack
Dev Server
Hot reload in < 100ms with Turbopack
First Load
< 3s Time to Interactive with Server Components
Bundle Size
~200KB gzipped initial JavaScript bundle
Next Steps
Architecture Overview
Understand the high-level system architecture
Monorepo Structure
Learn about the workspace organization