Pricing and Inventory Tool

Web Development

Project Overview

KiloWatts for Humanity (KWH) is a volunteer-run nonprofit organization that provides improved access and infrastructure to electrification in energy impoverished villages overseas through renewable energy solutions.

KWH’s Raspberry Pi-based data acquisition system (DAS) used sensors to measure the electric current between two Victron components. Over time, these sensors tend to drift, incurring additional costs for on-site maintenance. We built an embedded software utility that extracts data output from the Victron inverter and charge controller. By using Victron cables to connect these devices to the DAS, the embedded utility eliminates reliance on the sensors, improves reliability of data extraction, and provides consistent and accurate data for KWH. Our work on the DAS will positively impact the organization by decreasing maintenance costs and helping KWH better aid the populations they serve.

KWH also asked the team to build a web application to manage their inventory of DAS components across implementation projects. Our web app, built on the .NET Framework with C#, establishes an organization-wide inventory management system that centralizes information. Both of our solutions will be put into practice when KWH embarks on their next implementation trip to Kanchomba, Zambia to install our modified DAS.

You can view our final presentation here.

My Contributions

Although there were two main deliverables that the team was responsible for, I played a larger role in the web application side of things. Another team member and I focused on the web application and the other two focused on the embedded software utility.

To begin our work on the web application we first had to decide what language and framework we wanted to use. One of the biggest deciding factors in deploying our app was that we had develop only using free/open source tools and environments.
We eventually landed on using the .NET framework. This allowed us to develop our app in C# with a MySQL backend.

To begin designing our app we used Figma to create mockups of our pages. When implementing the designs in code, we found an existing template of an inventory application that came in extremely useful. We were able to use this existing code to incorporate tables, forms, pages, and more to our app. On top of that we were able to utilize its incorporation of Bootstrap to make sure we got a unique look and design for our app.

In addition to designing and deploying our web application we spent an extensive amount of time in regards to documentation, presentations, and design decisions. The project center gave us compliments on the quality of our documentation and presentations and even used them as examples the following year.

What I Learned

Scrum Environment
One of the biggest things I learned was the pressure of working in an agile scrum environment. We worked in two-week sprints, developing and turning in deliverables each sprint. We had sprint meetings after each to examine how we performed that sprint and plan ahead for the upcoming sprint.

.NET Framework and C#
This was the first time that any of us had built an app from the ground up. We had to take the ideas and desires of our client and turn them into a fully functional application. Throughout this process we got to learn how web apps are built with Microsofts .NET Framework using C# and a MySQL backend. It was definitely a long process with a lot of struggling and troubleshooting throughout, but I am really proud of what we accomplished.

Client Communication
Throughout the project, we met with two liaisons from our sponsoring organization, Kilowatts for Humanity. These weekly meetings helped us keep them up to date and gather their feedback as we developed our solutions for them. There were a few times when, as with every project, there were some conflicting ideas between client and developer. This allowed us to work on our professional communication and problem solving skills.

Media

Early mockups of our design for the pricing and inventory tool
Final home page
Final inventory table layout
Edit component form