See all articles

Delivering Fast MVPs on a Limited Budget: A Node.js Tale in the Solar Industry

In today's fast-paced world, delivering quality software products quickly and within budget is the ultimate goal for any engineering team. Our client, a major player in the solar industry, entrusted us with this task due to our expertise and experience in the field.

In this case study, I'll share our journey of using AWS technology to meet our client's goals, the challenges we faced, and the milestones we've achieved.  We'll also discuss how we plan to continue delivering value for our clients.

The client's goals

Our client's main objective is to simplify installing solar panels through a user-friendly web application. The web app (CRM) will help organize and process files for contractors and engineers involved in the solar panel installation.

The contractors will use it to order the panels, while engineers will use it to manage the physical installation process. The client wanted the app to mirror their business processes, primarily managed through Excel files and emails. 

With this in mind, our task was straightforward: develop a web application that can handle these processes more efficiently.

Our focus was on improving 3 main aspects:

1. Organizing documents

The Client's processes were plagued with chaos due to the large number of files and emails involved in solar installations. We aimed to create a system to effectively organize these documents and make workflows more efficient for the Client's customers. This would enable them to initiate projects effortlessly.

2. Improving communication

Constant e-mail exchanges between contractors, and engineers were causing delays and confusion. Our goal was to build a solution to improve communication between these two parties and reduce the reliance on emails.

3. Simplifying operations

Using Excel files complicated business operations, leading to inefficiencies and errors. We aimed to develop a user-friendly web application that would simplify these processes and make them easier to manage.

What We Accomplished in the First 3 Months

Within the first 3 months of the project, we achieved significant milestones that set us on track for success. 

Created user access roles and permissions

After careful consideration and discussions with the client, we established specific user roles on the platform and defined their corresponding permissions. This allows for effective access control and ensures that only authorized individuals can perform certain actions.

Simplified task management

Our system automatically notifies employees via email when a task is completed or assigned to them.This keeps everyone updated on project progress and helps manage tasks more efficiently.

Eased file upload process

Our web app now allows easy file uploads, eliminating the need for email-based file management systems. This ensures that all files are stored and managed in one central location for easier access and organization.

Customized guidelines for legal requirements

We have implemented customized guidelines for each project to ensure compliance with state laws and regulations. This ensures that all solar installations are designed in line with legal requirements and utilizing services efficiently to minimize additional costs.

The Tech Stack We Used for Project Requirements

We carefully selected our tech stack based on the specific requirements of the solar industry.

For the backend, we used NodeJS and PostgreSQL, building upon our past experience with NodeJS in a similar solar panel project.

NodeJS allowed us to efficiently build the API for the front-end and provided a scalable environment for future growth. PostgreSQL was the ideal choice for our database needs because of its strong relational data querying capabilities and ability to handle analytical data processing.

To ensure robust access control, we incorporated the Cognito AWS library with NestJS, a powerful combination that met all security requirements. The NestJS documentation was a valuable resource during project initialization. 

We also utilized Swagger and Postman for efficient project communication and documentation. Swagger helped us generate clear and comprehensive project documentation, and we additionally tested the API with Postman to ensure that everything is working as it should.

Overall, the combination of these tools and technologies proved to be a successful solution for our client's specific needs in the solar industry. 

Quality Assurance

Ensuring high-quality deliverables is a top priority for us. Here's how we achieved it during the project: 

Testing Based on Client's Requirements

Our Client originally intended for their internal team to manage the testing process. However, we proposed a different approach: providing them with a working product for the final testing instead.

We started using Postman for simple models and relations, then expanded to integration and unit tests as the project grew in complexity. NestJS testing framework helped us proactively prepare tests to validate general logic and specific client requirements presented in a "User Story" format:

As a [persona], I [want to], [so that].

With this approach, we identified and fixed any issues early on, ensuring a smooth project delivery.  

Continuous Integration and Deployment (CI/CD)

For client login, we used Cognito authentication. Cognito Groups simplified access management.

For deployment, we chose Amplify for the front-end and AppRunner for the back-end. Amplify’s platform-as-a-service nature simplified configuration, allowing for swift deployment from a GitHub repository. To ensure the highest quality, we developed comprehensive integration tests that addressed key business needs.

Using GitHub's actions, we automated tests for each code update and deployment. This helped us catch any issues early on and deliver a stable and reliable final product for our client. Amplify also made it easy to identify changes and initiate deployment after merging a pull request into staging or production. 

We have a staging environment to facilitate collaboration with our client and ensure that the final product meets their expectations. Before any changes are deployed to the production environment, they are tested in the staging environment to catch any potential issues or discrepancies.

This allows our Client to review and provide feedback on the changes in a controlled environment before they are released to the public. It also enables us to make any necessary adjustments or improvements based on their input. 

Overall, our focus on quality assurance helped us deliver a successful project within budget and on time.

The Road Ahead: API Exposition and Future Development

Our next goal is to integrate an external CRM for our client, automating the project creation process and reducing manual intervention. Our extensive experience in this domain makes us well-equipped to tackle this challenge. 

We also plan to add functionality for managing invoices per project and keeping a transparent record of services paid by each customer. This will give our clients an efficient and organized way to track their project expenses.

Final Thoughts

We improved our client's solar industry operations by simplifying the installation process through a user-friendly web application, organizing documents, communication, and operations more efficiently. By implementing customized solutions, we reduced inefficiencies associated with manual processes, ensured compliance with legal requirements, and made project management more transparent, ultimately reducing costs and enhancing overall business performance.

We all aspire to the perfect combination of a great product, minimal cost, and quick delivery—it's like trying to find a unicorn. However, we made significant progress toward this goal by carefully balancing scope, cost, and time throughout the project.

Our guiding principle was simplicity—using modern, proven cloud solutions that are easily scalable instead of overengineering our approach. This allowed us to make strides in achieving a harmonious equilibrium among scope, cost, and time. 

We are proud of the progress we've made so far and look forward to continuing to deliver high-quality projects for our clients in the future. Thank you for choosing us for your project needs. 

Do you own a solar panel business and struggle with organizing installations efficiently? Contact us today to discuss how we can drive your business forward.

Read Similar Articles