Stazione di ricarica Caricami su un bancone

Caricami

LOW BATTERY?
Caricami provides you with power on demand through a network of shared power banks and smart charging stations located in your favorite venues.

Docker Swarm
CI/CD
PHP
Symfony
Angular
Node.js
Golang
Flutter
Check the website here

Why and how

Caricami was born from the frustration of restaurant owners who were tired of having to answer the usual question: "is there any place where I can charge my phone?"

Initially we were tasked with the design of a battery-powered wireless charger to lend to customers, but it quickly became clear that the custom battery charger design would not be a sustainable path and that it would be a hard-sell. We then decided to take inspiration from the booming powerbank rental economy in Asia and after some initial testing, all the founding partners were excited to move forward.

Requirements

The main goals we had, as far as the technical development goes, were:

  • full control over the data
  • native or near-native mobile app performance
  • Android and iOS app availability
  • low-fee credit card payments (for micro-payments)
  • ability to manage deposits
  • scalable IoT management system

Additionally, from a management point of view, we were asked to bring our expertise in terms of product validation, startup fundraising, go-to-market strategy and supplier management (especially with respect to the CE mark and the logistics of shipping cargo from China).

MVP

In order to successfully close a seed round, we developed an MVP that showed potential investors how the system could work, the kind of performance it could have and the physical product.

The initial prototype did not have a payment method yet but it was already interfaced with the physical devices in a scalable way.

Due to the time constraints and the UX requirements, we decided to develop the mobile app using Flutter, a framework from Google that allows the development of cross-platform apps with have excellent performances.

Sourcing

Thanks to our experience in managing complex supply chains in China, especially in the field of electronic devices, we were able to evaluate more than 10 potential suppliers and find the most suitable and reliable one for our use case.

Software architecture

The backend infrastructure is based on a Docker Swarm based private cluster in an EU data center. The system comprises several services, each one of them dedicated to solving some specific business needs. Among the many technologies present, we are using:

  • Golang to handle the TCP/IP communication with the hundreds of charging stations installed in the venues. Golang was chosen due to its native support for scalability and goroutine based collaboration.
  • PHP (with Symfony framework) to handle the business logic. Given our experience with Symfony, we felt very comfortable developing all the business logic (rental flow, payments, couponing, push notifications, etc...) with it. Moreover, we chose to use Swoole instead of the classic Nginx + PHP-FPM setup to squeeze every last drop of performance we could from the system.
  • Node.js for some auxiliary microservices.
  • Angular for the management dashboard (which allows us to monitor the system, create personalized coupons, send notifications, and so on).
  • Logz.io / Prometheus / Alertmanager / cAdvisor / Grafana / Portainer for monitoring the swarm and its resources.

App

The App, entirely designed and developed by us, is very flexible and allows us to optimally track our user experience during its usage so that we can quickly iterate between different designs and product pricing.

During the App development we encountered some limits with respect to what could be achieved with currently available open-source libraries and SDKs and therefore we contributed to numerous open source packages published on pub.dev and also released our own wrapper for the Radar.io SDK available at our pub.dev profile.


3/7

Have a project?

Tell us about it

We would love to get to know you and what we can do together. As we are a fully remote company, the best way to do so is write us through the form below. We will then get back to you and we will schedule an introductory call so that we can better understand your needs and how and if we can help you.

Sungazer OÜ - 14435954
Narva mnt 5, 10117, Tallinn, Estonia

Italian Branch - VAT IT03928220130
Via Armando Diaz 58, 22100, Como, Italy

© 2021 Made with love by a fully remote team, using Angular + Scully + Directus + Docker Swarm and a bunch of other cool technologies