Implementation Plan

### Commit 1: Add connector configuration foundation

Create config files for standalone operation:
- config/monday.php
- config/velon.php

This commit defines where Monday API connection settings, Velon base URL, and Velon webhook endpoints will live.

Board IDs, item IDs, subitem IDs, and column mappings are not stored in config or env. Velon must pass those values in each request payload.

Commit message:
```
Add standalone connector configuration
```

### Commit 2: Add contracts and exception types

Add interfaces and centralized exceptions:
- MondayClientInterface
- VelonClientInterface
- MondayTokenExpiredException
- MondayTokenInvalidException
- MondayApiException
- MondayWebhookException
- ConnectorCommunicationException

Commit message:
```
Add connector contracts and exceptions
```

### Commit 3: Implement Monday GraphQL client
Create app/Clients/Monday/MondayGraphqlClient.php.
Responsibilities:
- send GraphQL requests
- attach bearer token
- detect invalid/expired token responses
- normalize Monday errors
- log operation metadata without sensitive headers or tokens

Commit message:
```
Implement Monday GraphQL client
```

### Commit 4: Implement Velon HTTP client
Create app/Clients/Velon/VelonHttpClient.php.
Responsibilities:
- send transformed payloads to Velon
- handle non-2xx responses
- handle timeout/network errors
- throw connector communication exceptions

Commit message:
```
Implement Velon HTTP client
```

### Commit 5: Add DTOs and payload transformer
Add DTOs and payload-driven transformers.
Initial targets:
- Velon payload to Monday column values
- Monday item/webhook payload to Velon payload

The transformer should use board IDs, item IDs, subitem IDs, and column mappings from the Velon request payload instead of local config or env values.

Commit message:
```
Add payload driven transformers
```

### Commit 6: Add outbound pricing calculator item service
Create service for:
- create pricing calculator board item
- update pricing calculator board item

This service should call the transformer, then the Monday client.

Commit message:
```
Add pricing calculator item service
```
### Commit 7: Add outbound line item service
Add support for creating pricing calculator line items as Monday subitems.

Commit message:
```
Add pricing calculator line item service
```

### Commit 8: Add Velon-facing API controller and routes
Add endpoints:
- POST /api/velon/pc-board/items
- PUT /api/velon/pc-board/items/{itemId}
- POST /api/velon/pc-board/items/line-items

Controllers stay thin and delegate to services.

Commit message:
```
Add Velon pricing calculator API endpoints
```

### Commit 9: Add Monday webhook service
Create webhook handling for:
- Monday challenge requests
- payload validation
- item update events
- optional Monday data enrichment
- forwarding transformed payloads to Velon

Commit message:
```
Add Monday webhook processing service
```

### Commit 10: Add Monday webhook controller and routes
Add endpoint:
- POST /api/webhooks/monday/pc-board-item-updated

Possibly add create/update-specific endpoints if needed after route naming is finalized.

Commit message:
```
Add Monday webhook API endpoint
```

### Commit 11: Add tests
Add tests for:
- token error handling
- Monday GraphQL success and failure responses
- Velon client failure handling
- payload driven transformation
- create item endpoint
- update item endpoint
- line item endpoint
- webhook challenge response
- webhook forwarding to Velon

Commit message:
```
Add connector service tests
```

### Coding Constraint

I will keep all new code comments ASCII-only and avoid special characters in comments. That means no decorative separators, arrows, smart quotes, em dashes, or symbols. Plain comments only.

Example style:
```php
Build Monday column values from the configured mapping.
```

Not:
```php
// Build Monday column values -> Velon mapping.
```
Development should start with commit 1 only after this plan is accepted.
