Technology behind Macellan SuperApp

Burak Çalık
Macellan
Published in
8 min readApr 10, 2022

--

What is Macellan SuperApp

Macellan SuperApp is an advantageous application for anyone who wants to take advantage of the campaigns, make their payments securely with QR codes, and use the wallets of many brands in a single application.

Shopping quickly without waiting in line, sharing a wallet’s balance that you choose with anyone and anytime you want, and taking advantage of the campaigns are waiting for you at Macellan SuperApp!

Business Advantages

Macellan SuperApp is a platform where your customers can create a digital wallet specific to your business and pay with a QR code. Income from digital wallets goes directly into your account. Moreover, you will not pay license/maintenance fees or subscriptions for this service.

The SuperTeam

Macellan SuperApp team is passionate to deliver high quality, high performance, beautiful web and mobile apps with user experience in mind. We have a team of well talented and qualified developers and designers, expert in their respective domains.

Tech Stack

Our aim is to make the development process a pleasing one for the developer without sacrificing application functionality. Happy developers make the best code. To this end, we’ve attempted to combine the very best frameworks and tools.

Macellan SuperApp is solid yet scalable and maintainable application. To achieve this we follow SOLID principles, test-driven development with almost %100 code coverage and Domain-Driven design pattern. Our tech stack include;

  • PHP ecosystem (Laravel, Composer, Swoole) and related design patterns.
  • Golang for micro services.
  • PostgreSQL as main database engine.
  • Redis as message broker, queue store and cache engine.
  • Both React.js and Vue.js front-ends.
  • React-Native and TypeScript for truely native mobile app development.
  • Gitlab CI/CD for continuous build, test and deploy.
  • Figma and Adobe XD for UI/UX design and prototyping.
  • Google Cloud for computing.

Back-end

We mainly use Laravel in our backend which is fine-tuned for building professional web applications and ready to handle enterprise work loads. It provides amazing developer experience while providing robust tools for dependency injection, unit testing, queues, real-time events, and more.

Despite our main backend is a monolith application with domain-driven design pattern, we also have a few micro-services developed on Golang for some specific cases.

Reduced Time To Market

With increasing popularity, the competition also increases. In the digital world, even a second matters. When you decide to go live with your business, it is not just about how good is the developed app but also help fast is the app launched. Laravel enabled us to kick-start Macellan SuperApp to market without compromising top-notch security, performance and quality.

Performance

We use Swoole to serve our app instead of classic Nginx+PhpFpm setup.

Swoole is an application server, enhances the efficiency of your PHP applications and brings you out of the traditional stateless model, enabling you to focus on the development of products at high scale, brining event loops and asynchronous programming to the PHP language. Swoole has been stress-tested and proven in high-traffic production environments.

Swoole boots the application once, keeps it in memory, and then feeds it requests at supersonic speeds. See the below benchmark to understand how Swoole performs against some other languages.

Ref: Benchmark PHP Swoole vs NodeJS vs Go | by Rio Astamal | Medium

Tests and Deployment

We have fully automated our beta and production deployment process using Gitlab CI/CD tools.

Our pipeline checks for code quality, static analysis, phpunit and coverage report, then creates new builds for each version.

In order to achieve zero-downtime deployment, we keep the instances with the previous build running until the new instances are ready. When everything is up and running, load balancer redirects the requests to the new version.

Zero-Time Onboarding

The default Laravel application structure is intended to provide a great starting point for both large and small applications. Which is also beautifully documented. We didn’t change the default structure so much. So every Laravel developer knows where to look at, where to start on their tasks. It enabled us to achieve zero-time developer onboarding.

Database and Server Infastructure

We use PostgreSQL for our main database engine. All of our server infastructure is in Google Cloud Platform. We use their fully managed database service for PostgreSQL and Managed Instance Groups for backend services.

Fully managed SQL

Google Cloud SQL automatically ensures our database are reliable, secure, and scalable so that our app continues to run without disruption. Cloud SQL automates all our backups, replication, encryption patches, and capacity increases — while ensuring availability.

Managed Instance Groups

Managed Instance Groups (MIG) let us operate our backend on multiple identical VMs. We make our workloads scalable and highly available by taking advantage of automated MIG services, including: autoscaling, autohealing, regional (multiple zone) deployment, and automatic updating.

