OpenTech-DB¶
An Open Energy Ontology (OEO)-aligned database, REST API, and React 19 web frontend for energy generation, storage, transmission, and conversion technologies. Designed to feed real, traceable data into energy modelling frameworks.
What is OpenTech-DB?¶
opentech-db is a domain-specific data repository that provides standardised, source-traced technical and economic parameters for energy system components. Developed at the Deggendorf Institute of Technology (DIT) THD-Spatial-AI group, it serves as a single source of truth that multiple energy modelling frameworks can query programmatically.
Key capabilities:
- 55+ energy technologies across generation, storage, transmission, and conversion — all OEO-aligned
- REST API (FastAPI) with Swagger UI, ReDoc, and OpenAPI JSON
- Framework adapters for PyPSA, Calliope, OSeMOSYS, and ADOPTNet0
- Uncertainty-aware parameters — every value carries
min,max,source, andyear - Time-series profile catalogue — hourly capacity factors and load profiles for multiple countries
- Automated scraper pipeline — pulls data from OpenAlex, Semantic Scholar, NREL ATB, IRENA, and more
- React 19 SPA for browsing, visualising, and contributing data
- World map view — geographic visualisation of technology instances by country
- Contributor workflow with ORCID + Supabase authentication and admin review
System Architecture¶
┌─────────────────────────────────────────────────────────────┐
│ React 19 SPA (Frontend) │
│ TechGrid · DetailsModal · WorldMap · TimeSeriesViewer │
│ ContributorWorkspace · AdminPanel · ScraperPanel │
└──────────────────────┬──────────────────────────────────────┘
│ HTTP / REST
┌──────────────────────▼──────────────────────────────────────┐
│ FastAPI Backend (main.py) │
│ /technologies /adapt /timeseries /auth /scraper │
│ /admin /debug /ontology /health │
└──────┬─────────────────────────────────┬────────────────────┘
│ │
┌──────▼──────────┐ ┌────────────▼──────────────────┐
│ Data Layer │ │ Scraper Pipeline │
│ data/*.json │ │ OpenAlex · Semantic Scholar │
│ Pydantic v2 │ │ NREL ATB · IRENA · Crossref │
│ LRU cache │ │ APScheduler · LLM extract. │
└─────────────────┘ └───────────────────────────────┘
Live API¶
The API is publicly accessible — no setup required for read-only access:
| Interface | URL |
|---|---|
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
| OpenAPI JSON | http://localhost:8000/openapi.json |
| Health check | http://localhost:8000/health |
Documentation¶
| Section | Description |
|---|---|
| Overview | Design principles, technology coverage, data sources |
| Getting Started | Installation, Docker, environment variables, quick start |
| API Reference | All REST endpoints with request/response examples |
| Integration Guide | curl, Python, PyPSA, Calliope code examples |
| Data Model | Pydantic schema, OEO alignment, ParameterValue |
| Data Formats | JSON formats, adding new technologies |
| Framework Adapters | PyPSA and Calliope adapters, CRF formula |
| Scraper Pipeline | Automated data acquisition from academic sources |
| Time-Series Catalogue | Hourly profiles, contributor upload |
| Authentication | ORCID OAuth, Supabase auth, admin setup |
| Web Frontend | React SPA views, state management, build instructions |
License¶
Code is released under the MIT License. Data files and documentation content are released under CC BY 4.0. See LICENSE and ATTRIBUTIONS.md in the repository root.