Solar Tool Suite
Five connected tools that help installers move from energy goals to equipment, solar production, and electrical configuration, with the context of each decision carried forward.
Two paths. Five connected tools.
I translated a solar system design expert’s sizing rules into React and TypeScript applications. Each view shows the key inputs, the logic behind a decision, and what carries into the next tool.
Plan daily storage.
The tool uses annual use and the share consumed on site to guide storage choices.
Size the array for the site.
Compare expected production with the annual energy goal.
✓ Input from first tool retainedChoose the loads to protect.
Selected loads and backup duration inform the equipment sizing.
Plan battery recovery.
▰ ▰ ▰→ battery bank
Site production is considered alongside cloudy days and recovery needs.
✓ Array target ready to carry forwardValidate the configuration.
Good, caution, or not allowed, with a reason for each result.
Run the location lookup ↓dailyNeed = (annualKwh / 365) × (1 − selfConsumption)React and TypeScript turn the sizing rule into battery recommendations; saved inputs retain the design context.
Illustrative wireframes with example inputs, not engineering recommendations. NEM and backup are separate planning paths; array results can inform string configuration.
Try a location lookup.
Enter a US ZIP or city. The demonstration resolves the location, requests historical daily temperatures, and calculates the design values used in the String Sizer.
The location you enter is sent to Open-Meteo when you select Look up. This demonstration runs separately from EG4's live tool.Select Look up to run the requests.
Data: Open-Meteo Geocoding and Historical Weather APIs.
The challenge
Solar planning involves decisions that depend on one another: how much energy a home uses, which loads need backup, how many batteries and inverters are appropriate, what an array can produce at a particular location, and whether a proposed string configuration stays within electrical limits. Installers need to work through those decisions in the field, often on a tablet or phone. A complex interface can make the calculations harder to understand and increase the chance of an overlooked constraint.
EG4 needed a guided experience that served experienced installers, sales teams explaining options to homeowners, and DIY customers learning the system.
My role
I owned the interface design, React and TypeScript development, and API integrations. A solar installation expert with extensive field experience designing and sizing systems supplied the engineering knowledge; I translated it into application code that generates recommendations, checks configurations, and explains the results.
The central design problem was organizing a large number of inputs, equipment choices, calculations, and outputs without making the experience feel like a spreadsheet.
What I built
Uses annual consumption and self consumption to guide battery planning for daily and time of use cycling.
Estimates array size using location, orientation, tilt, shading, energy use, and PVWatts production data.
Sizes equipment around selected loads, desired backup coverage, and partial or whole home needs.
Combines backup requirements with location based production estimates, cloudy days, battery recovery, and up to three differently oriented or shaded sub arrays.
Proposes and evaluates panel strings across inverter MPPT channels against equipment specifications and temperature dependent electrical limits.
How the system connects
Results move between related tools. The Backup Sizer saves energy requirements and equipment recommendations for the Backup Array Sizer. Array sizing outputs can become a target in the String Sizer. Users can review carried values and override quantities where a real installation calls for a different choice.
I integrated geocoding and PVWatts for site specific production estimates. The String Sizer also uses location based weather history to help select design temperatures. Array results are marked as needing a refresh when relevant inputs change after the production data was fetched.
A decision that mattered
The String Sizer had to make a dense engineering result understandable at a glance. It accounts for cold and hot temperature effects, mounting conditions, panel electrical characteristics, bifacial gain, inverter specifications, and limits for each MPPT channel. It generates ranked configurations and also checks a configuration an installer proposes.
Instead of returning a single opaque answer, the interface distinguishes acceptable conditions from cautions and disallowed configurations. For example, it warns when cold string voltage approaches an inverter maximum, when hot operating voltage may limit full output, or when array current exceeds an MPPT limit. The warnings explain why a result needs attention rather than relying on color alone.

Built for use beyond a desk
Responsive layouts make the tools usable on tablets and phones in the field. Guided controls, tooltips, English and Spanish support, light and dark modes, saved inputs, and downloadable PDF reports help installers work through a design and share it with a customer or colleague.
The suite also includes an administrative interface for panel data with spreadsheet import, verification, change history, and undo, so product information can be maintained as equipment changes.
Evidence and impact
In the selected 7 day analytics view, the suite recorded 1,410 page views, 918 sessions, and 328 tracked events. These are engagement measures, not counts of completed designs. The result is a live, accessible planning resource that supports installer conversations, customer exploration, and more informed checks before a design is taken into the field.
The work demonstrates my ability to take specialized knowledge from an expert and build the full product around it: interaction design, calculation logic, integrations, responsive implementation, and measurement after launch.
Try the live suite ↗