Mobindustry merges with Apriorit,
a Specialized Cybersecurity R&D Company
How We Created a Full-fledged IoT Solution for a Power Bank Sharing Startup
Our client, a Chinese power bank sharing startup, needed full-cycle development for their whole IoT system. We created three technical specification documents, a cross-platform mobile application for Android and iOS, an application for power bank stations, and a backend with an admin panel
Background
Our client is a Chinese power bank sharing startup. As China is a mobile-first country and people use their phones constantly, our client decided to build a power bank rental business.
The power bank rental business plan involves three actors: customers who need to charge their phones on the go, owners of power bank businesses, and vendors who host power bank docking stations at their facilities.
We needed to create software that would connect these three actors and handle the service’s business logic. Before starting development, our first step was to create a technical specification for all three pieces of software.
To begin, we created three technical specifications, designed the applications, and performed full-cycle development of the backend, two mobile apps, and an app for docking stations. We also provided quality assurance.
Our goals
1. Create a clear technical specification
Our client came to us with a vision for their power bank rental system and an idea about its business logic and hardware to be used for power bank sharing. To make sure that all three parts of the software worked together, we needed a clear plan — a technical specification.
2. Design the MVP
Because the power bank sharing service industry is rapidly growing, time to market was very important for our client’s power bank rental company. We needed to review all the product features and determine which were absolutely essential for the first version of the product and which could be postponed. Moreover, our client needed a prototype to show to investors, so we needed to develop that as well.
3. Create a cross-platform app
The power bank sharing app needed to work on Android and iOS, and development needed to be fast. We chose a cross-platform technology to develop an app that would work equally well on both platforms.
4. Create an application for a power bank sharing station
We needed to build an app for docking stations and make sure that both customers and vendors could use it.
5. Connect power banks to the app
Power banks needed to connect not only to the docking station itself, using a physical connection, but also to the app. Our client’s customers need to know how many power banks there are at a certain station, so we needed to set up a dynamic connection between power banks, the dock station app, and the customer app.
6. Create payment logic
To avoid financial losses from payment processing fees, we needed to implement logic that would make payments less frequent.
Challenges
1. Extensive MVP feature list
The MVP ended up being rather big because of the complexity of the business model. This was our list of MVP features:
- Login
- Registration
- Phone number validation
- Google Maps integration
- Navigation and routes
- QR code scanner
- Menu
- Wallet
- Payment gateway integration
- Tutorial
- On-machine payments via credit card reader
- User profiles
- Referral system
- Past rentals
- Push notifications
- Analytics
- Registration/login/email validation
- Station app
- Admin panel
- Request assistance
Because of the budget and time limitations, we needed to simplify the MVP in order to enter the power bank sharing market fast. This was a challenge, as all these features were necessary for the system to work properly.
2. No technical documentation for docking stations
The first challenge we faced was a lack of documentation for the docking stations our client chose. Because of this, we needed to resolve all technical challenges with the stations ourselves.
3. Unequal distribution of power banks across stations
As docking stations are placed across the city — e.g. in shopping centers, restaurants, and supermarkets — there may be an unequal distribution of power banks. Some places are more popular, and some stations can quickly become empty while others become overfilled with returned power banks.
We needed to solve this issue with the help of our software to let customers know where they can get a power bank and where it’s best to return it.
Our solutions
1. To save time and money, we decided to simplify some features and postpone others. For example, we decided to put off NFC payments until later versions of the app and simplified push notifications, integrating them without deep links. We also implemented only two ways of registering and logging in: via email and phone number. Later in the project, we added login through social media — something we initially planned to do at the beginning of the project.
2. To resolve the issue with documentation for the docking station, we requested docking station hardware from our client. After we got the station, we needed to figure out how to connect it to the software, but we managed to do it rather quickly. IoT technologies are often associated with compatibility risks, but our low-level software developers helped us connect the docking stations to the power banks and the mobile app.
3. To help distribute power banks equally across stations around the city, we implemented a connection between serial ports (the port that connects a power bank to the docking station) and the docking station software. This connection detects how many power banks are currently docked and what their battery levels are. It then sends this information to the backend.
The backend, in turn, shows this information to customers, who are able to see where they can pick up a fully charged power bank. To encourage people to leave power banks at empty docking stations, we implemented a reward system that gives bonuses to customers who leave their power banks at a certain location.
We also implemented a map filter that shows the nearest locations with the most fully charged power banks.
4. To help our client avoid transaction fees each time a customer rents a power bank, we decided to implement internal payments that would allow customers to top up their accounts in the app. Then the system withdraws money from the user’s account instead of performing a transaction via a payment gateway. This helped to significantly reduce the number of payments through Stripe and save money.
5. To make the docking station more independent from developers, we created an app with two types of profiles and modes: one for customers and one for vendors. The vendor mode allows an administrator to set up a docking station, request support, set up Wi-Fi, and take a power bank without having to pay for it.
Our results
We managed to create a working software system that consists of a cross-platform mobile app, a backend, and an admin panel. Here is a list of everything we created for this project and the technologies we used:
- 3 technical specifications + wireframes – Google Docs, Balsamiq
- UI/UX design – Figma
- Cross-platform mobile app – Flutter
- Backend + admin panel – PHP, Yii 2, AWS IoT Core
Technologies we used for the mobile app:
- Twilio for SMS validation
- Google Maps (paid) for navigation to the nearest docking stations
- Stripe for payment processing
- Firebase for push notifications
Team members that took part in developing this project, their activities, and the total number of hours they worked:
Team member | Time spent |
1 Business analyst |
|
1 Designer | 113 hours |
2 Flutter developers | 550 hours (development + communication) |
1 QA specialist | 314 hours (2 apps + admin panel) |
1 Project manager | 160 hours |
1 PHP developer | 300 hours (backend + admin panel) |
If you’d like to create a similar project for the sharing economy, you can count on us. We have experience in scooter sharing and ride sharing. We at Mobindustry also helped to launch a power bank sharing service in Australia and is currently working on a similar project for our client from Kazakhstan. Don’t hesitate to contact our team for a consultation.