mirror of
https://github.com/kjanat/livedash-node.git
synced 2026-01-16 10:12:09 +01:00
- Document new batch processing architecture and libraries - Add batch scheduler to scheduler system documentation - Document 50% AI cost reduction with OpenAI Batch API - Add comprehensive security features documentation - Document rate limiting configuration for all auth endpoints - Add input validation and session security details
6.4 KiB
6.4 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Development Commands
Core Development:
pnpm dev- Start development server (runs custom server.ts with schedulers)pnpm dev:next-only- Start Next.js only with Turbopack (no schedulers)pnpm build- Build production applicationpnpm start- Run production server
Code Quality:
pnpm lint- Run ESLintpnpm lint:fix- Fix ESLint issues automaticallypnpm format- Format code with Prettierpnpm format:check- Check formatting without fixing
Database:
pnpm prisma:generate- Generate Prisma clientpnpm prisma:migrate- Run database migrationspnpm prisma:push- Push schema changes to databasepnpm prisma:push:force- Force reset database and push schemapnpm prisma:seed- Seed database with initial datapnpm prisma:studio- Open Prisma Studio database viewer
Testing:
pnpm test- Run both Vitest and Playwright tests concurrentlypnpm test:vitest- Run Vitest tests onlypnpm test:vitest:watch- Run Vitest in watch modepnpm test:vitest:coverage- Run Vitest with coverage reportpnpm test:coverage- Run all tests with coverage
Markdown:
pnpm lint:md- Lint Markdown filespnpm lint:md:fix- Fix Markdown linting issues
Architecture Overview
LiveDash-Node is a real-time analytics dashboard for monitoring user sessions with AI-powered analysis and processing pipeline.
Tech Stack
- Frontend: Next.js 15 + React 19 + TailwindCSS 4
- Backend: Next.js API Routes + Custom Node.js server
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js
- AI Processing: OpenAI API integration
- Visualization: D3.js, React Leaflet, Recharts
- Scheduling: Node-cron for background processing
Key Architecture Components
1. Multi-Stage Processing Pipeline
The system processes user sessions through distinct stages tracked in SessionProcessingStatus:
CSV_IMPORT- Import raw CSV data intoSessionImportTRANSCRIPT_FETCH- Fetch transcript content from URLsSESSION_CREATION- Create normalizedSessionandMessagerecordsAI_ANALYSIS- AI processing for sentiment, categorization, summariesQUESTION_EXTRACTION- Extract questions from conversations
2. Database Architecture
- Multi-tenant design with
Companyas root entity - Dual storage pattern: Raw CSV data in
SessionImport, processed data inSession - 1-to-1 relationship between
SessionImportandSessionviaimportId - Message parsing into individual
Messagerecords with order tracking - AI cost tracking via
AIProcessingRequestwith detailed token usage - Flexible AI model management through
AIModel,AIModelPricing, andCompanyAIModel
3. Custom Server Architecture
server.ts- Custom Next.js server with configurable scheduler initialization- Three main schedulers: CSV import, import processing, and session processing
- Environment-based configuration via
lib/env.ts
4. Key Processing Libraries
lib/scheduler.ts- CSV import schedulinglib/importProcessor.ts- Raw data to Session conversionlib/processingScheduler.ts- AI analysis pipelinelib/transcriptFetcher.ts- External transcript fetchinglib/transcriptParser.ts- Message parsing from transcriptslib/batchProcessor.ts- OpenAI Batch API integration for cost-efficient processinglib/batchScheduler.ts- Automated batch job lifecycle managementlib/rateLimiter.ts- In-memory rate limiting utility for API endpoints
Development Environment
Environment Configuration:
Environment variables are managed through lib/env.ts with .env.local file support:
- Database: PostgreSQL via
DATABASE_URLandDATABASE_URL_DIRECT - Authentication:
NEXTAUTH_SECRET,NEXTAUTH_URL - AI Processing:
OPENAI_API_KEY - Schedulers:
SCHEDULER_ENABLED, various interval configurations
Key Files to Understand:
prisma/schema.prisma- Complete database schema with enums and relationshipsserver.ts- Custom server entry pointlib/env.ts- Environment variable management and validationapp/- Next.js App Router structure
Testing:
- Uses Vitest for unit testing
- Playwright for E2E testing
- Test files in
tests/directory
Important Notes
Scheduler System:
- Schedulers are optional and controlled by
SCHEDULER_ENABLEDenvironment variable - Use
pnpm dev:next-onlyto run without schedulers for pure frontend development - Four separate schedulers handle different pipeline stages:
- CSV Import Scheduler (
lib/scheduler.ts) - Import Processing Scheduler (
lib/importProcessor.ts) - Session Processing Scheduler (
lib/processingScheduler.ts) - Batch Processing Scheduler (
lib/batchScheduler.ts) - Manages OpenAI Batch API lifecycle
- CSV Import Scheduler (
Database Migrations:
- Always run
pnpm prisma:generateafter schema changes - Use
pnpm prisma:migratefor production-ready migrations - Use
pnpm prisma:pushfor development schema changes - Database uses PostgreSQL with Prisma's driver adapter for connection pooling
AI Processing:
- All AI requests are tracked for cost analysis
- Support for multiple AI models per company
- Time-based pricing management for accurate cost calculation
- Processing stages can be retried on failure with retry count tracking
- Batch API Integration: 50% cost reduction using OpenAI Batch API
- Automatic batching of AI requests every 5 minutes
- Batch status checking every 2 minutes
- Result processing every minute
- Failed request retry with individual API calls
Code Quality Standards:
- Run
pnpm lintandpnpm format:checkbefore committing - TypeScript with ES modules (type: "module" in package.json)
- React 19 with Next.js 15 App Router
- TailwindCSS 4 for styling
Security Features:
- Rate Limiting: In-memory rate limiting for all authentication endpoints
- Login: 5 attempts per 15 minutes
- Registration: 3 attempts per hour
- Password Reset: 5 attempts per 15 minutes
- Input Validation: Comprehensive Zod schemas for all user inputs
- Strong password requirements (12+ chars, uppercase, lowercase, numbers, special chars)
- Email normalization and validation
- XSS and SQL injection prevention
- Session Security:
- JWT tokens with 24-hour expiration
- HttpOnly, Secure, SameSite cookies
- Company status verification on login