{"id":21381263,"url":"https://github.com/gaia-charge/evdb","last_synced_at":"2026-02-20T01:03:01.441Z","repository":{"id":55851774,"uuid":"188597731","full_name":"gaia-charge/evdb","owner":"gaia-charge","description":"Public domain EV database","archived":false,"fork":false,"pushed_at":"2026-02-17T21:59:41.000Z","size":7437,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-18T03:39:31.581Z","etag":null,"topics":["database","electric-vehicles","open-data","streamlit"],"latest_commit_sha":null,"homepage":"https://open-evdb.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gaia-charge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-25T18:03:51.000Z","updated_at":"2026-02-17T21:58:27.000Z","dependencies_parsed_at":"2024-01-16T11:32:29.318Z","dependency_job_id":"0d9e15dd-e398-400e-a481-a65d3edf7597","html_url":"https://github.com/gaia-charge/evdb","commit_stats":null,"previous_names":["gaia-charge/evdb"],"tags_count":288,"template":false,"template_full_name":null,"purl":"pkg:github/gaia-charge/evdb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaia-charge%2Fevdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaia-charge%2Fevdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaia-charge%2Fevdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaia-charge%2Fevdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaia-charge","download_url":"https://codeload.github.com/gaia-charge/evdb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaia-charge%2Fevdb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29637924,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"ssl_error","status_checked_at":"2026-02-19T22:32:38.330Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","electric-vehicles","open-data","streamlit"],"created_at":"2024-11-22T10:45:06.080Z","updated_at":"2026-02-20T01:03:01.421Z","avatar_url":"https://github.com/gaia-charge.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EVDB - Open Electric Vehicle Database\n\n[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/)\n[![Validate YAML](https://github.com/gaia-charge/evdb/actions/workflows/validate.yml/badge.svg)](https://github.com/gaia-charge/evdb/actions/workflows/validate.yml)\n[![Build Database](https://github.com/gaia-charge/evdb/actions/workflows/build-deploy.yml/badge.svg)](https://github.com/gaia-charge/evdb/actions/workflows/build-deploy.yml)\n\nA comprehensive, open-source database of electric vehicles with detailed specifications, built with **YAML + JSON Schema + Datasette + Streamlit**.\n\n## 🏗️ Architecture\n\n```\nYAML Source Files → JSON Schema Validation → SQLite Database → Datasette API + Streamlit Dashboards\n```\n\n### Why This Stack?\n\n- **YAML**: Human-readable, git-friendly source format with comments\n- **JSON Schema**: Industry-standard validation ensures data quality\n- **SQLite**: Single-file database, portable, fast, perfect for datasets\n- **Datasette**: Instant API and web UI for SQLite databases\n- **Streamlit**: Python-native dashboards for data visualization\n\n## 📊 Data Structure\n\n### Four Core Entities\n\n```\nmanufacturers/\n  └─ tesla.yaml\n  └─ volkswagen.yaml\n\nvehicle-models/\n  └─ tesla-model-3.yaml (base info)\n  └─ volkswagen-id4.yaml\n\nvehicle-variants/\n  ├─ tesla-model-3-rwd-2024.yaml (detailed specs)\n  ├─ tesla-model-3-long-range-awd-2024.yaml\n  └─ volkswagen-id4-pure-2024.yaml\n\nmarket-availability/\n  ├─ tesla-model-3-rwd-2024-germany.yaml (pricing)\n  ├─ tesla-model-3-rwd-2024-usa.yaml\n  └─ volkswagen-id4-pure-2024-poland.yaml\n```\n\n### Why This Separation?\n\n- **Manufacturer** - Company info (name, country, website)\n- **Vehicle Model** - Base model (dimensions, seating, body style)\n- **Vehicle Variant** - Specific trim with full specs (battery, range, charging, performance)\n- **Market Availability** - Region-specific pricing and options\n\nThis structure handles:\n- ✅ Multiple trims/versions per model\n- ✅ Market-specific variants\n- ✅ Changes over time (model years)\n- ✅ Missing/incomplete data gracefully\n\n## 🚀 Features\n\n- **Comprehensive Specs**: Battery, range, charging, performance, dimensions\n- **Real-World Data**: Actual consumption, charging curves, not just claimed specs\n- **Market Specifics**: Pricing, incentives, availability by country\n- **Data Quality Tracking**: Every field marked with source and confidence level\n- **Version History**: Track changes across model years\n- **SQL Queryable**: Complex queries via Datasette\n- **Visual Dashboards**: Interactive comparisons via Streamlit\n- **API Access**: JSON API for developers\n- **Open License**: CC BY-SA 4.0 - free to use, share, and build upon\n\n## 📋 Current Status\n\n**Progress**: 92% Complete - Ready for Deployment! 🚀  \n**Vehicles**: 63 variants across 41 models from 19 manufacturers  \n**Markets**: Germany (primary), France, USA, Poland, Italy  \n**Next Milestone**: Continue vehicle expansion + Deploy Streamlit app  \n**Target Public Launch**: 2026-02-15\n\n### What's Working Now ✅\n\n- ✅ **220+ vehicle variants** with comprehensive specifications across 28+ manufacturers\n- ✅ **Full validation pipeline** - All YAML files validated with JSON Schema\n- ✅ **SQLite database** - Automated builds via GitHub Actions\n- ✅ **GitHub Releases** - Pre-built database downloadable from every push\n- ✅ **Datasette API** - 11 canned queries + full SQL access\n- ✅ **5 Datasette plugins** - Maps, charts, GraphQL, exports, search\n- ✅ **Streamlit dashboard** - 6 complete pages (Home, Browse, Compare, Analytics, Data Explorer, Documentation)\n- ✅ **CI/CD pipeline** - GitHub Actions for validation, builds, and releases\n- ✅ **Comprehensive docs** - API docs, contributing guide, FAQ\n\n### 📥 Download the Database\n\nThe latest pre-built SQLite database is available from [GitHub Releases](https://github.com/gaia-charge/evdb/releases/latest):\n\n```bash\n# Download latest database\nwget https://github.com/gaia-charge/evdb/releases/latest/download/evdb.db\n\n# Or with curl\ncurl -L -o evdb.db https://github.com/gaia-charge/evdb/releases/latest/download/evdb.db\n```\n\n## 🛠️ Development Setup\n\n### Prerequisites\n\n- Python 3.10+\n- pip\n\n### Installation\n\n```bash\n# Clone repository\ngit clone https://github.com/gaia-charge/evdb.git\ncd evdb\n\n# Create virtual environment\npython3 -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n\n# Install dependencies\npip install -r requirements.txt\n\n# Install pre-commit hooks (optional)\npre-commit install\n```\n\n### Validate YAML Files\n\n```bash\npython scripts/validate.py --directory data/\n```\n\n### Build SQLite Database\n\n```bash\npython scripts/build-sqlite.py --input-dir data/ --output evdb.db\n```\n\n### Run Datasette\n\n```bash\ndatasette evdb.db --metadata metadata.json\n# Open http://localhost:8001\n```\n\n### Run Streamlit Dashboard\n\n```bash\nstreamlit run streamlit_app.py\n# Open http://localhost:8501\n```\n\n**Features:**\n- 🏠 **Home** - Database statistics and quick search\n- 🔍 **Browse Vehicles** - Advanced filtering with 7 filters and 8 sort modes\n- ⚖️ **Compare** - Side-by-side comparison of 2-4 vehicles with visualizations\n- 📊 **Analytics** - Interactive charts for range, charging, price, and market analysis\n- 💾 **Data Explorer** - SQL query interface with 8 example queries\n- 📚 **Documentation** - Embedded API docs, contributing guide, and FAQ\n\n## 📖 Documentation\n\n- [**CONTRIBUTING.md**](CONTRIBUTING.md) - **Complete guide** to adding vehicles and data\n- [**API_DOCS.md**](API_DOCS.md) - **Comprehensive API** documentation with examples\n- [**FAQ.md**](FAQ.md) - **Frequently asked questions**\n\n## 🤝 Contributing\n\n**We need your help!** Contributions welcome:\n\n- 🚗 **Vehicle specifications** - Battery, range, charging, performance\n- 📊 **Real-world data** - Actual consumption and range tests\n- 💰 **Market pricing** - Regional pricing and options\n- 🌍 **New markets** - UK, Norway, China, Japan, Australia\n- 🔧 **Code improvements** - Scripts, validation, features\n- 📖 **Translations** - Help internationalize the database\n\n### Quick Start Guide\n\nSee **[CONTRIBUTING.md](CONTRIBUTING.md)** for the complete guide including:\n\n- 📝 How to add a vehicle (step-by-step)\n- ✅ Validation and testing workflow\n- 📋 Data quality standards\n- 🔀 Pull request process\n- 🎯 Priority vehicles we need\n\n**TL;DR:**\n1. Fork → Clone → Create branch\n2. Copy template from `templates/`\n3. Fill in specs (see [CONTRIBUTING.md](CONTRIBUTING.md))\n4. Validate: `python scripts/validate.py --file your-file.yaml`\n5. Submit pull request\n\nAll contributions must include source attribution. Data is licensed under CC BY-SA 4.0.\n\n## 📂 Repository Structure\n\n```\nevdb/\n├── data/                       # YAML source files\n│   ├── manufacturers/\n│   ├── vehicle-models/\n│   ├── vehicle-variants/\n│   ├── market-availability/\n│   └── reference/\n│       ├── connectors.yaml\n│       └── platforms.yaml\n├── schemas/                    # JSON Schema validation\n│   ├── manufacturer.schema.json\n│   ├── vehicle-model.schema.json\n│   ├── vehicle-variant.schema.json\n│   └── market-availability.schema.json\n├── scripts/                    # Build and validation tools\n│   ├── validate.py\n│   ├── build-sqlite.py\n│   └── import-yaml.py\n├── templates/                  # YAML templates for contributors\n├── streamlit_app.py           # Streamlit dashboard (6 pages)\n├── docs/                       # Documentation\n├── .github/workflows/          # CI/CD pipelines\n├── metadata.json              # Datasette configuration\n└── requirements.txt           # Python dependencies\n```\n\n## 🔌 API Examples\n\n### Get All Manufacturers\n\n```bash\ncurl https://evdb.gaiacharge.com/manufacturers.json\n```\n\n### Find Vehicles by Range\n\n```bash\ncurl \"https://evdb.gaiacharge.com/vehicle-variants.json?range_real_world_combined_km__gte=500\"\n```\n\n### SQL Query\n\n```bash\ncurl \"https://evdb.gaiacharge.com/evdb.json?sql=\\\nSELECT m.name as manufacturer, vm.name as model, vv.variant_name, \\\n       vv.battery_usable_capacity_kwh, vv.range_real_world_combined_km \\\nFROM vehicle_variants vv \\\nJOIN vehicle_models vm ON vv.vehicle_model_id = vm.id \\\nJOIN manufacturers m ON vm.manufacturer_id = m.id \\\nWHERE vv.model_year = 2024 \\\nORDER BY vv.range_real_world_combined_km DESC \\\nLIMIT 10\"\n```\n\n## 📊 Example Queries\n\n### Compare Charging Speeds\n\n```sql\nSELECT \n  m.name as manufacturer,\n  vm.name as model,\n  vv.variant_name,\n  vv.charging_dc_max_charge_power_kw as max_dc,\n  vv.charging_dc_charge_time_10_80_minutes as charge_time,\n  vv.charging_dc_charge_speed_kmh as km_per_hour\nFROM vehicle_variants vv\nJOIN vehicle_models vm ON vv.vehicle_model_id = vm.id\nJOIN manufacturers m ON vm.manufacturer_id = m.id\nWHERE vv.charging_dc_max_charge_power_kw \u003e= 150\nORDER BY vv.charging_dc_charge_speed_kmh DESC\nLIMIT 20;\n```\n\n### Find Budget EVs\n\n```sql\nSELECT \n  m.name, vm.name, vv.variant_name,\n  ma.pricing_base_price, ma.pricing_currency,\n  vv.range_real_world_combined_km\nFROM vehicle_variants vv\nJOIN vehicle_models vm ON vv.vehicle_model_id = vm.id\nJOIN manufacturers m ON vm.manufacturer_id = m.id\nJOIN market_availability ma ON vv.id = ma.variant_id\nWHERE ma.market = 'germany'\n  AND ma.pricing_base_price \u003c 40000\n  AND vv.range_real_world_combined_km \u003e 300\nORDER BY vv.range_real_world_combined_km DESC;\n```\n\n## 📜 License\n\n- **Data**: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)\n- **Code**: MIT License\n\n## 🔗 Links\n\n- **Website**: https://evdb.gaiacharge.com/ *(coming soon)*\n- **API**: https://evdb.gaiacharge.com/evdb.json *(coming soon)*\n- **Dashboards**: https://dashboard.evdb.gaiacharge.com/ *(coming soon)*\n- **GitHub**: https://github.com/gaia-charge/evdb\n\n## 💡 Inspiration\n\nInspired by comprehensive EV databases like ev-database.org, but with a focus on:\n- Open data (not proprietary)\n- Git-based workflow (trackable changes)\n- API-first design (easy integration)\n- Community contributions (crowdsourced accuracy)\n\n## 📞 Contact\n\n- **Issues**: [GitHub Issues](https://github.com/gaia-charge/evdb/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/gaia-charge/evdb/discussions)\n- **Email**: evdb@gaiacharge.com *(coming soon)*\n\n---\n\n**Built with ❤️ for the EV community**\n\n*Data is power. Open data is power for everyone.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaia-charge%2Fevdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaia-charge%2Fevdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaia-charge%2Fevdb/lists"}