Code & Craft by Kasra

Neo Financial

Card Details Screen Home Screen Investment Screen Rewards Screen

My journey at Neo Financial started in March 2020. I was very excited to join a small group of software engineers (I might be wrong, but I vaguely remember being among the first 25). At that time, the iOS team consisted of two people (one of whom was hired just a few weeks before me). Even though the workload was very high and, due to COVID-19, we had to deal with occasional lockdowns, I had a great experience and was learning at an incredible pace.

At Neo, we use XcodeGen for project management (I actually prefer Tuist, but it wasn’t available at the time). In most cases, we try to follow the MVVM architecture and use Coordinators for managing navigation. I remember that during my onboarding, one of the first things I needed to learn was a new dependency injection approach called Indirected Instantiation, which was introduced by the engineering team at Lyft. Just like many things, once you learn it, you’ll see it’s very simple.

Since the Combine framework wasn’t released until 2019, the team decided to create its own APIs for handling asynchronous events. We call it Signal. Without getting into the implementation details, let’s just say the rationale behind it was that we needed a few simple operators, full control over the codebase, and, after all, it’s a banking app, so we prefer to avoid third-party frameworks as much as possible. Even though Signal never showed poor performance or bugs, many new hires struggled to learn it. At the time, we didn’t have proper documentation for it, and since it’s not publicly available, developers couldn’t just Google it themselves. That’s why, after a while, we started shifting towards Combine (though there’s still some Signal left to clean up).

We also use GraphQL and Apollo for exchanging data with our backend. It’s great that developers only need to write the query, and then Apollo Codegen generates the code for you. I just hope they can pick up the pace and release a version that supports Swift Concurrency and offers async functions.

Most of our app is built using UIKit; however, we’re slowly transitioning towards SwiftUI. Another thing we’re working on is updating our 100+ modules to adopt Swift 6! Oh boy, that is not easy…

Visual Catalog

Card Details Screen Home Screen Investment Screen Rewards Screen Rewards Screen

Introducing the Visual Catalog app, designed to showcase the exquisite products of Habibi Interior Store. With seamless navigation through diverse product categories, users can effortlessly explore and engage with their favorite items. Here are some key features and technologies that bring this project to life:

Public Reporting System

Sign-in Screen Reports List Screen Set Location Screen Map Screen

Introducing PRS (Public Reporting System), a revolutionary platform empowering users in Malaysia to report issues to the nearest authorities effortlessly. From reporting potholes to safety concerns, PRS streamlines the process, ensuring prompt resolution. Here’s a glimpse into its features and technologies:

ICON V3

Sign-in Screen

Introducing ICON V3, a cutting-edge iOS application empowering users to effortlessly control their home products and appliances using iPhones or iPads. As the sole front-end developer of this project, I played a pivotal role in bringing this vision to life. Here are some key features and technologies that power ICON V3: