Development with Flutter: MVP for an Agricultural Marketplace
Over the course of five years, Flutter has emerged as a favored language for cross-platform development. This popularity stems from its technical features: a user-friendly environment ensures rapid development and excellent user experience with various animations, smooth transitions, and so on. It allows for the creation of mobile apps at a native level while reducing costs by 20 to 50%. Moreover, Flutter inherently supports design adaptation for web and desktop apps.
Cross-platform mobile frameworks utilized by developers globally (2019–2022).
Source
Here is how we developed an MVP for a marketplace using Flutter from the ground up.
Objective
Develop a comprehensive IT solution for an agricultural marketplace, complete with an intuitive ad panel and straightforward search functionality. This will consolidate all agricultural market offerings into a single mobile app.
Background: concept and validated complaints from market players
Farmers frequently resort to numerous messenger chats to share ads about buying or selling agricultural produce. However, locating the desired products often proves to be a time-consuming task. Following a thorough market analysis, our client decided to streamline this process using IT.
Why Flutter
When choosing the development technology, it was important that the client was creating not just a mobile app from scratch, but a business product. They also lacked any web solution. With its flexibility and simplicity, Flutter is ideal for quickly implementing software prototypes and experimenting with various interfaces and features, both for startups and future scaling.
Several other factors also contributed to the decision to choose Flutter.
Cost-effectiveness in implementation. Had we opted for native development, we would have required two separate teams for iOS and Android. Both of which would need management. Despite this, we would not have ended up with identical apps. This situation can be likened to writing an essay on how one spent their summer: two close friends–following the same plan–will yield different results, despite spending all their time together. With Flutter, a single codebase and Material Design system ensure consistency and uniformity of the user interface across all devices, simplifying app design and testing.
In case of native development, businesses often implement features one after the other: first on one platform, then backend integration, followed by the other platform. This approach saves time when debugging the integration between the mobile app and the backend. This issue does not even come up with Flutter, as we are working with a single project.
Meaning that development, backend integration, design, and testing are all required in one go. Naturally, this saves both time and money.
It is just what we needed. Doubling costs made no sense considering that the client's audience was not yet established and their preferences were still to be determined.
Moreover, if the app is blocked on iOS, the client will not lose money or discard the code.
Flutter limitations did not affect the client's product. In theory, Flutter can be used to solve almost any task, with a few exceptions:
-
It is not appropriate for things related to video streaming and performance. This includes games, AR, VR, media players, and so on.
-
Products requiring manual memory management, like Photoshop, cannot be implemented either.
-
This framework is not designed for heavy loads that occur when the audience is vast, like with Ozon, for instance.
However, we understood that any potential product scaling would exceed these constraints. An agricultural marketplace is not a game with intricate plot and graphics. Plus, we were not at risk of a heavy load: it is unlikely that all Russian citizens will turn into farmers.
Developing the client's concept
Initially, we joined the project as a dedicated team consisting of an account manager, backend and Flutter developers, and a designer. We collaborated with the client's product owner.
We discovered that the initial step involves drafting a technical specification for the product implementation.
Drawing on our expertise, we suggested taking control to expedite the processes – a proposal our client has backed. Consequently, a project manager and an analyst joined the task.
We compiled a list of essential features to implement the MVP version:
-
authentication via the client's service;
-
user and company profiles;
-
transactions;
-
keyword-based search;
-
push notifications;
-
analytics (Firebase).
Solution
Transactions, being the app's primary function, are conducted in chats. The client opted for the XMPP protocol for this task, leading our Flutter developers to utilize the Xmpp Stone library. To facilitate transaction negotiations for users, we implemented additional features not initially included in the XMPP protocol. These include message history, group chats, and file exchange (photos, documents) support.
We utilized the client's service for authorization, integrating the mobile all through request proxying. Every individual and/or company possesses a system profile and a rating, the latter being dependent on the number of successful transactions. This allows sellers and buyers to find the most trustworthy partners.
Additionally, we devised a search function based on keywords, categories, ratings, and regions, facilitating user interaction.
For MVP development, we incorporated Firebase analytics to assist the client in mapping user activity, identifying frequently used functions and areas for improvement or enhancement.
Outcome
Over a span of six months, we have developed an MVP for the agricultural marketplace: the product is primed for market entry and capable of supporting five thousand active users. End users will be able to trade a wide range of agricultural produce, while the client can timely modify the app.
Flutter is synonymous with flexibility and adaptability
It offers an array of tools and libraries for developing adaptive and flexible interfaces that can be effortlessly tailored to various devices and screen resolutions. This is always advantageous, particularly when launching a product, as it helps prevent unnecessary costs.
For instance, we have started receiving requests from clients to develop websites using Flutter. In such instances, a portion of the code can be repurposed for both desktop and mobile apps. Moreover, why develop three separate apps for Linux, Windows, and MacOS when one would suffice? The same principle applies to mobile operating systems. Flutter is now accessible for wearables such as watches and bracelets.
Consistency of the user interface simplifies the development process and makes the product more attractive to users who typically use various devices to access services.
Explore more case studies on mobile development for iOS and Android.