Skip to content
Type
Side project
Stack
Python, FastAPI, SQLAlchemy, PostgreSQL, Next.js
Live
Preview (opens in a new tab)
Source
GitHub (opens in a new tab)

01What it is

How far can you trust a weather forecast? Models scored against real measurements.

Forecheck answers one question: at my station, which weather model has been right lately, and for how many days ahead can I rely on it? It checks the forecasts against real measurements in Poland.

Every day it saves what three open models predict for the next seven days at 15 stations, and once a day has been measured it scores each forecast. The page gives a clear verdict, such as which model is the most accurate and for how many days its error stays under a set limit.

No accounts and no ads, and all of it is open source.

02Screenshots

Verdict and ranking

Forecheck showing verdict cards, error by forecast horizon and a model ranking

03Decisions

How it is built, and why.

  1. 3.1

    Forecasts are kept as they were issued

    Each forecast carries the day it was fetched and its lead time. A forecast refreshed just before its day would make every model look better than it was when anyone could still act on it.

  2. 3.2

    Truth is a station measurement

    Only real station measurements count. Reanalysis data is a model, so it is never used as truth.

  3. 3.3

    Python owns the calculations

    The Python backend owns the data, the database and every calculation. Next.js only displays what the API returns, through types generated from the OpenAPI contract.

  4. 3.4

    Layers enforced in CI

    The domain imports only the standard library, and an import linter fails CI if a layer reaches the wrong way.

  5. 3.5

    Scores are summable

    Each scored day is stored as small sums, so a ranking over any period is one SQL aggregate and raw forecasts are dropped once scored.