When our app require additional compute resources, autoscaled MIGs can automatically grow the number of instances in the group to meet demand. If demand drops, autoscaled MIGs can automatically shrink to reduce our costs.

Data Protection and Privacy

We are committed to complying with applicable data protection laws. We are always working to stay compliant. Since we do not store any personal data or sensitive user information, it is easy to stay legally compliant.

Google Cloud Platform is also PCI DSS Certified as this announcement in 2014 and their official doc clearly state that.

Security and Stability

Security and stability is an important aspect of a fintech application. That’s why we choose test-driven development. Even though we have almost %100 code coverage for back-end tests, Macellan SuperApp is periodically checked by expert teams for security vulnerabilities.

An important key decision that we take for security is that we never store any sensitive user information. Although we do not keep any credit-card information, the card information does not even pass through our backend. So there is no chance by mistake for any security vulnerability. If it wasn’t enough, we don’t even store any hashed passwords like any other application, because there is no password in our app. Users can only access to their accounts via one-time password (OTP).

Thus we reduced development related human-error rate to almost zero.

Front-end and Mobile

We use both Vue.js and React.js for our front-ends. Vue.js perfectly combines with Laravel applications, so our Laravel developers can easily develop UI’s using Vue.js. Our UX Designers always works aside with the team to keep everything tidy and beautiful.

On mobile, we use React-Native to develop truely native cross-platform applications. React-Native have the largest, mature, vast community. Many successful, prominent market players using React Native. It is easy-to-learn if you are already familiar with front-end development.

We use domain-driven design in our mobile app structure too. We have completely separated module directories in our app, every developer knows its own domain. When a new developer starts working on a task, it knows where to look at, where to work on.

React-Native for the best UX!

User-Experience is a very important aspect for our us. We want the true native feeling, we must never compromise from speed and usability. But native development is hard, and it also comes with a high-cost in many aspects, So we have to choose cross-platform development so save time and money. But which cross-platform framework has the true native feeling?

We didn’t choose any old-school hybrid platforms or Flutter. Flutter has its own rendering engine, so it basicly faking the “Native UI” and “Native Feeling” like the old-school hybrid platforms. Even though Flutter claims its fast in benchmarks, the real user experience is not. You can easily detect any Flutter app on market by just scrolling in their iOS app. Because of the UI is being rendered in Flutter’s canvas, its scroll behavior and physics is also faked and feels very slow and choppy like general user-experience.

React-Native on the other hand, uses a bridge between native UI and Javascript. So applications developed with this technology not only have a native look and feel, what you see on screen is true native rendered by OS itself.

Native feeling is very under-rated, but also one of the most important key point to build a better customer satisfaction. So in order to provide positive experiences, and keep users loyal to the product, we use React-Native.

Mobile App Distribution

We use fastlane to automate our development and release process of iOS and Android mobile applications.

We publish Macellan SuperApp with the push of a button. Distributing beta builds are very time consuming task. We have fully automated this process by combining Gitlab CI/CD and fastlane tools. We automated the most time-consuming beta distribution steps including incrementing the build version, code signing, building and uploading the app to Firebase and TestFlight.

Top-notch UI/UX design

“Any product that needs a manual is broken”
Elon Musk

The importance of UI/UX shouldn’t be underestimated. People will not return to a site or app after a bad User Experience. UX can make or break a business, especially with such competitive and saturated modern markets. Users must navigate in Macellan SuperApp without confusion, with ease. We have to provide a smooth experience.

The world of UX design is vast and complex, and we work with the experts and use the best tools. But what about rest of the team? We want to deliver a product that our customers will love, then everybody in the team need to know about UX. So we take UX courses for the team to understand UXer’s point of view. Taking these on board will make Macellan SuperApp a customer-focused product.

Conclusion

We definitely love to try new technologies and tools at Macellan. We try to experience new technologies as early as possible. We are very keen on our R&D studies, stay tuned for our upcoming posts about Macellan and Macellan SuperApp!

If you want to know more about us, take a look at Macellan’s Instagram and Linkedin pages too.

We are always on a lookout for great talents. If you are interested in what we do, check out our career page, you can become a member of Macellan’s Mürettebat too!

--

--