# Vehicle Database — 2015+ 400+ HP Production Cars

## Source of truth
- **Live URL:** https://core.itpropartner.com/vehicles.json
- **Local copy (Caddy):** /var/www/static/vehicles.json
- **Portal copy:** /root/portal-mockup/vehicles.json
- **Caddy config:** core.itpropartner.com serves static files from /var/www/static/

## Database Stats (as of Jul 7, 2026)
- **47 makes** — every global automaker
- **373 models** — every production 2015+ car with 400+ HP
- **1,433 year-HP data points**

## Data Structure

```
{
  "Make": {
    "Model": {
      "Year": HP,
      "Year": HP,
      ...
    },
    ...
  },
  ...
}
```

Example:
```json
{
  "Ferrari": {
    "296 GTB": {
      "2022": 819,
      "2023": 819,
      "2024": 819,
      "2025": 819
    }
  }
}
```

## Maintenance Rules
1. **New model launches** — When new model years launch (2027s, mid-cycle refreshes), add them proactively within a week of announcement
2. **Corrections** — User reports missing cars (like ZR1 year ranges). Add immediately, verify with the user
3. **No snippet updates needed** — The Apex WPForms form fetches live from the JSON endpoint. Updating the JSON is sufficient
4. **HP values** — use manufacturer claimed horsepower. For EVs, use combined system HP
5. **Sorting** — Makes alphabetically, models alphabetically, years descending (newest first)
6. **Years are strings** — `"2025"` not `2025`. The vehicle registration form expects string keys.
7. **HP is integer** — No decimal points.

## Deploy Updates

After editing vehicles.json in portal-mockup, you MUST copy to the web root:

```bash
cp /root/portal-mockup/vehicles.json /var/www/static/vehicles.json
```

Then verify via curl:
```bash
curl -s https://core.itpropartner.com/vehicles.json | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.keys()), 'makes')"
```

## Common Maintenance Tasks

### Add a missing year to a model
```python
data['Ferrari']['296 GTB']['2025'] = 819   # same HP as existing year
```

### Add a missing model
```python
data['Ferrari']['SF90 XX Spider'] = {"2024": 1016}
```

## PITFALLS

- **User may notice missing models via customer feedback** — This is the primary signal. When a participant can't find their car in registration, check if the model exists in the DB. If not, add it.
- **Ferrari "Speciale" variants** — Ferrari does not produce a production model called "Speciale" for the 296 line. Only GTB (coupe) and GTS (spider) exist.
- **Current as of Jul 2026** — Years should be kept current. If user reports years are missing, add the current year +1.

## Apex Form Integration
- Form fetches from `https://core.itpropartner.com/vehicles.json` (HTTPS, CORS-enabled)
- WPForms HTML Content field embeds JS snippet that populates cascading dropdowns
- Make → Model → Year → Color → HP display
- Existing WPForms snippet at `/root/.hermes/references/apex-vreg-live.html`

## Significance
This is a showcase project for IT Pro Partner. Every missing car that gets corrected makes the Apex form more reliable and builds trust. Accuracy here directly leads to more MSP tech projects.
