london-transport-dashboard-back-up-v4/
├─ package.json (root scripts orchestrate frontend & backend)
├─ frontend/
│ ├─ package.json
│ │ ├─ Runtime: Node (ESM) + Vite dev server
│ │ ├─ Framework: React 18
│ │ ├─ Bundler/Dev: Vite (+ @vitejs/plugin-react)
│ │ ├─ GraphQL client: @apollo/client, graphql
│ │ └─ Map: leaflet, react-leaflet
│ ├─ src/
│ │ └─ `main.jsx` (React entry) → `App.jsx`
│ └─ styles/ (`App.css`)
├─ backend/
│ ├─ package.json
│ │ ├─ Runtime: Node (ESM)
│ │ ├─ Framework: Express
│ │ ├─ GraphQL server: @apollo/server + graphql
│ │ ├─ HTTP clients: axios, node-fetch
│ │ └─ Misc: cors, dotenv
│ └─ `server.js` (Apollo/Express GraphQL server; TFL integration)
├─ scripts/ (backend fetch scripts, vehicle fetchers)
└─ public/ (frontend static assets)