Horizon Solar Dashboard main screen showing live production and battery data
The dashboard running on the "Solar Garden" demo system, in the warm cream light theme.
The idea

A control room for solar

This project started as the "Solar Controller" idea: a smarter way to manage solar panels and batteries than the basic charge controllers most setups use. Instead of waiting for the hardware to exist first, I built the software side as a real, working web app.

The dashboard acts as the control room for a Horizon solar setup. It shows live production, battery state, what's plugged in, energy history, and the position of the Sunflower panel, all in one place. The goal is for it to feel simple for beginners while still giving deeper controls and data to people who want them.

How it runs today

Right now the app runs on a built-in simulated controller (the "Solar Garden" demo system), so every screen works in the browser with realistic behaviour: production drifts with passing clouds, the battery charges or drains depending on what's switched on, and daily energy accumulates in real time.

The simulation lives in its own module, so when the physical Sunflower prototype and its controller are ready, real hardware data can replace the simulated feed without rebuilding the interface.

A look at each screen

The five main views of the app. Click any screen to view it full size.

Dashboard

Everything at a glance

The home screen. Live production in watts, net battery charge, load draw, efficiency, and weather sit up top, alongside the Sunflower panel's current elevation and azimuth. The stat cards along the bottom cover battery, daily generation, controller temperature, and signal.

Control

Point the panel

Four tracking modes: Sun Seeker, Storm Guard, Night Mode, and Manual. Manual mode gives you a draggable compass dial for azimuth and a slider for elevation, and every command runs through a firmware safety layer before any motor would actually move.

Loads

Smart plugs that look after the battery

Everything plugged into the controller. Each load can be switched on or off, given a daily schedule or a countdown timer, and capped at a wattage limit. Loads can also shed themselves automatically when the battery drops below a chosen threshold, then come back once it recovers, so the important things stay powered when the battery runs low.

Energy

History you can actually picture

Energy history across day, week, month, and year views, with week totals, best day, daily average, CO2 offset, and today's peak. My favourite touch is the "Did You Know" cards, which turn raw generation into everyday equivalents like phone charges and lightbulb hours.

Devices

Hardware and personalization

Connected panels and controllers, Horizon or third-party, plus a pairing flow for adding new ones, the system profile, and personalization. You can switch accent colours, background presets, and flip between the dark theme and a light mode styled after a warm cream palette.

What the app includes

The features behind those five screens.

Live Monitoring

Real-time production, battery percentage, voltage and current, load draw, efficiency, controller temperature, weather, and alerts, updating every second while the app is open.

Load Management

Smart plug control with schedules, timers, wattage limits, and automatic low-battery shedding, so the most important loads stay powered when the battery runs low.

Panel Control

Tracking modes and manual positioning for the Sunflower panel, with a command preview and a firmware safety layer that checks every movement request before it would reach the motors.

How It's Built

The app is built with React, Vite, and Tailwind CSS, organized into separate view, hook, and component modules so each tab is easy to work on independently. Settings, devices, and loads persist locally between sessions, and the layout adapts to phones with a bottom tab bar instead of the desktop sidebar.

The visual design comes in a warm cream light theme (shown here) and a dark theme with gold accents to match the rest of the Horizon Science identity, plus switchable accent colours and background presets.

Current Status

The dashboard itself is working software: every view, control, and setting functions today on the simulated controller. What it's waiting on is the physical side of the Sunflower Solar Panel, which Charlie and I are prototyping separately.

The next step is connecting the app to real controller hardware, likely an ESP32 measuring actual solar input and battery data, so the simulated feed can be swapped for live readings from the garden.