project

zuup Roam

EV ChargingReact NativeUI/UX DesignCross-Platform Development
app

zuup is an Australian eMobility company. Its mission is to make EV charging simple, reliable, and accessible for every Aussie driver. Their app, zuup Roam, lets EV drivers find, charge, and pay across multiple public charging networks with no need to use separate apps for each provider.

Key insights about zuup:

110+ charging locations across Australia

zuup Roam connects drivers to chargers across multiple public charging networks from a single app.

200+ charging stations and counting

The network of available charging stations is growing as new charge point operators integrate with zuup Roam to widen coverage for Australian EV drivers.

Built for Australia's EV reality

Unlike charging station operators who treat apps as a side product, zuup builds its entire business around user experience. They keep focusing on the gaps that existing network apps leave unaddressed.

Year

2024

Country

Australia

Team

5 people

Commits

5456

Development

35 weeks

Challenge

There were existing charging apps on the market, but none that truly put the driver experience first. zuup wanted to change that and break down the barriers of EV ownership.

zuup came to us with a clear vision: build the most convenient eMSP app for Australian EV drivers, with eRoaming under the hood. It had to be a single app where drivers could find, start, and pay for a charge across multiple networks.

The primary challenges of the project were:

1. Third-party backend dependency

Instead of building a complex backend from scratch, we integrated a platform that connects to charge point operators (CPOs) already on its network. This simplified the infrastructure. Instead of handling low-level OCPP protocol details for each CPO, we could focus entirely on building the app on top of the existing backend.

But this also meant the app's core functionality depended on a third party. Our team had to deal with charger availability data and session management. Isolating bugs, managing constraints, and coordinating around this dependency also required constant attention throughout the project.

2. UX with no clear reference point

Our team had to define from scratch what truly mattered to EV drivers. A key insight was that an EV trip is destination-based: drivers don't just think about charging, they think about what they'll do while charging. This meant building the app not around the charging session itself, but around the broader user experience. Our task was to make EV ownership in Australia simpler and more confident at every step.

3. Feature prioritization

It’s easy to add features when we build apps from scratch. The real challenge was to decide where to begin. The most important features to build first, like finding the charging station, were the least visually exciting, while more compelling features like map interactions or smart filters were fully within the team's control.

Balancing what the client wanted to see with what needed to come first, and managing work around external dependencies, required ongoing prioritization of scope throughout the project.

4. Scalability from day one

With no existing user base, scalability issues wouldn't surface early. But ignoring them would create problems later. Every feature needed to be built with growth in mind. Our team had to ensure that as the user base expanded and new CPOs joined the network, the app could handle it without major rework.

Product

Process

The project team includes 1 Tech Lead, 1 Developer, 1 QA Engineer, 1 UI/UX Designer, and 1 Project Manager.

Before writing a single line of code, the team ran early design workshops to shape how the app would look and feel. Then, we tested a Figma prototype with a group of real users to collect early feedback before development. This helped validate the product direction and catch UX issues early.

The team followed an iterative approach. We built and validated features incrementally, keeping a close eye on what depended on third-party integrations and what could move forward independently.

We shipped the first app release in 2025. The project continues as an ongoing partnership with new features and iterations in active development.

Pre-project - 6 weeks

Scoping

Planning

Backlog Setup

Design - 4 weeks

UX-Wireframing

Ul Design

UX-Prototyping

Customer Interviews

Agile development - 22 weeks

App Development

FrontEnd Dev

API & BackEnd

QA & Testing - 2 weeks

QA & Testing

Testing with 1st customers

Release - 1 week

Deployment

Release

Solution

The result is a cross-platform EV charging app that covers the full driver journey. Here's what we built.

1. Onboarding & user profiles

  • The app supports three profile types for individual drivers, business users, and fleet managers (Personal, Business, and Corporate/Fleet profiles).

  • We simplified the onboarding flow. Users need to fill out only the essential info (email, phone, name). The rest of the fields can be completed during regular app usage. This reduces friction at the start and gets drivers to their first charge faster.

  • Adding a vehicle is also simple. Users enter their license plate and the app pulls all relevant data automatically from the Australian vehicle registry.

