Neo Financial
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
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:
- Programmatic UI: Crafted with precision, 90% of the app’s user interface is meticulously designed and implemented programmatically, ensuring flexibility and performance.
- Dynamic Data Retrieval: Leveraging the power of JSON format, product data is fetched from the server and seamlessly integrated into the app using JSDONDecoder, ensuring real-time updates and a smooth browsing experience.
- Persistent Storage with CoreData: Utilizing CoreData, the app securely stores all item details and user-selected favorites, providing a seamless and personalized experience across sessions.
- Efficient Image Caching: Instead of depending on third party frameworks, implemented a lightweight caching logic. Images are intelligently cached on the device, eliminating redundant downloads and optimizing performance, ensuring swift and responsive image loading throughout the app.
Public Reporting System
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:
- Programmatic UI: With a focus on flexibility and performance, PRS boasts a fully programmatically designed user interface, offering a seamless experience across devices.
- Secure Communication with OAuth2: PRS prioritizes user security by implementing OAuth for secure connections, safeguarding sensitive data during transmission.
- Efficient Data Handling with URLSession and JSONDecoder: PRS optimizes data retrieval and processing using robust APIs like URLSession for seamless network communication and JSONDecoder for efficient parsing of data in JSON format. This ensures swift and accurate transmission of reports, enhancing the overall user experience.
- Real-Time Tracking with Apple Push Notification and Firebase: Stay informed every step of the way with real-time updates through Apple Push Notification and Firebase integration, keeping users and authorities in the loop throughout the resolution process.
- Interactive Mapping with MapKit and Google APIs: PRS harnesses the power of MapKit for seamless navigation and location tracking, while Google APIs enhance the user experience with place predictions and precise location fetching, making reporting issues a breeze.
ICON V3
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:
- Secure Connectivity with OAuth: Prioritizing user security, ICON V3 establishes a secure connection using OAuth, ensuring encrypted and authenticated communication between devices and the application.
- Efficient Data Retrieval with URLSession: Leveraging URLSession, ICON V3 efficiently fetches data in JSON format from servers, enabling real-time updates and seamless integration of user preferences and device statuses.
- Flexible UI Design: ICON V3 offers a dynamic user interface crafted both programmatically and with Storyboard, providing a seamless and intuitive experience tailored to user preferences and device capabilities.
- Real-Time Notifications with Apple Push Notification and Firebase: Stay connected and informed with real-time updates through Apple Push Notification and Firebase integration, enabling timely alerts and notifications for device status changes and user actions.
- Live CCTV Footage with MobileVLCKit Library: ICON V3 enhances home security and monitoring capabilities by incorporating the MobileVLCKit library, enabling seamless streaming of live footage from CCTV cameras directly to users’ devices, ensuring peace of mind and enhanced situational awareness.