# ColaFlow Development Scripts

This directory contains convenient scripts to start and stop the ColaFlow development environment.

## Available Scripts

### Windows (PowerShell)

#### Start Development Environment
```powershell
.\start-dev.ps1
```

This script will:
- Check if backend (port 5000) and frontend (port 3000) are already running
- Start the backend API in a new PowerShell window
- Start the frontend web application in a new PowerShell window
- Display the URLs for accessing the services

#### Stop Development Environment
```powershell
.\stop-dev.ps1
```

This script will:
- Stop all .NET (dotnet.exe) processes
- Stop all Node.js processes running on port 3000
- Clean up gracefully

### Linux/macOS/Git Bash (Bash)

#### Start Development Environment
```bash
./start-dev.sh
```

This script will:
- Check if backend (port 5000) and frontend (port 3000) are already running
- Start the backend API in the background
- Start the frontend web application in the background
- Save process IDs to `backend.pid` and `frontend.pid`
- Save logs to `backend.log` and `frontend.log`
- Keep running until you press Ctrl+C (which will stop all services)

#### Stop Development Environment
```bash
./stop-dev.sh
```

This script will:
- Stop the backend and frontend processes using saved PIDs
- Fall back to killing processes by port/name if PIDs are not found
- Clean up log files and PID files

## Service URLs

Once started, the services will be available at:

- **Backend API**: http://localhost:5167 (or the port shown in the startup output)
- **Swagger UI**: http://localhost:5167/swagger
- **Frontend**: http://localhost:3000

## Manual Startup

If you prefer to start the services manually:

### Backend
```bash
cd colaflow-api
dotnet run --project src/ColaFlow.API/ColaFlow.API.csproj
```

### Frontend
```bash
cd colaflow-web
npm run dev
```

## Troubleshooting

### Port Already in Use

If you see errors about ports already being in use:

1. Run the stop script first:
   - Windows: `.\stop-dev.ps1`
   - Linux/macOS: `./stop-dev.sh`

2. Then start again:
   - Windows: `.\start-dev.ps1`
   - Linux/macOS: `./start-dev.sh`

### Lock File Issues (Frontend)

If you see "Unable to acquire lock" errors for the frontend:

```bash
# Remove the lock file
rm -f colaflow-web/.next/dev/lock

# Then restart
./start-dev.sh  # or .\start-dev.ps1 on Windows
```

### Database Connection Issues

Make sure PostgreSQL is running and the connection string in `.env` or `appsettings.Development.json` is correct.

### Node Modules Missing

If the frontend fails to start due to missing dependencies:

```bash
cd colaflow-web
npm install
```

## Development Workflow

1. Start the development environment:
   ```bash
   ./start-dev.sh  # or .\start-dev.ps1 on Windows
   ```

2. Make your changes to the code

3. The services will automatically reload when you save files:
   - Backend: Hot reload is enabled for .NET
   - Frontend: Next.js Turbopack provides fast refresh

4. When done, stop the services:
   ```bash
   ./stop-dev.sh  # or .\stop-dev.ps1 on Windows
   ```

   Or press `Ctrl+C` if using the bash version of start-dev.sh

## Notes

- The PowerShell scripts open new windows for each service, making it easy to see logs
- The Bash scripts run services in the background and save logs to files
- Both sets of scripts check for already-running services to avoid conflicts
- The scripts handle graceful shutdown when possible
