My first foreign project
Solar Service Group
as Full Stack Developer
Trusted Australian company that specialise in solar battery storage solutions, service, maintenance and repairs of PV solar systems nationally.
How it was?
I got involved with this project back in 2017 and it has become the longest-running project in my remote job at Aussiedev. By the way, this was far from the beginning of this project, it had existed for several years. This is an Australian company specializing in the installation and repair of solar panels, batteries and everything related to them. Their website only has general information about the company, articles and a feedback form, so all my work was on the internal CRM system. Technologies already known to me were used here: PHP 5.6, MySQL, jQuery (it used to be everywhere) and the first version of the Yii framework.
The admin panel that I saw here was significantly different from the one I saw in dok.ua. All functions were more intelligently located, and instead of pure SQL, which was widely used at my last job, ActiveRecord was used here. I liked it and learned it quickly. I've found that it's quite handy if I use it correctly in conjunction with data providers, iterators and eager loading, otherwise everything will run slowly and eat up a lot of memory. I also saw for the first time on this project how to build separate applications on the same code base (api, backend, frontend, console).
At the beginning of my work, from third-party services, only services for sending emails and SMS were used here. But over time, I had to connect more and more new third-party services that the business needed. For example:
- A service that collects leads from numerous landing pages of the company.
- Service FormBay, where potential customers filled out application forms for the installation of solar systems.
- Payment service Secure Pay, to pay for orders with a credit card.
There were many such services and they all provided different types of APIs, these are REST and SOAP. I learned how to write adapters for such services so that my colleagues and I can quickly and easily connect new ones when needed.
This company employs quite a lot of employees, and each of them should have their own rights in the CRM system - what they can do and what they cannot. Also, over time, subsidiaries appeared, which should not have been able to see each other's orders. To do this, I made isolation of companies inside the system, as well as an extended system of roles and access rights. I also developed an API to synchronize data between our system and the systems of subsidiaries. Thanks to this, I have a better understanding of these issues.
Achievements
After the company decided to send out emails and I developed a separate system module for this, it became necessary to collect incoming mail. People who were interested in installing solar systems began to respond to letters sent to them and their answers came to corporate mail. The email service we used provided an API to work with it, but it was quite expensive for the company. Therefore, I was assigned to write my own solution for working with mail via the IMAP protocol.
Daemon I designed:
- Connected to the mail server
- Read email and all information about it (sender's address, subject, CC, dates, etc.)
- Downloaded all attached files
- Created a new entity for it in the system and saved it to the database
- Moved the email to a specific folder on the mail server
After that, the letter was available in CRM on the order view page (or on the lead page if this person had not ordered anything yet), which made it possible to communicate with the client via email right there. All this worked quite slowly due to the specifics of the protocol, but it greatly simplified the work of the company's employees, and also saved a lot of money for the business.
Some of the company's most important employees were solar installers and so-called "field agents" who communicated with potential customers, collecting information about their home and the equipment they needed. The admin panel on this project was quite cumbersome and not designed for mobile devices, and these employees needed to upload photos and write the collected information into our system. Of course, they were forced to do it from their smartphones or tablets.
I was given the task of creating a simple mobile-friendly web application for installers and field agents. It was interesting to me and I completed it quite quickly, paying attention to the responsive interface. On the frontend, I used the Vue library that I already knew, because it was well suited for such tasks, and the application communicated with the CRM system using JSON.
Employees can now use their smartphone
- View their schedule, assigned tasks and location addresses
- Create new leads
- Easily upload photos of the house, solar panels and their completed work
- Generate contracts and immediately sign them on the touch screen with the client
- Make a payment with a credit card
- Change the status of a job by marking it as "completed".
It wasn't the coolest app, and it wasn't the hardest either. But it helped me to delve into the specifics of the work of employees and study it better in order to make tools even more convenient for them.
The challenge
After launching the email campaign system, incoming customer replies were delivered to the corporate email. The existing email service offered an API for integration, but its high cost made it impractical.
The solution
I Developed a custom daemon using the IMAP protocol to connect to the mail server, read and process emails, download attachments, save them into the system's database, and organize them into appropriate folders. This made emails accessible directly within the CRM, enabling smooth communication with customers and significantly reducing costs.
The challenge
Field agents and solar installers needed to input data and upload photos while on-site, but the main admin panel was not mobile-friendly.
The solution
Created a lightweight, responsive web application optimized for smartphones and tablets using the Vue framework. The app integrated with the CRM via JSON and allowed employees to manage tasks, upload photos, create leads, sign contracts digitally, take payments, and update job statuses - all from their mobile devices.