2. Map & station discovery

For trip planning, Google Maps search lets drivers find stations along a route or at a destination. Each station shows:

  • Custom driver ratings and nearby facilities

  • Real-time availability and pricing

  • A Price Graph showing how rates change throughout the day

  • Popular Hours based on actual charging session frequency

  • Facilities near the charging station

3. Charging & session management

Drivers can start a session via the app. During charging, they can set limits by time or battery percentage, and receive real-time push notifications on session status. On iOS, a Live Activity widget on the lock screen keeps the session visible without opening the app.

4. Payments & billing

Payments run through Stripe, with an email invoice sent after every session. To improve the payment experience, we moved confirmation to the start of the session. So billing happens automatically on completion, with no extra steps.

We also added app subscriptions to offer session discounts for frequent drivers.

Product

5. OTA updates

Our team used Expo's update infrastructure to push fixes to all users without App Store or Play Store review. It helped us compress the update cycle from 20+ hours to around 30 minutes.

Success for zuup from a:

Project Manager Perspective

The app was built around a third-party backend, and we managed risks before they became problems. The team held ongoing conversations about error handling and how the app should behave if the provider goes down, caching strategies ahead of user growth, and preventing duplicate requests to keep the system stable as the network scaled.

We didn’t wait for something to break. Instead, we planned for it and validated decisions at each stage of the project.

Developer Perspective

Our engineers took ownership of technical communication directly. This kept the team unblocked and meant problems got solved rather than passed around.

The billing integration is where the team's attention to detail really showed. Beyond the standard Stripe setup, we caught and resolved a tricky edge case: Apple ID login with Hide My Email and Private Relay affecting Stripe customer updates and payment methods. That kind of find is what separates a working integration from a production-grade one.

UI/UX Perspective

Our designer was responsible for the design entirely from scratch. Every screen, flow, and interaction was designed with the Australian EV driver in mind. We built the experience around the journey, not just the charging session.

QA Perspective

The team took a systematic approach to quality. We used Storybook and a component catalog alongside a dev menu for rapid UI state regression. This strategy helped our QA engineers test edge cases and catch issues early. This setup also made regression testing faster and more reliable across every release.

DevOps Perspective

The backend runs on DigitalOcean App Platform, connecting a Node.js (TypeScript) API, Hasura GraphQL engine, and managed PostgreSQL database. zuup relies heavily on webhooks for real-time session management, and the reliability of this layer is critical. DigitalOcean handles orchestration, SSL, and scaling automatically, so the team stays focused on product.

Deployments are fully automated via GitLab, which allows the team to ship updates at least once a week without manual overhead. To keep the integration logic solid, we also built a custom OCPI simulator. We did it to test webhook handling in an isolated environment before anything reaches production.

Business and Roadmap Perspective

Popular EV charging apps carry legacy constraints and limited flexibility. Building from scratch gave zuup the ability to adapt. We analyzed the existing market, were in constant contact with users, and iterated based on real feedback. With this approach, zuup has been able to compete with players that have a significant head start.

The foundation is in place, the user base is growing, and the roadmap is full. It’s a project that's just getting started.

Tech Stack

  • React Native

  • Expo

  • DigitalOcean

  • Google Maps

  • Hasura

  • GraphQL

  • Postgres

  • GitLab CI/CD

  • Typescript

  • NodeJs

Our blog

All blog posts
EV Charging Mobile App Development: How to Build a Smart Solution

EV Charging Mobile App Development: How to Build a Smart Solution

Testimonials

SHUFFLE THROUGH THE SLIDER. DRAG OR SWIPE

Message us

By sending this form I confirm that I have read and accept the Privacy Policy

Thank you

Your message has been sent.

Our manager will contact you as soon as possible. Have a nice day!

To Home Page

Contact

Contact E-Mail

hello@stormotion.io