Project Miniclient — Introduction

Oleksandr Leushchenko
Tide Engineering Team
4 min read4 days ago

Introduction

Have you ever wondered what it looks like to work on an enterprise mobile application with more than 2.3 million lines of code in a team of 60+ mobile engineers? Or do you feel challenged by the need to scale your own project without knowing how? Well, this series of Medium blogs could help.
The tutorial will walk you through the core principles, methodologies, and technologies we use at Tide. So you too could deploy the same approach to your own work.

To make it more fun we wrote it in the form of a codelab with homework that you may do if you want to get the most out of the tutorial. Our sample project leverages the Marvel Comics API to build an application about superheroes. While this toy project may not illustrate all the complexities of our main banking application, it reflects the core principles we use in our development process.

The tutorial consists of 4 parts:

We recommend you read them in this order as each next layer is built on top of the previous one.

Let’s start!

Project Structure

Diagram with three layers: application on top, feature in the middle, and utilities at the bottom.

Our codebase consists of the following areas:

  • Utilities. These are essentially sets of tools or helpers that perform common tasks used throughout the application. Extracting this code into reusable packages promotes DRY (Don’t Repeat Yourself) principles, makes the code more maintainable and reduces the likelihood of errors. It also allows developers to easily find and use existing solutions, rather than coding the same functionality multiple times.
  • Features. These are the building blocks of the application that implement the business logic, essentially providing the functionality that the end users interact with. Each feature package is responsible for a distinct part of the application, such as managing user accounts, processing transactions, or displaying superhero information in the context of our toy project. By packaging these functionalities separately, it is easier to maintain and scale the application. For instance, if a new feature needs to be added or an existing one needs to be updated, the changes are contained within one package, minimising the risk of unintentionally impacting other areas of the application.
  • Application. This is the application package that combines different features to provide a coherent and comprehensive product for the users. It acts as a sort of ‘glue’, integrating various feature packages and enabling them to work together seamlessly.

This separation also facilitates collaboration in large teams, as different teams or team members can work on separate feature packages without stepping on each other’s toes. It aligns well with Agile methodologies and microservices architecture.

Notice that utilities can depend only on other utilities, features — on utilities. An application can depend on anything. If you want to learn more about our architecture, check out our talk “Writing Flutter Apps in Lego style” at the Flutter Vikings conference.

First Things First

Let’s create our initial project, shall we? Do the following:

  1. Create a root directory for the Miniclient project (we call it “miniclient”, but you may pick any name you like)
  2. Inside this directory, create 3 more folders: app, feature, utility.
  3. Inside the “app” folder, create a new Flutter app with the following command:
flutter create --platforms=android,ios miniclient

That’s the structure you should get:

Project structure with “utility”, “feature”, and “app” subfolders. The “app” folder has “miniclient” subfolder.

For now, the miniclient folder contains a default Counter App example. Don’t worry, we’ll come back to it, but first, let’s dive into the utility layer.

About Tide

Founded in 2015 and launched in 2017, Tide is the leading business financial platform in the UK. Tide helps SMEs save time (and money) in the running of their businesses by not only offering business accounts and related banking services, but also a comprehensive set of highly usable and connected administrative solutions from invoicing to accounting. Tide has 600,000 SME members in the UK (more than 10% market share) and more than 275,000 SMEs in India. Tide has also been recognised with the Great Place to Work certification.
Tide has been funded by Anthemis, Apax Partners, Augmentum Fintech, Creandum, Salica Investments, Jigsaw, Latitude, LocalGlobe, SBI Group and Speedinvest, amongst others. It employs around 1,800 Tideans worldwide. Tide’s long-term ambition is to be the leading business financial platform globally.

LinkedIn

--

--