Skip to main content

Build Configuration Documentation

This document provides comprehensive documentation for all build configuration files in the STO Education Platform.

Vite Configuration

Location: vite.config.ts

Overview

Vite is the primary build tool and development server for the application, providing fast development experience and optimized production builds.

Configuration Details

Import Configuration

Version Plugin

Purpose: Custom plugin for version management and update detection
Features:
  • Injects version information into HTML meta tags
  • Generates version.json file for update detection
  • Creates build hash for cache busting
  • Tracks build time for deployment monitoring

Main Configuration

Configuration Breakdown

Plugins
  • React Plugin: Enables React Fast Refresh and JSX transformation
  • Version Plugin: Custom plugin for version management
Path Resolution
  • Alias: @ maps to ./src directory for clean imports
Global Definitions
  • Version Info: Injects build information into the application
  • Build Time: Timestamp of the build
  • Build Hash: Unique hash for cache busting
ESBuild Configuration
  • Production Mode: Removes console logs and debugger statements
  • Development Mode: Preserves debugging information
Build Optimization
  • Manual Chunks: Splits code into logical chunks for better caching
    • vendor: React and React DOM
    • router: React Router
    • supabase: Supabase client

TypeScript Configuration

Location: tsconfig.json

Root Configuration

Purpose: Project references for different build targets
Structure: Uses project references for modular configuration

Application Configuration: tsconfig.app.json

Configuration Details

Compiler Options
  • Target: ES2020 for modern JavaScript features
  • Module: ESNext for latest module syntax
  • JSX: React JSX transformation
  • Strict Mode: Enables all strict type checking options
Path Mapping
  • Base URL: Current directory
  • Paths: @/* maps to ./src/* for clean imports
Type Checking
  • Strict: Enables strict type checking
  • No Unused Locals: Warns about unused variables
  • No Unused Parameters: Warns about unused function parameters
  • No Fallthrough Cases: Prevents switch statement fallthrough
Module Resolution
  • Bundler: Uses bundler-specific module resolution
  • Allow TS Extensions: Allows importing .ts files
  • Isolated Modules: Treats each file as a separate module

Node Configuration: tsconfig.node.json

Purpose: TypeScript configuration for Node.js build tools
Features:
  • Composite: Enables project references
  • Build Info: Caches build information for faster subsequent builds
  • Strict: Strict type checking for build tools

ESLint Configuration

Location: eslint.config.js

Configuration Overview

Configuration Breakdown

Extends
  • JavaScript Recommended: Standard JavaScript linting rules
  • TypeScript Recommended: TypeScript-specific linting rules
Files
  • Target: TypeScript and TSX files
  • Ignore: Dist directory
Language Options
  • ECMA Version: ES2020
  • Globals: Browser globals
Plugins
  • React Hooks: React Hooks linting rules
  • React Refresh: React Refresh linting rules
Rules
  • React Hooks: Recommended React Hooks rules
  • React Refresh: Only export components rule

PostCSS Configuration

Location: postcss.config.js

Purpose: PostCSS configuration for CSS processing
Plugins:
  • Tailwind CSS: Utility-first CSS framework
  • Autoprefixer: Automatic vendor prefixing

Tailwind CSS Configuration

Location: tailwind.config.js

Configuration Overview

Configuration Details

Content Sources
  • HTML: index.html
  • Source Files: All TypeScript and TSX files in src directory
Theme Extension
  • Colors: Custom primary color palette
  • Fonts: Inter font family configuration
  • Spacing: Custom spacing values
  • Breakpoints: Custom responsive breakpoints
Plugins
  • Empty Array: No additional plugins configured

Vercel Configuration

Location: vercel.json

Deployment Configuration

Configuration Details

Build Configuration
  • Build Command: npm run build
  • Output Directory: dist
  • Framework: Vite
Functions
  • Version API: Node.js 18.x runtime for version endpoint
Headers
  • CORS: Cross-origin resource sharing headers
  • API Routes: Headers for API endpoints
Rewrites
  • API Routes: Rewrites for API endpoints

Environment Configuration

Environment Variables

Required Variables

Variable Prefixes

  • VITE_: Exposed to client-side code
  • Server-side: Used only in Edge Functions

Build Scripts

Development Scripts

Development Server

Purpose: Start development server
Features:
  • Hot module replacement
  • Fast refresh
  • Error overlay
  • Source maps

Production Build

Purpose: Create production build
Features:
  • TypeScript checking disabled for speed
  • Sitemap generation
  • Asset optimization
  • Code splitting

Preview Build

Purpose: Preview production build locally
Features:
  • Production build serving
  • Local testing
  • Performance testing

Sitemap Scripts

Advanced Sitemap

Purpose: Generate comprehensive sitemap
Features:
  • All routes included
  • Metadata generation
  • SEO optimization

Simple Sitemap

Purpose: Generate basic sitemap
Features:
  • Quick generation
  • Basic route listing

Build Optimization

Code Splitting

  • Vendor Chunks: Separate vendor libraries
  • Route Chunks: Route-based code splitting
  • Dynamic Imports: Lazy loading of components

Asset Optimization

  • Image Optimization: Automatic image optimization
  • CSS Purging: Unused CSS removal
  • Tree Shaking: Dead code elimination

Performance Features

  • Bundle Analysis: Bundle size monitoring
  • Source Maps: Debug-friendly builds
  • Hot Reload: Fast development experience

Deployment Configuration

Vercel Deployment

  • Automatic Deployments: GitHub integration
  • Environment Variables: Secure variable management
  • Custom Domains: Domain configuration
  • CDN: Global content delivery

Build Process

  1. Install Dependencies: npm install
  2. Type Checking: TypeScript validation
  3. Build Application: Vite build process
  4. Generate Sitemap: SEO optimization
  5. Deploy: Vercel deployment

Environment Management

  • Development: Local environment variables
  • Staging: Staging environment variables
  • Production: Production environment variables

Monitoring and Analytics

Build Monitoring

  • Build Times: Track build performance
  • Bundle Sizes: Monitor bundle size changes
  • Error Tracking: Build error monitoring

Performance Monitoring

  • Core Web Vitals: Performance metrics
  • User Experience: Real user monitoring
  • Error Tracking: Application error tracking

Security Configuration

Build Security

  • Environment Variables: Secure variable handling
  • Source Maps: Production source map management
  • Dependencies: Regular security updates

Deployment Security

  • HTTPS: Automatic HTTPS enforcement
  • Headers: Security headers configuration
  • CORS: Cross-origin resource sharing

Maintenance and Updates

Regular Maintenance

  • Dependency Updates: Regular package updates
  • Security Patches: Immediate security updates
  • Build Optimization: Performance improvements

Monitoring

  • Build Success: Monitor build success rates
  • Performance: Track build performance
  • Errors: Monitor build errors

Troubleshooting

Common Issues

  • Build Failures: TypeScript errors, dependency issues
  • Performance: Slow builds, large bundles
  • Deployment: Environment variable issues

Solutions

  • TypeScript Errors: Fix type issues, update types
  • Performance: Optimize imports, reduce bundle size
  • Deployment: Check environment variables, verify configuration