# Feature Specification: Project Launch Script **Feature Branch**: `003-project-launch-script` **Created**: 2025-12-20 **Status**: Draft **Input**: User description: "давай создадим скрипт для запуска проекта" ## User Scenarios & Testing *(mandatory)* ### User Story 1 - Launch Project (Priority: P1) As a developer, I want to launch the entire project (backend and frontend) with a single command so that I can start working quickly without manually running multiple commands in different terminals. **Why this priority**: This is the core functionality requested. It simplifies the development workflow. **Independent Test**: Can be fully tested by running the script and verifying that both backend and frontend services are accessible. **Acceptance Scenarios**: 1. **Given** the project is cloned and I am in the root directory, **When** I run the launch script, **Then** the script checks for dependencies, installs them if missing, and starts both backend and frontend servers. 2. **Given** the servers are running, **When** I press Ctrl+C, **Then** both backend and frontend processes terminate gracefully. 3. **Given** dependencies are missing, **When** I run the script, **Then** it installs them before starting the servers. --- ### Edge Cases - What happens when a port is already in use? The underlying tools (uvicorn/vite) will likely fail or complain. The script should ideally show this output. - What happens if `python3` or `npm` is missing? The script should fail with a clear error message. ## Requirements *(mandatory)* ### Functional Requirements - **FR-001**: The script MUST be executable from the project root (e.g., `./run.sh`). - **FR-002**: The script MUST check if `python3` and `npm` are available in the environment. - **FR-003**: The script MUST check for and install backend dependencies from `backend/requirements.txt` if they are missing or outdated. - **FR-004**: The script MUST check for and install frontend dependencies from `frontend/package.json` if `node_modules` is missing. - **FR-005**: The script MUST start the backend application server in development mode. - **FR-006**: The script MUST start the frontend application server in development mode. - **FR-007**: The script MUST run both backend and frontend processes concurrently. - **FR-008**: The script MUST handle `SIGINT` (Ctrl+C) to terminate both processes gracefully. ### Key Entities *(include if feature involves data)* N/A ## Success Criteria *(mandatory)* ### Measurable Outcomes - **SC-001**: Developers can start the full stack with 1 command. - **SC-002**: Both backend and frontend services are accessible via their configured network ports within 30 seconds of running the script (assuming dependencies are installed). - **SC-003**: 100% of child processes are terminated when the script is stopped.