https://github.com/climate-ref/ref-app

API and Portal for viewing outputs from the REF

https://github.com/climate-ref/ref-app

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.6%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

API and Portal for viewing outputs from the REF

Basic Info
  • Host: GitHub
  • Owner: Climate-REF
  • License: apache-2.0
  • Language: TypeScript
  • Default Branch: main
  • Size: 2.84 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 1
  • Releases: 0
Created over 1 year ago · Last pushed 11 months ago
Metadata Files
Readme

README.md

Climate Rapid Evaluation Framework (REF) App

This repository contains the API and Frontend for the Climate Rapid Evaluation Framework (REF). This system enables comprehensive benchmarking and evaluation of Earth system models against observational data, integrating with the climate-ref core library.

This is a full-stack application that consists of a: * Backend: FastAPI API (Python 3.11+) * FastAPI, Pydantic, SQLAlchemy, OpenAPI documentation * Frontend: React frontend (React 19, TypeScript) * Vite, Tanstack Router, Tanstack Query, Tailwind CSS, Shadcn/ui, Recharts

Status: Alpha

Other info : Licence Last Commit Contributors

Overview

The Climate REF Web Application provides researchers and scientists with tools to: - Enable rapid model evaluation and near real-time assessment of climate model performance. - Provide standardized, reproducible evaluation metrics across different models and datasets. - Make complex climate model diagnostics accessible through an intuitive web interface. - Ensure evaluation processes are transparent and results are traceable. - Consolidate various diagnostic tools into a unified framework. - Automate the execution of diagnostics when new datasets are available. - Help researchers find and understand available datasets and their evaluation status. - Enable easy comparison of model performance across different versions and experiments.

Getting Started

Prerequisites

  • Python 3.11+ (with uv for package management)
  • Node.js v20 and npm (for frontend)
  • Database: SQLite (development/test) or PostgreSQL (production)
  • Docker and Docker Compose (optional, for containerized deployment)
  1. Clone the repository

    bash git clone https://github.com/Climate-REF/ref-app.git cd ref-app

Backend Setup

  1. Set up environment variables

    Create a .env file in the project root by copying the .env.example file.

    bash cp .env.example .env

    Modify the .env to your needs. The REF_CONFIGURATION variable should point to the configuration directory for the REF, which defines the database connection string and other REF-specific settings.

  2. Install dependencies

    bash cd backend make virtual-environment

  3. Start the backend server

    bash make dev

Frontend Setup

  1. Generate Client

    bash make generate-client

  2. Install dependencies

    bash cd frontend npm install

  3. Start the frontend server

    bash npm run dev

Project Structure

ref-app/ ├── .env # Environment variables (copy from .env.sample) ├── Makefile # Project automation tasks (e.g., client generation, dev server) ├── backend/ │ ├── src/ │ │ └── ref_backend/ # Main Python package │ │ ├── api/ # FastAPI API endpoints and dependencies │ │ │ ├── routes/ # API route definitions (datasets, diagnostics, executions, etc.) │ │ │ └── main.py # API router aggregation │ │ ├── core/ # Core application logic (config, file handling, REF initialization) │ │ └── models.py # Pydantic models for API responses │ ├── tests/ # Backend test suite │ ├── pyproject.toml # Python dependencies and project metadata │ └── uv.lock # uv lock file for reproducible dependencies ├── frontend/ │ ├── public/ # Static assets │ ├── src/ │ │ ├── client/ # Auto-generated API client (TypeScript types, React Query hooks) │ │ ├── components/ # Reusable React components (app, dashboard, datasets, ui, etc.) │ │ ├── routes/ # File-based routing for React application │ │ ├── hooks/ # Custom React hooks │ │ ├── lib/ # Utility functions │ │ └── styles/ # Global styles │ ├── package.json # Node.js dependencies │ ├── vite.config.ts # Vite build configuration │ └── openapi.json # OpenAPI specification (generated from backend) └── scripts/ # Utility scripts

API Documentation

When the backend is running, API documentation is available at: - Swagger UI: http://localhost:8001/docs - ReDoc: http://localhost:8001/redoc - OpenAPI JSON: http://localhost:8001/openapi.json

Owner

  • Name: Climate REF
  • Login: Climate-REF
  • Kind: organization
  • Email: cmip-ipo@esa.int

Climate Rapid Evaluation Framework

GitHub Events

Total
  • Issues event: 6
  • Issue comment event: 8
  • Push event: 52
  • Pull request event: 1
  • Create event: 2
Last Year
  • Issues event: 6
  • Issue comment event: 8
  • Push event: 52
  • Pull request event: 1
  • Create event: 2

Dependencies

backend/Dockerfile docker
  • ghcr.io/astral-sh/uv python3.10-bookworm-slim build
  • python 3.10-slim build
frontend/package-lock.json npm
  • 336 dependencies
frontend/package.json npm
  • @biomejs/biome 1.9.4 development
  • @eslint/js ^9.21.0 development
  • @hey-api/openapi-ts ^0.64.10 development
  • @types/node ^22.13.8 development
  • @types/react ^19.0.10 development
  • @types/react-dom ^19.0.4 development
  • @vitejs/plugin-react-swc ^3.8.0 development
  • eslint ^9.21.0 development
  • eslint-plugin-react-hooks ^5.1.0 development
  • eslint-plugin-react-refresh ^0.4.19 development
  • globals ^15.15.0 development
  • typescript ~5.7.2 development
  • typescript-eslint ^8.24.1 development
  • vite ^6.2.0 development
  • @hey-api/client-fetch ^0.8.3
  • @radix-ui/react-dialog ^1.1.6
  • @radix-ui/react-dropdown-menu ^2.1.6
  • @radix-ui/react-label ^2.1.2
  • @radix-ui/react-scroll-area ^1.2.3
  • @radix-ui/react-separator ^1.1.2
  • @radix-ui/react-slot ^1.1.2
  • @radix-ui/react-tabs ^1.1.3
  • @radix-ui/react-tooltip ^1.1.8
  • @tailwindcss/vite ^4.0.9
  • @tanstack/react-query ^5.66.11
  • @tanstack/react-query-devtools ^5.67.1
  • @tanstack/react-table ^8.21.2
  • class-variance-authority ^0.7.1
  • clsx ^2.1.1
  • date-fns ^4.1.0
  • lucide-react ^0.477.0
  • react ^19.0.0
  • react-dom ^19.0.0
  • react-router ^7.2.0
  • tailwind-merge ^3.0.2
  • tailwindcss ^4.0.9
  • tailwindcss-animate ^1.0.7
backend/pyproject.toml pypi
  • cmip-ref [metrics,postgres]==0.2.0
  • fastapi [standard]<1.0.0,>=0.114.2
  • ilamb3 *
  • ipython >=8.33.0
  • pcmdi-metrics *
  • psycopg [binary]<4.0.0,>=3.1.13
  • pydantic >2.0
  • pydantic-settings <3.0.0,>=2.2.1
  • python-multipart <1.0.0,>=0.0.7
  • sentry-sdk [fastapi]<2.0.0,>=1.40.6
  • tenacity <9.0.0,>=8.2.3
backend/uv.lock pypi
  • 166 dependencies