Project Screenshot

Lune

A mobile application that allows users to save money, share money, and take control of their finance

  • Our client’s request

    Alexis and Helal, the co-founders of Lune, saw a gap in the financial services industry in the United Arab Emirates. So they decided to create a mobile application that would enable users to create, join, and manage collaborative savings groups as well as send and receive money with the click of a button. 

  • Why do people need Lune?

    Lune features digital savings groups that are designed to offer the benefits of collaborative finance. With Lune, users can protect their individual savings against immediate consumption and save money without involving any financial institutions, so they don’t need to pay interest to a third party. Lune is transparent due to group regulation. Users’ deposits can be tailored to the income of the group. Lune’s functionality, including in-app transfers and automatic reminders, helps users make sure group payments are organized, on time, and convenient for all group members.

  • Solution

    We created a savings and payments app for iOS and Android that caters to English- and Arabic-speaking users.

    Collaborative savings groups is one of the oldest methods used by people in different markets across the world to save money. How it traditionally works is that a group of friends, family members, or even colleagues deposit a fixed amount of money every week or month and one member of the group takes the entire pool. The group ends when everyone has received their payout and is repeated if the participants are interested to take part again.

    Additionally, the app allows users to send money to contacts without using SWIFT transfers or traditional bank accounts.

User roles

icon
User

Users can create savings groups, be invited to groups, and easily send money to Lune contacts.

icon
Group admin

Group admins can create savings groups and invite members to them. They can also choose the subscription plan.

icon
Platform manager

The admin can manage the app’s settings, reports, and statistics through the admin panel.

icon
Super admin

The super admin is responsible for managing the app’s functionality and database. They also have access to settings, reports, and statistics.

Results

Duration:
June 2020 – October 2020
Team:
PM - 1 iOS - 1 Android - 1 Designer - 2 Backend - 1 QA - 1 BA - 1
Backend development

The Lune client is a mobile app written in Flutter. To build this mobile app, we benefited from a REST API that we wrote using Django. We used Celery and Redis for handling periodic tasks and PostgreSQL for database management.

Since Lune allows users to transfer money to Lune contacts and save money in groups, we implemented Dapi, the only UAE payment service that allows for transferring money between bank accounts. But since Dapi has little documentation available about the server’s functionality, we ran into some development issues. We discovered some of the necessary information on our own and arranged several meetings with the Dapi support team to talk about the operational details of the server.

Design

Our clients had a brand book when they reached out to us. Our task was to design the look and feel of the project based on this brand book. Over time, we also had to change several colors at our clients’ request. 

We designed Lune for English- and Arabic-speaking users, which is why we paid close attention to the positioning of elements when switching languages. For RTL design, almost all interface elements are mirrored compared to a left-to-right design.

The UI we designed is concise and minimalist.  

iOS and Android development

Application architecture

We created a cross-platform app written in Flutter. However, Dapi doesn’t operate with cross-platform apps, so we had to write plugins for each operating system. We used Swift to create a plugin for iOS and Kotlin to create a plugin for Android.

To speed up the processing of operations such as financial transactions, Lune supports partial data caching.

We used the BLoC clean architecture design concept for the user interface (UI). This enabled us to separate layers and not tie components together too much. It also allows us to change the app’s logic with minimal changes to UI components. Modularity offers the benefit of being able to change components without influencing other components and to add dependencies when required.

We worked on the basis of Modular Library, which provides the following features:
 

  • Automatic memory management
  • Dependency injection
  • Dynamic routing
  • Code modularization


Payment service integrations

To implement a payment gateway, we used official plugins by the flutter.dev team. However, these official plugins don’t support changing subscription plans. So, we needed to use additional plugins supporting this functionality created by an independent team.

The official iOS plugin can’t change subscriptions, so we had to change the UI so users understand they need to cancel their previous subscription before upgrading or downgrading.

Implemented features

Users can create profiles, create groups, invite members to groups they create, and be invited to other groups.

Lune lets users form digital savings groups. Lune allows users to create, track, and manage multiple social savings groups easily and transparently.

A group admin can invite members to a group. Each group can contain up to 12 members.

The group admin can set a fixed amount of money to be transferred by each group member at set intervals. The amount depends on the subscription plan chosen by the group admin. Subscription plans differ by the number of people in the group and deposit size. 

Each group member receives payouts at set intervals. For example, if there are five members in a savings group, the group admin might set a monthly payout frequency, meaning each member is paid once every five months. 

Lune Send allows users to send money to anyone, anytime, and without the need for a bank account.

Technology stack

Python icon
Python
Kotlin icon
Kotlin
Swift icon
Swift
Django icon
Django
Twilio icon
Twilio