15 KiB
Codebase Structure
Analysis Date: 2026-02-24
Directory Layout
cim_summary/
├── backend/ # Express.js + TypeScript backend (Node.js)
│ ├── src/
│ │ ├── index.ts # Express app + Firebase Functions exports
│ │ ├── controllers/ # Request handlers
│ │ ├── models/ # Database access + schema
│ │ ├── services/ # Business logic + external integrations
│ │ ├── routes/ # Express route definitions
│ │ ├── middleware/ # Express middleware (auth, validation, error)
│ │ ├── config/ # Configuration (env, firebase, supabase)
│ │ ├── utils/ # Utilities (logger, validation, parsing)
│ │ ├── types/ # TypeScript type definitions
│ │ ├── scripts/ # One-off CLI scripts (diagnostics, setup)
│ │ ├── assets/ # Static assets (HTML templates)
│ │ └── __tests__/ # Test suites (unit, integration, acceptance)
│ ├── package.json # Node dependencies
│ ├── tsconfig.json # TypeScript config
│ ├── .eslintrc.json # ESLint config
│ └── dist/ # Compiled JavaScript (generated)
│
├── frontend/ # React + Vite + TypeScript frontend
│ ├── src/
│ │ ├── main.tsx # React entry point
│ │ ├── App.tsx # Root component with routing
│ │ ├── components/ # React components (UI)
│ │ ├── services/ # API clients (documentService, authService)
│ │ ├── contexts/ # React Context (AuthContext)
│ │ ├── config/ # Configuration (env, firebase)
│ │ ├── types/ # TypeScript interfaces
│ │ ├── utils/ # Utilities (validation, cn, auth debug)
│ │ └── assets/ # Static images and icons
│ ├── package.json # Node dependencies
│ ├── tsconfig.json # TypeScript config
│ ├── vite.config.ts # Vite bundler config
│ ├── eslintrc.json # ESLint config
│ ├── tailwind.config.js # Tailwind CSS config
│ ├── postcss.config.js # PostCSS config
│ └── dist/ # Built static assets (generated)
│
├── .planning/ # GSD planning directory
│ └── codebase/ # Codebase analysis documents
│
├── package.json # Monorepo root package (if used)
├── .git/ # Git repository
├── .gitignore # Git ignore rules
├── .cursorrules # Cursor IDE configuration
├── README.md # Project overview
├── CONFIGURATION_GUIDE.md # Setup instructions
├── CODEBASE_ARCHITECTURE_SUMMARY.md # Existing architecture notes
└── [PDF documents] # Sample CIM documents for testing
Directory Purposes
backend/src/:
- Purpose: All backend server code
- Contains: TypeScript source files
- Key files:
index.ts(main app), routes, controllers, services, models
backend/src/controllers/:
- Purpose: HTTP request handlers
- Contains:
documentController.ts,authController.ts - Functions: Map HTTP requests to service calls, handle validation, construct responses
backend/src/services/:
- Purpose: Business logic and external integrations
- Contains: Document processing, LLM integration, file storage, database, job queue
- Key files:
unifiedDocumentProcessor.ts- Orchestrator, strategy selectionsinglePassProcessor.ts- 2-LLM extraction (current default)optimizedAgenticRAGProcessor.ts- Advanced agentic processing (stub)documentAiProcessor.ts- Google Document AI OCRllmService.ts- LLM API calls (Anthropic/OpenAI/OpenRouter)jobQueueService.ts- Async job queue (in-memory, EventEmitter)jobProcessorService.ts- Dequeue and execute jobsfileStorageService.ts- GCS signed URLs and uploadvectorDatabaseService.ts- Supabase pgvector operationspdfGenerationService.ts- Puppeteer PDF renderinguploadProgressService.ts- Track upload statusuploadMonitoringService.ts- Monitor processing progressllmSchemas.ts- Zod schemas for LLM extraction (CIMReview, financial data)
backend/src/models/:
- Purpose: Database access layer and schema definitions
- Contains: Document, User, ProcessingJob, Feedback models
- Key files:
types.ts- TypeScript interfaces (Document, ProcessingJob, ProcessingStatus)DocumentModel.ts- Document CRUD with retry logicProcessingJobModel.ts- Job tracking in databaseUserModel.ts- User managementVectorDatabaseModel.ts- Vector embedding queriesmigrate.ts- Database migrationsseed.ts- Test data seedingmigrations/- SQL migration files
backend/src/routes/:
- Purpose: Express route definitions
- Contains: Route handlers and middleware bindings
- Key files:
documents.ts- GET/POST/PUT/DELETE document endpointsvector.ts- Vector search endpointsmonitoring.ts- Health and status endpointsdocumentAudit.ts- Audit log endpoints
backend/src/middleware/:
- Purpose: Express middleware for cross-cutting concerns
- Contains: Authentication, validation, error handling
- Key files:
firebaseAuth.ts- Firebase ID token verificationerrorHandler.ts- Global error handling + correlation IDnotFoundHandler.ts- 404 handlervalidation.ts- Request validation (UUID, pagination)
backend/src/config/:
- Purpose: Configuration and initialization
- Contains: Environment setup, service initialization
- Key files:
env.ts- Environment variable validation (Joi schema)firebase.ts- Firebase Admin SDK initializationsupabase.ts- Supabase client and pool setupdatabase.ts- PostgreSQL connection (legacy)errorConfig.ts- Error handling config
backend/src/utils/:
- Purpose: Shared utility functions
- Contains: Logging, validation, parsing
- Key files:
logger.ts- Winston logger setup (console + file transports)validation.ts- UUID and pagination validatorsgoogleServiceAccount.ts- Google Cloud credentials resolutionfinancialExtractor.ts- Financial data parsing (deprecated for single-pass)templateParser.ts- CIM template utilitiesauth.ts- Authentication helpers
backend/src/scripts/:
- Purpose: One-off CLI scripts for diagnostics and setup
- Contains: Database setup, testing, monitoring
- Key files:
setup-database.ts- Initialize database schemamonitor-document-processing.ts- Watch job queue statuscheck-current-job.ts- Debug stuck jobstest-full-llm-pipeline.ts- End-to-end testingcomprehensive-diagnostic.ts- System health check
backend/src/tests/:
- Purpose: Test suites
- Contains: Unit, integration, acceptance tests
- Subdirectories:
unit/- Isolated component testsintegration/- Multi-component testsacceptance/- End-to-end flow testsmocks/- Mock data and fixturesutils/- Test utilities
frontend/src/:
- Purpose: All frontend code
- Contains: React components, services, types
frontend/src/components/:
- Purpose: React UI components
- Contains: Page components, reusable widgets
- Key files:
DocumentUpload.tsx- File upload UI with drag-and-dropDocumentList.tsx- List of processed documentsDocumentViewer.tsx- View and edit extracted dataProcessingProgress.tsx- Real-time processing statusUploadMonitoringDashboard.tsx- Admin view of active jobsLoginForm.tsx- Firebase auth login UIProtectedRoute.tsx- Route guard for authenticated pagesAnalytics.tsx- Document analytics and statisticsCIMReviewTemplate.tsx- Display extracted CIM review data
frontend/src/services/:
- Purpose: API clients and external service integration
- Contains: HTTP clients for backend
- Key files:
documentService.ts- Document API calls (upload, list, process, status)authService.ts- Firebase authentication (login, logout, token)adminService.ts- Admin-only operations
frontend/src/contexts/:
- Purpose: React Context for global state
- Contains: AuthContext for user and authentication state
- Key files:
AuthContext.tsx- User, token, login/logout state
frontend/src/config/:
- Purpose: Configuration
- Contains: Environment variables, Firebase setup
- Key files:
env.ts- VITE_API_BASE_URL and other env varsfirebase.ts- Firebase client initialization
frontend/src/types/:
- Purpose: TypeScript interfaces
- Contains: API response types, component props
- Key files:
auth.ts- User, LoginCredentials, AuthContextType
frontend/src/utils/:
- Purpose: Shared utility functions
- Contains: Validation, CSS utilities
- Key files:
validation.ts- Email, password validatorscn.ts- Classname merger (clsx wrapper)authDebug.ts- Authentication debugging helpers
Key File Locations
Entry Points:
backend/src/index.ts- Main Express app and Firebase Functions exportsfrontend/src/main.tsx- React entry pointfrontend/src/App.tsx- Root component with routing
Configuration:
backend/src/config/env.ts- Environment variable schema and validationbackend/src/config/firebase.ts- Firebase Admin SDK setupbackend/src/config/supabase.ts- Supabase client and connection poolfrontend/src/config/firebase.ts- Firebase client configurationfrontend/src/config/env.ts- Frontend environment variables
Core Logic:
backend/src/services/unifiedDocumentProcessor.ts- Main document processing orchestratorbackend/src/services/singlePassProcessor.ts- Single-pass 2-LLM strategybackend/src/services/llmService.ts- LLM API integration with retrybackend/src/services/jobQueueService.ts- Background job queuebackend/src/services/vectorDatabaseService.ts- Vector search implementation
Testing:
backend/src/__tests__/unit/- Unit testsbackend/src/__tests__/integration/- Integration testsbackend/src/__tests__/acceptance/- End-to-end tests
Database:
backend/src/models/types.ts- TypeScript type definitionsbackend/src/models/DocumentModel.ts- Document CRUD operationsbackend/src/models/ProcessingJobModel.ts- Job trackingbackend/src/models/migrations/- SQL migration files
Middleware:
backend/src/middleware/firebaseAuth.ts- JWT authenticationbackend/src/middleware/errorHandler.ts- Global error handlingbackend/src/middleware/validation.ts- Input validation
Logging:
backend/src/utils/logger.ts- Winston logger configuration
Naming Conventions
Files:
- Controllers:
{resource}Controller.ts(e.g.,documentController.ts) - Services:
{service}Service.tsor descriptive (e.g.,llmService.ts,singlePassProcessor.ts) - Models:
{Entity}Model.ts(e.g.,DocumentModel.ts) - Routes:
{resource}.ts(e.g.,documents.ts) - Middleware:
{purpose}Handler.tsor{purpose}.ts(e.g.,firebaseAuth.ts) - Types/Interfaces:
types.tsor{name}Types.ts - Tests:
{file}.test.tsor{file}.spec.ts
Directories:
- Plurals for collections:
services/,models/,utils/,routes/,controllers/ - Singular for specific features:
config/,middleware/,types/,contexts/ - Nested by feature in larger directories:
__tests__/unit/,models/migrations/
Functions/Variables:
- Camel case:
processDocument(),getUserId(),documentId - Constants: UPPER_SNAKE_CASE:
MAX_RETRIES,TIMEOUT_MS - Private methods: Prefix with
_or use TypeScriptprivate:_retryOperation()
Classes:
- Pascal case:
DocumentModel,JobQueueService,SinglePassProcessor - Service instances exported as singletons:
export const llmService = new LLMService()
React Components:
- Pascal case:
DocumentUpload.tsx,ProtectedRoute.tsx - Hooks:
use{Feature}(e.g.,useAuthfrom AuthContext)
Where to Add New Code
New Document Processing Strategy:
- Primary code:
backend/src/services/{strategyName}Processor.ts - Schema: Add types to
backend/src/services/llmSchemas.ts - Integration: Register in
backend/src/services/unifiedDocumentProcessor.ts - Tests:
backend/src/__tests__/integration/{strategyName}.test.ts
New API Endpoint:
- Route:
backend/src/routes/{resource}.ts - Controller:
backend/src/controllers/{resource}Controller.ts - Service:
backend/src/services/{resource}Service.ts(if needed) - Model:
backend/src/models/{Resource}Model.ts(if database access) - Tests:
backend/src/__tests__/integration/{endpoint}.test.ts
New React Component:
- Component:
frontend/src/components/{ComponentName}.tsx - Types: Add to
frontend/src/types/or inline in component - Services: Use existing
frontend/src/services/documentService.ts - Tests:
frontend/src/__tests__/{ComponentName}.test.tsx(if added)
Shared Utilities:
- Backend:
backend/src/utils/{utility}.ts - Frontend:
frontend/src/utils/{utility}.ts - Avoid code duplication - consider extracting common patterns
Database Schema Changes:
- Migration file:
backend/src/models/migrations/{timestamp}_{description}.sql - TypeScript interface: Update
backend/src/models/types.ts - Model methods: Update corresponding
*Model.tsfile - Run:
npm run db:migratein backend
Configuration Changes:
- Environment: Update
backend/src/config/env.ts(Joi schema) - Frontend env: Update
frontend/src/config/env.ts - Firebase secrets: Use
firebase functions:secrets:set VAR_NAME - Local dev: Add to
.envfile (gitignored)
Special Directories
backend/src/tests/mocks/:
- Purpose: Mock data and fixtures for testing
- Generated: No (manually maintained)
- Committed: Yes
- Usage: Import in tests for consistent test data
backend/src/scripts/:
- Purpose: One-off CLI utilities for development and operations
- Generated: No (manually maintained)
- Committed: Yes
- Execution:
ts-node src/scripts/{script}.tsornpm run {script}
backend/src/assets/:
- Purpose: Static HTML templates for PDF generation
- Generated: No (manually maintained)
- Committed: Yes
- Usage: Rendered by Puppeteer in
pdfGenerationService.ts
backend/src/models/migrations/:
- Purpose: Database schema migration SQL files
- Generated: No (manually created)
- Committed: Yes
- Execution: Run via
npm run db:migrate
frontend/src/assets/:
- Purpose: Images, icons, logos
- Generated: No (manually added)
- Committed: Yes
- Usage: Import in components (e.g.,
bluepoint-logo.png)
backend/dist/ and frontend/dist/:
- Purpose: Compiled JavaScript and optimized bundles
- Generated: Yes (build output)
- Committed: No (gitignored)
- Regeneration:
npm run buildin respective directory
backend/node_modules/ and frontend/node_modules/:
- Purpose: Installed dependencies
- Generated: Yes (npm install)
- Committed: No (gitignored)
- Regeneration:
npm install
backend/logs/:
- Purpose: Runtime log files
- Generated: Yes (runtime)
- Committed: No (gitignored)
- Contents:
error.log,upload.log, combined logs
Structure analysis: 2026-02-24