Tech Stack Overview
TechCal is built on modern, production-ready technologies chosen for developer experience, performance, and scalability.Core Framework
Next.js 15
Version:^16.1.6 (latest stable)
Key Features Used:
- App Router: File-system based routing with layouts and nested routes
- Server Components: RSC for reduced bundle size and faster initial loads
- Server Actions: Type-safe mutations without API routes
- Streaming: Progressive rendering with Suspense boundaries
- Image Optimization: Automatic WebP/AVIF conversion and lazy loading
package.json
Next.js 15 introduces Turbopack as the default dev server (
--turbo flag) with 5x faster cold starts.React 19
Version:19.2.0
Modern Features:
- Actions and transitions
- Enhanced Suspense and error boundaries
- Improved concurrent rendering
usehook for async data fetching
UI & Styling
Tailwind CSS
Version:^3.4.17
Configuration:
tailwind.config.ts
tailwind-merge: Intelligent class mergingclass-variance-authority: Type-safe component variantstailwindcss-animate: Pre-built animations
Radix UI
Primitives Used:package.json
- Unstyled, accessible components
- WAI-ARIA compliant
- Keyboard navigation built-in
- Composable and flexible
Material-UI (MUI)
Version:^7.3.2
Usage: Lazy-loaded for specific components (DatePicker, complex forms)
Animation Libraries
Framer Motion
Version:
^12.23.26Declarative animations for React components:GSAP
Version:
^3.13.0High-performance scroll animations and timelines.Icons
- Phosphor Icons:
@phosphor-icons/react@^2.1.10- 6,000+ icons - Lucide React:
lucide-react@^0.563.0- Open-source icon library
Backend & Database
Supabase
Client Version:@supabase/supabase-js@^2.50.2
Features Used:
- PostgreSQL: Relational database with full SQL support
- Authentication: JWT-based auth with multiple providers
- Row Level Security: Postgres policies for data access control
- Storage: File uploads with CDN delivery
- Real-time: WebSocket subscriptions to table changes
Type Generation
Type Generation
Supabase types are auto-generated from the database schema:This ensures compile-time type safety for all database operations.
Caching & Performance
Vercel KV (@vercel/kv@^3.0.0):
- Redis-compatible key-value store
- Career impact score caching (1 hour TTL)
- Session storage
src/services/careerImpactEnrichmentService.ts:91-93
@upstash/ratelimit@^2.0.6):
- Sliding window rate limiting
- Protects API routes from abuse
- Graceful fallbacks
State Management
TanStack Query
Version:@tanstack/react-query@^5.83.0
Usage Pattern:
- Automatic background refetching
- Optimistic updates
- Request deduplication
- Infinite scroll support
- SSR hydration
@tanstack/react-query-devtools@^5.83.0 (dev only)
React Context
Used for cross-cutting concerns:AuthContext: User session and profileCalendarContext: Calendar view state and date navigationSnackbarContext: Toast notifications
Form Handling
React Hook Form (react-hook-form@^7.62.0):
- Uncontrolled forms for performance
- Built-in validation
- TypeScript integration
zod@^3.25.76):
- Runtime type validation
- Schema validation for forms and API responses
Calendar & Date Management
FullCalendar
Core:@fullcalendar/core@^6.1.19
Plugins:
@fullcalendar/daygrid: Month and week views@fullcalendar/timegrid: Time-based views@fullcalendar/list: List view@fullcalendar/interaction: Drag and drop
src/app/calendar/CalendarClientView.tsx
Date-fns
Version:^4.1.0 + date-fns-tz@^3.2.0
Rich Text Editing
Tiptap
Core:@tiptap/react@^3.19.0 + @tiptap/starter-kit@^3.19.0
Extensions:
- Code blocks with syntax highlighting (
@tiptap/extension-code-block-lowlight) - Tables (
@tiptap/extension-table) - Images (
@tiptap/extension-image) - Links (
@tiptap/extension-link) - YouTube embeds (
@tiptap/extension-youtube)
Data Fetching & APIs
RSS Parser (rss-parser@^3.13.0):
node-ical@^0.22.1):
googleapis@^164.1.0):
- Calendar integration
- OAuth flows
Monitoring & Analytics
Sentry
Version:@sentry/nextjs@^10.0.0
Configuration:
sentry.client.config.ts
PostHog
Version:posthog-js@^1.335.2 + posthog-node@^5.24.2
- Product analytics
- Feature flags
- Session recording
- A/B testing
Testing & Quality
Vitest
Version:^3.2.4
package.json
@vitejs/plugin-react: React support@vitest/coverage-v8: Coverage reporting
Playwright
Version:^1.54.2
playwright.config.ts
ESLint
Version:^9 (latest)
package.json
Build & Deployment
TypeScript:^5 (strict mode enabled)
Bundle Analysis: @next/bundle-analyzer@^16.1.1
tsx@^4.20.6 for running TypeScript scripts directly
package.json
Utilities
UUID
uuid@^13.0.0 - RFC4122 UUID generationSanitize HTML
sanitize-html@^2.17.1 - XSS protection for user contentP-Limit
p-limit@^7.2.0 - Concurrency control for async operationsColor Utilities
color2k@^2.0.3 - Color manipulation and conversionEnvironment Requirements
Node.js:
>=20.9.0 (LTS)Enforced in package.json:Production Dependencies Size
Optimized bundle size through:- Tree-shaking with ES modules
- Dynamic imports for heavy libraries
- Code splitting by route
- Lazy-loading of non-critical components
- First Load JS: < 100 KB
- Total Bundle Size: < 500 KB (gzipped)
- Lighthouse Score: > 90
Next Steps
System Overview
Understand how all the pieces fit together
Data Model
Explore database schema and relationships