# 1. Run Applicaiton

1. Removes all cached Python packages stored by pip, removes local Python cache files, clears the cache used by uv, and forcibly clear the cache for Node.js.

    ```bash
    uv tool install cleanpy
    pip cache purge && cleanpy . && uv cache clean && npm cache clean --force
    ```

2. Resolve dependencies from your *pyproject.toml* and upgrade all packages. Synchronize the virtual environment with the dependencies specified in the *uv.lock* including packages needed for development.

    ```bash
    cd backend
    uv lock --upgrade
    uv sync --dev
    ```

3. Lint and check code for errors, style issues, and potential bugs, and try to fix them. Discover and run tests in *tests/*.

    ```bash
    uv run ruff check --fix && uv run pytest
    ```

4. Starts a local development API server, visible at port 8000, and automatically reloads the server as you make code changes.

    ```bash
    uv run uvicorn src.main:app --reload --port 8000
    ```

5. Scans dependencies for security vulnerabilities and attempts to automatically fix them by force-updating to the latest secure versions.

    ```bash
    cd ..
    cd frontend
    npm audit fix --force
    ```

6. Install dependencies from *package.json*, then update those dependencies to the latest allowed versions based on version ranges. Next, check the source code for stylistic and syntax errors according to configured rules. Finally, compile or bundle the application for deployment or production use.

    ```bash
    cd frontend
    npm install && npm update && npm run lint && npm run build
    ```

7. Execute start script in *package.json*, launch your Node.js application in production mode.

    ```bash
    cd frontend
    npm run start
    ```
