No description
Find a file
2026-02-18 12:47:22 +01:00
apps refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
docker refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
packages/common refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
scripts refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
tests chore: update tests to adaped to new structure 2026-02-11 15:47:03 +01:00
.gitignore first inital commit 2026-02-11 13:00:39 +01:00
docker-compose.yaml refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
Dockerfile refactor: modernize project and improve error handling and documentation 2026-02-11 15:24:26 +01:00
pyproject.toml refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00
README.md docs: update README 2026-02-11 15:55:16 +01:00
uv.lock refactor: seperate system into single Dockerfiles 2026-02-18 12:47:22 +01:00

Electricity Price and Grid Pipeline

An automated end-to-end data pipeline for collecting, analyzing, and visualizing electricity market and weather data.

Architecture

The project implements a data engineering pipeline using the Medallion architecture, powered by DuckDB and Polars:

  1. Bronze Layer (Raw): Stores immutable API responses from SMARD and Bright Sky as historical facts.
  2. Gold Layer (Combined): Contains transformed, cleaned, and joined data ready for analysis and visualization.

Features

  • Data Collection: Automated retrieval of electricity prices, grid load, and generation data via the SMARD API, along with comprehensive weather data from the Bright Sky API.
  • Dashboard: Interactive visualization using Streamlit, featuring market trends, energy mix, and weather details.
  • REST API: FastAPI interface providing programmatic access to processed data.
  • Orchestration: Full Docker integration including a scheduler for periodic data updates.

Installation and Operation

Start the entire system (pipeline, API, and dashboard) with a single command:

docker-compose up --build

Local Development

  1. Install dependencies:

    uv sync
    
  2. Execute the pipeline manually:

    uv run python main.py run
    
  3. Start the dashboard:

    uv run streamlit run dashboard/app.py
    
  4. Start the API:

    uv run uvicorn api.main:app --reload
    

Configuration

Configuration is managed via config/config.yaml or environment variables with the STROM_ prefix:

  • STROM_SMARD__REGION: Region code (Default: DE-LU)
  • STROM_DATABASE__PATH: Path to the DuckDB file
  • INTERVAL: Execution interval for the scheduler in the Docker container (in seconds)

Testing

Run the test suite using:

uv run pytest

License

MIT