Server Configuration
The backend server uses a singletsconfig.json optimized for Node.js with ES2022 modules.
Server tsconfig.json
Location:source/Server/tsconfig.json
Server Compiler Options
Compilation target - ES2022 provides modern JavaScript features while maintaining broad Node.js compatibility
Module system - ES2022 enables native ESM support in Node.js
Module resolution strategy - “bundler” mode optimized for modern bundlers and runtimes like tsx
Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports
Allow importing JSON files as modules
Output directory for compiled JavaScript files
Enable all strict type-checking options (noImplicitAny, strictNullChecks, etc.)
Skip type checking of declaration files - improves compilation performance
Allow emitting compiled files - set to false so
tsc can build the projectAllow importing TypeScript files with
.ts extensionsBase directory for resolving non-relative module names
Path mapping for module resolution. The
@/* alias maps to ./src/* for cleaner importsFrontend Configuration
The React frontend uses a composite TypeScript project with three configuration files for different contexts.Frontend tsconfig.json (Root)
Location:source/frontend/tsconfig.json
tsconfig.app.json- Application source codetsconfig.node.json- Build tooling (Vite config)
TypeScript project references enable composite projects with separate compilation contexts
Frontend tsconfig.app.json
Location:source/frontend/tsconfig.app.json
Configuration for React application code:
Application Compiler Options
Location for incremental compilation cache file
Target ES2022 for modern browser features
Use ECMAScript-standard semantics for class fields (required for React 19)
Type definitions to include - ES2022 for language features, DOM for browser APIs
Use latest ES module features
Include Vite’s client type definitions for import.meta.env, etc.
Bundler mode - optimized for Vite’s module resolution
Emit exactly what you write for imports/exports (prevents type-only import issues)
Force all files to be treated as modules (even without imports/exports)
Don’t emit files - Vite handles bundling
Use React 17+ automatic JSX runtime (no need to import React)
Report errors on unused local variables
Report errors on unused function parameters
Ensure only type-erasable syntax is used (important for bundler transpilation)
Report errors for fallthrough cases in switch statements
Warn when importing modules that might have side effects
Frontend tsconfig.node.json
Location:source/frontend/tsconfig.node.json
Configuration for build tooling (Vite config files):
Newer ES2023 target since build tools run in Node.js environment
Only ES2023 library (no DOM APIs needed for build tools)
Include Node.js type definitions for build tooling
Only type-check Vite configuration files
Path Aliases
All configurations include the@/* path alias for cleaner imports:
The
@/* alias is configured in both TypeScript and Vite to ensure consistent resolution at compile-time and runtime.Project References Benefits
The composite project structure provides:- Separation of concerns - App code and build tools have different type requirements
- Faster compilation - Only rebuild changed projects
- Better editor performance - Separate contexts reduce type-checking overhead
- Parallel builds - TypeScript can build referenced projects concurrently