Skip to content

Tech Stack

harshcode1 edited this page Jun 20, 2026 · 1 revision

Tech Stack

Every significant dependency and the reasoning behind it.

Core framework

Package Version Why
next 14.2.x App Router, Route Handlers, streaming, image optimization — one framework for UI + API
react / react-dom 18 Concurrent features, Suspense

UI & styling

Package Why
tailwindcss 3 Utility-first styling; the project extends the theme with a custom design-token system (brand/mint/calm/ink color scales, soft shadows, therapeutic animation timings) — see Design-System
framer-motion 12 Page/element transitions, AnimatePresence, and a shared-layout (layoutId) animated nav indicator
lucide-react Consistent, lightweight icon set
clsx / tailwind-merge Conditional class composition without specificity bugs

Data visualization

Package Why
recharts 3 Declarative charts (area, line, bar, scatter). Used for mood trends, assessment trends, activity-impact, and a mood↔severity correlation scatter with a Pearson coefficient

Database

Package Why
mongodb 6 Official driver, accessed via a cached clientPromise so hot-reload in dev doesn't open a new connection per request
mongoose Available for schema modeling

Authentication & security

Package Why
jsonwebtoken Signs/verifies the session JWT stored in an httpOnly cookie
bcryptjs Password hashing
otplib 13 TOTP two-factor authentication (authenticator-app codes)
qrcode Renders the TOTP provisioning QR during 2FA setup
js-cookie Minimal client-side cookie reads
jose JWT utilities usable in edge contexts

Note on otplib 13: the v13 API requires explicit crypto plugins. twoFactorAuth.js wires up the Noble crypto + Scure base32 plugins so TOTP works in the Node runtime.

AI & integrations

Package Why
openai 4 AI chat companion using gpt-4o-mini. The system prompt injects the user's recent mood + latest assessment scores for personalized, safety-aware replies; a keyword fallback runs if no API key is configured
googleapis Google Calendar OAuth + event creation, so booked appointments appear on the doctor's calendar

Tooling

Package Why
eslint + eslint-config-next Linting aligned with Next.js best practices
postcss + autoprefixer Tailwind's build pipeline

Notable removals during the codebase audit

  • next-auth — installed but never used. Removed to avoid running two parallel auth systems alongside the custom JWT layer.

Related

Clone this wiki locally