You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Chronodash is a multi-datasource monitoring and metrics collection system built with Elixir, Phoenix, and the Ash Framework. It is designed to collect, store, and visualize time-series metrics from various providers (currently only MeteoSIX) and display them in Grafana.
Key Architecture Concepts
Generic Polling Engine – Orchestrates data collection from multiple sources using a standardized pipeline.
Standardized Data Contract – All DataSources return a unified ObservationData struct, decoupling fetching logic from persistence.
Ash Framework – Manages the domain logic and persistence layer with high-performance bulk operations.
TimescaleDB – Optimized storage for time-series observations, enabling efficient long-term data retention and fast queries.
Observability – Integrated with PromEx for system metrics and Grafana for business/weather metrics.
Static code analysis and style enforcement (test only)
MIT
Development & Infrastructure
Tool
Purpose
Docker & Docker Compose
Runs PostgreSQL locally without a manual install
.env / .env.example
Environment variable management
Updating Dependencies
Elixir
# Update a specific package
mix deps.update <package_name># Update all packages
mix deps.update --all
Notes
Ash Framework: This project uses Ash (~> 3.0) as the primary domain layer. Migrations are managed by AshPostgres rather than plain Ecto — always use mix ash_postgres.generate_migrations when changing resources.
=======
Getting Started
Prerequisites
Docker & Docker Compose
Elixir 1.15+ (for local development)
Quick Start
Get your MeteoSIX API Key and add it to .env.
Configure your DB credentials in .env.
Deploy the app with telemetry: make deploy_with_tel
Access Grafana: http://localhost:3000 (admin/admin)
main