Clusco
A marketplace for construction equipment and tools

Background Story
The founders of Clusco came from the construction industry and know the key pain-points their partners, clients and employees face on a daily basis. Searching and finding the equipment you need and where you need it has always been a pain. It may take hours visiting a number of different websites and making calls to enquire about availability. Clusco had a vision to build a unified platform to bring together customers looking to rent equipment; and equipment owners looking to maximize the value of their idle machinery and tools. The platform aims to ease the process by enabling users to search and book equipment items in a single, unified platform. Clusco selected Corner Case Technologies to develop the solution from the ground up to ensure the code was secure, maintainable, robust and scalable. More importantly, Clusco needed a trusted partner not only to write the code, but to develop the concept, drive the product roadmap, and engage with prospective clients and investors.
Primary target audience
Clusco connects people who are looking to hire construction equipment to those who are looking to make money off their idle equipment and tools. The platform welcomes both: businesses and individuals, enabling transactions in all forms: B2B, B2C, C2C. Traditionally, construction equipment rentals have had a strong presence in B2B and B2C relationship, however one of the unique aspects of Clusco is that it provides the means for individuals to participate in a C2C business model. The advantage for customers is that they benefit from the competition for products and often find items that are difficult to locate elsewhere. Not to mention that C2C applications are convenient because there is no need to visit a brick-and-mortar store.
Components
Our team worked closely with Clusco to define exact requirements and ensuring a thorough understanding of their business needs and expectations. We concluded the application will be a combination of several components:

Admin panel

Operator app

Web application for clients and suppliers

Webview-based applications
For customers & suppliers
Registration
We used social logins to ensure a frictionless, easy registration process. This required us to implement OAuth2 — a framework that enables applications to obtain limited access to user accounts on a HTTP service.

Account Switch
Initially we had two separate user accounts: client and supplier. However, after feedback from potential users, we concluded that clients and suppliers should essentially share the same product functions because more often than not a user would not only want to book equipment to rent, but also supply equipment to rent out without having to switch user account. We gathered the requirements, crafted personas, user stories, epics & task flow to be able to sketch different solutions. We created a solution to enable users easily navigate from one account type to another without the need to create several accounts or without the need to log out. Users were able to easily switch between supplier and client environments by using button slider on top right corner of the screen. Equipment owners/suppliers can execute a search and see their listing amongst search results, however we’ve put a restriction that does not allow them to order their own equipment.
Order management
When it comes to renting heavy equipment, we learned that both parties wanted more transparency on rental start and finish times. We created an order management flow that reflects such requirements. Once a user places an order, a supplier has to either confirm or decline the order. Unresponded orders automatically expire in 24 hours. Accepted orders go through several steps of approval, enabling users to view each stage of the order status.
Chat
When the order is confirmed by the supplier, both parties are able to communicate using a built-in chat function. A chat is connected to an order, making it easy to relate to a specific transaction.
Notifications
Each order status change triggers an email and web notification (if opened) allowing user to react immediately to order status changes.
Search
Searches are performed based on the equipment, times and location required and can be performed by either a registered user, or a guest user (without the need to register). Throughout the search function, the user is presented with a cost estimate, which is confirmed once registration is complete and the order is placed.


Returning flow
A returning flow reduces bounce rate by allowing returning visitors to access the site and execute searches without having to log in or re-register. By mapping out the users’ journey, the registration/login page is triggered only after the search results appear. We save the executed search. After the user logs in, they’re asked if they’d like to return to the previously saved order. If they do, they’re redirected to the saved URL which is later deleted from user state. In the modal we present the user context and compelling reason to login/register.
Schedule
Schedule is a tool for suppliers to view their bookings made via the platform and create their own custom bookings - this is a great way to indicate when the equipment is reserved for their own use, for example.
Operator app
For many small or large businesses, having an ability to add an operator and assign them to a specific order is crucial in rental management. To better meet the need of construction rental companies, Clusco decided to introduce a new ‘Operator’ role. This enabled users to rent heavy equipment with the inclusion of skilled workers to operate the machinery. Skilled Workers are registered as ‘Operators’, who have a native app, enabling them to see order details and log time spent working onsite during the rental.

For admin
The admin panel is one of the central elements of the system where customer and supplier profiles, and orders are managed. One of the key requirements for the platform was to find a way to categorize a wide variety of heavy machinery, tools, etc. Each type of equipment has different parameters and specifications. We created a fully configurable solution, whereby admin can define equipment types, categories, and parameters which can then assigned to specific types of equipment.

Engineering challenge
Notifications
The aim was to enable notifications on a variety of operating systems, requiring different configurations, logic and display for each OS. The initial choice was to use React Native Push Notification library, however later, during the testing phases, issues were identified on Android where it was unable to recognize the state when push notifications were enabled (specifically when the app was killed or ran in the background). The notification library identified more than 500 unresolved issues, a decision was made to switch to React Native Firebase Library to resolve the issues. React Native Firebase Library allowed the system to recognize required notification states regardless of the application status and redirect users to the right place when clicked. The Clusco system has a huge variety of notifications. For aggregating multiple notifications from chats, requests etc we used Stream-framework . For real time notifications via websockets we used Centrifugo
Technology stack
Frontend
Redux
React
Redux-saga
Websockets
Webpack
Sass
Backend
Django
Django rest framework
Redis
Postgres
Factory boy
Celery
Apps
React native
Redux
Redux-saga
Webview
React native
React push notifications
Server
Linux, Debian (Jessie)