# Development Environment This capability defines the development environment setup and service management for Tool_OCR. ## ADDED Requirements ### Requirement: Unified Service Startup The system SHALL provide a single startup script that can launch all services or individual components. #### Scenario: Start all services - **WHEN** developer runs `./start.sh` - **THEN** both backend and frontend services start - **AND** service URLs are displayed #### Scenario: Start only backend - **WHEN** developer runs `./start.sh backend` - **THEN** only the backend service starts on port 8000 #### Scenario: Start only frontend - **WHEN** developer runs `./start.sh frontend` - **THEN** only the frontend service starts on port 5173 ### Requirement: Service Process Management The system SHALL provide commands to check status and stop running services. #### Scenario: Check service status - **WHEN** developer runs `./start.sh --status` - **THEN** the script displays which services are running with their PIDs #### Scenario: Stop all services - **WHEN** developer runs `./start.sh --stop` - **THEN** all running services are gracefully terminated ### Requirement: Environment Setup Validation The setup script SHALL validate that all required dependencies are correctly installed. #### Scenario: Validate Python environment - **WHEN** setup script runs - **THEN** Python version is checked (3.10+) - **AND** virtual environment is created or verified - **AND** all pip packages are installed #### Scenario: Validate Node.js environment - **WHEN** setup script runs - **THEN** Node.js LTS version is installed via nvm - **AND** npm dependencies are installed #### Scenario: Validate GPU support (optional) - **WHEN** setup script runs on a system with NVIDIA GPU - **THEN** CUDA version is detected - **AND** appropriate PaddlePaddle GPU version is installed - **AND** GPU availability is verified ### Requirement: Environment Configuration The system SHALL use `.env.example` files to document all required environment variables. #### Scenario: New developer setup - **WHEN** developer clones the repository - **THEN** `.env.example` files document all required variables - **AND** developer copies to `.env.local` and fills in values