A comprehensive, open-source database of electric vehicles with detailed specifications, built with YAML + JSON Schema + Datasette + Streamlit.
YAML Source Files β JSON Schema Validation β SQLite Database β Datasette API + Streamlit Dashboards
- YAML: Human-readable, git-friendly source format with comments
- JSON Schema: Industry-standard validation ensures data quality
- SQLite: Single-file database, portable, fast, perfect for datasets
- Datasette: Instant API and web UI for SQLite databases
- Streamlit: Python-native dashboards for data visualization
manufacturers/
ββ tesla.yaml
ββ volkswagen.yaml
vehicle-models/
ββ tesla-model-3.yaml (base info)
ββ volkswagen-id4.yaml
vehicle-variants/
ββ tesla-model-3-rwd-2024.yaml (detailed specs)
ββ tesla-model-3-long-range-awd-2024.yaml
ββ volkswagen-id4-pure-2024.yaml
market-availability/
ββ tesla-model-3-rwd-2024-germany.yaml (pricing)
ββ tesla-model-3-rwd-2024-usa.yaml
ββ volkswagen-id4-pure-2024-poland.yaml
- Manufacturer - Company info (name, country, website)
- Vehicle Model - Base model (dimensions, seating, body style)
- Vehicle Variant - Specific trim with full specs (battery, range, charging, performance)
- Market Availability - Region-specific pricing and options
This structure handles:
- β Multiple trims/versions per model
- β Market-specific variants
- β Changes over time (model years)
- β Missing/incomplete data gracefully
- Comprehensive Specs: Battery, range, charging, performance, dimensions
- Real-World Data: Actual consumption, charging curves, not just claimed specs
- Market Specifics: Pricing, incentives, availability by country
- Data Quality Tracking: Every field marked with source and confidence level
- Version History: Track changes across model years
- SQL Queryable: Complex queries via Datasette
- Visual Dashboards: Interactive comparisons via Streamlit
- API Access: JSON API for developers
- Open License: CC BY-SA 4.0 - free to use, share, and build upon
Progress: 92% Complete - Ready for Deployment! π
Vehicles: 63 variants across 41 models from 19 manufacturers
Markets: Germany (primary), France, USA, Poland, Italy
Next Milestone: Continue vehicle expansion + Deploy Streamlit app
Target Public Launch: 2026-02-15
- β 220+ vehicle variants with comprehensive specifications across 28+ manufacturers
- β Full validation pipeline - All YAML files validated with JSON Schema
- β SQLite database - Automated builds via GitHub Actions
- β GitHub Releases - Pre-built database downloadable from every push
- β Datasette API - 11 canned queries + full SQL access
- β 5 Datasette plugins - Maps, charts, GraphQL, exports, search
- β Streamlit dashboard - 6 complete pages (Home, Browse, Compare, Analytics, Data Explorer, Documentation)
- β CI/CD pipeline - GitHub Actions for validation, builds, and releases
- β Comprehensive docs - API docs, contributing guide, FAQ
The latest pre-built SQLite database is available from GitHub Releases:
# Download latest database
wget https://github.com/gaia-charge/evdb/releases/latest/download/evdb.db
# Or with curl
curl -L -o evdb.db https://github.com/gaia-charge/evdb/releases/latest/download/evdb.db- Python 3.10+
- pip
# Clone repository
git clone https://github.com/gaia-charge/evdb.git
cd evdb
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install pre-commit hooks (optional)
pre-commit installpython scripts/validate.py --directory data/python scripts/build-sqlite.py --input-dir data/ --output evdb.dbdatasette evdb.db --metadata metadata.json
# Open http://localhost:8001streamlit run streamlit_app.py
# Open http://localhost:8501Features:
- π Home - Database statistics and quick search
- π Browse Vehicles - Advanced filtering with 7 filters and 8 sort modes
- βοΈ Compare - Side-by-side comparison of 2-4 vehicles with visualizations
- π Analytics - Interactive charts for range, charging, price, and market analysis
- πΎ Data Explorer - SQL query interface with 8 example queries
- π Documentation - Embedded API docs, contributing guide, and FAQ
- CONTRIBUTING.md - Complete guide to adding vehicles and data
- API_DOCS.md - Comprehensive API documentation with examples
- FAQ.md - Frequently asked questions
We need your help! Contributions welcome:
- π Vehicle specifications - Battery, range, charging, performance
- π Real-world data - Actual consumption and range tests
- π° Market pricing - Regional pricing and options
- π New markets - UK, Norway, China, Japan, Australia
- π§ Code improvements - Scripts, validation, features
- π Translations - Help internationalize the database
See CONTRIBUTING.md for the complete guide including:
- π How to add a vehicle (step-by-step)
- β Validation and testing workflow
- π Data quality standards
- π Pull request process
- π― Priority vehicles we need
TL;DR:
- Fork β Clone β Create branch
- Copy template from
templates/ - Fill in specs (see CONTRIBUTING.md)
- Validate:
python scripts/validate.py --file your-file.yaml - Submit pull request
All contributions must include source attribution. Data is licensed under CC BY-SA 4.0.
evdb/
βββ data/ # YAML source files
β βββ manufacturers/
β βββ vehicle-models/
β βββ vehicle-variants/
β βββ market-availability/
β βββ reference/
β βββ connectors.yaml
β βββ platforms.yaml
βββ schemas/ # JSON Schema validation
β βββ manufacturer.schema.json
β βββ vehicle-model.schema.json
β βββ vehicle-variant.schema.json
β βββ market-availability.schema.json
βββ scripts/ # Build and validation tools
β βββ validate.py
β βββ build-sqlite.py
β βββ import-yaml.py
βββ templates/ # YAML templates for contributors
βββ streamlit_app.py # Streamlit dashboard (6 pages)
βββ docs/ # Documentation
βββ .github/workflows/ # CI/CD pipelines
βββ metadata.json # Datasette configuration
βββ requirements.txt # Python dependencies
curl https://evdb.gaiacharge.com/manufacturers.jsoncurl "https://evdb.gaiacharge.com/vehicle-variants.json?range_real_world_combined_km__gte=500"curl "https://evdb.gaiacharge.com/evdb.json?sql=\
SELECT m.name as manufacturer, vm.name as model, vv.variant_name, \
vv.battery_usable_capacity_kwh, vv.range_real_world_combined_km \
FROM vehicle_variants vv \
JOIN vehicle_models vm ON vv.vehicle_model_id = vm.id \
JOIN manufacturers m ON vm.manufacturer_id = m.id \
WHERE vv.model_year = 2024 \
ORDER BY vv.range_real_world_combined_km DESC \
LIMIT 10"SELECT
m.name as manufacturer,
vm.name as model,
vv.variant_name,
vv.charging_dc_max_charge_power_kw as max_dc,
vv.charging_dc_charge_time_10_80_minutes as charge_time,
vv.charging_dc_charge_speed_kmh as km_per_hour
FROM vehicle_variants vv
JOIN vehicle_models vm ON vv.vehicle_model_id = vm.id
JOIN manufacturers m ON vm.manufacturer_id = m.id
WHERE vv.charging_dc_max_charge_power_kw >= 150
ORDER BY vv.charging_dc_charge_speed_kmh DESC
LIMIT 20;SELECT
m.name, vm.name, vv.variant_name,
ma.pricing_base_price, ma.pricing_currency,
vv.range_real_world_combined_km
FROM vehicle_variants vv
JOIN vehicle_models vm ON vv.vehicle_model_id = vm.id
JOIN manufacturers m ON vm.manufacturer_id = m.id
JOIN market_availability ma ON vv.id = ma.variant_id
WHERE ma.market = 'germany'
AND ma.pricing_base_price < 40000
AND vv.range_real_world_combined_km > 300
ORDER BY vv.range_real_world_combined_km DESC;- Data: CC BY-SA 4.0
- Code: MIT License
- Website: https://evdb.gaiacharge.com/ (coming soon)
- API: https://evdb.gaiacharge.com/evdb.json (coming soon)
- Dashboards: https://dashboard.evdb.gaiacharge.com/ (coming soon)
- GitHub: https://github.com/gaia-charge/evdb
Inspired by comprehensive EV databases like ev-database.org, but with a focus on:
- Open data (not proprietary)
- Git-based workflow (trackable changes)
- API-first design (easy integration)
- Community contributions (crowdsourced accuracy)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: evdb@gaiacharge.com (coming soon)
Built with β€οΈ for the EV community
Data is power. Open data is power for everyone.