AutoPulse is a full-stack automotive intelligence platform for EV charging infrastructure, geospatial station search, route planning, reliability scoring and data quality monitoring.
This is the base repository. It owns the product vision, architecture docs, phase prompts, local orchestration and cross-repository coordination.
- Base/orchestration: jmiguelmangas/AutoPulse
- API service: jmiguelmangas/autopulse-api
- Frontend service: jmiguelmangas/autopulse-frontend
- Worker service: jmiguelmangas/autopulse-worker
- Shared contracts: jmiguelmangas/autopulse-contracts
AutoPulse is built as a portfolio-grade product system rather than a single demo repository. The base repo explains the product, architecture and local orchestration, while the service repos show focused backend, frontend, ingestion and contract ownership.
The current public version demonstrates:
- Python/FastAPI API design with tests, metrics and generated OpenAPI.
- React/TypeScript frontend with MapLibre geospatial UI and reusable design primitives.
- MongoDB geospatial persistence and Open Charge Map ingestion.
- Modeled charger availability clearly labelled as simulated until live provider status feeds are connected.
- Multirepo CI and contract-oriented delivery.
docs/ Product, architecture and ADR documentation.
infra/ Infrastructure configuration placeholder.
prompts/ Phase-by-phase implementation prompts.
- API foundation, health and MongoDB readiness.
- MongoDB station, ingestion run and data quality models.
- Open Charge Map ingestion worker with quality reports.
- Station search API and map explorer.
- Open Charge Map API-key based Madrid-area ingestion for local demos.
- Modeled station availability exposed as
status.source=simulatedand shown in the UI asModeled. - Route planning API and route planner UI.
- Admin/demo data quality dashboard.
- Structured request and ingestion logging.
- Prometheus-style API metrics.
- Scheduled worker ingestion.
- OpenAPI and generated TypeScript contracts.
- GitHub Actions for API, frontend and worker quality checks.
Overview:
Map explorer with Open Charge Map data and modeled availability:
Route planner:
Data quality dashboard:
Local workflow:
- Copy
.env.exampleto.env. - Start local dependencies with Docker Compose.
- Run the API, frontend and worker from their service repositories.
docker compose upRun the API locally after installing its Python dependencies:
cd ../autopulse-api
PYTHONPATH=src uv run uvicorn autopulse_api.app:create_app --factory --reloadRun the frontend locally:
cd ../autopulse-frontend
npm install
npm run devRun Open Charge Map ingestion locally:
cd ../autopulse-worker
MONGODB_URI='mongodb://autopulse:autopulse@localhost:27017/autopulse?authSource=admin' \
OPEN_CHARGE_MAP_API_KEY='your-open-charge-map-key' \
uv run autopulse-worker ingest open-charge-map \
--bounding-box 40.20 -4.15 40.70 -3.35 \
--max-results 200Open Charge Map provides station metadata. Live connector occupancy is not available through this integration, so AutoPulse marks availability as modeled until a live OCPI/CPO feed is connected.
API:
cd ../autopulse-api
uv run --extra dev ruff check .
uv run --extra dev pytestFrontend:
cd ../autopulse-frontend
npm run lint
npm run test
npm run buildWorker:
cd ../autopulse-worker
uv run --extra dev ruff check .
uv run --extra dev pytest


