Our partner invited us to join an app development project for KSK Holding, a real estate developer based in Ivanovo. The goal was to create an app where potential buyers of residential property could view both the building and its surrounding area using AR and 3D technology. We strengthened the team to take charge of Android development and modify the iOS version of the app.
KSK is a Kotlin/Swift-based mobile app that offers virtual tours of a residential complex under construction by KSK Holding. Users can explore the property and nearby infrastructure in both 3D and AR formats. If the user is interested in a specific building, they can zoom in for a closer look or submit a purchase request immediately.
Over three months, our team of four – an Android developer, an iOS developer, a tester, and a project manager – worked on the app.
We operated without ToRs, which expedited the development process of this small project. Based on the mobile app design received from the customer in Figma, we conceptualized user scenarios and interface states.
We aimed for technologies suitable for our task – creating a modern and stable app with augmented reality support, high-quality graphics, and efficient notification and error management. With that objective in mind, we picked the following tools:
Breaking the project into tasks. The customer’s detailed briefing allowed us to break the project into approximately 40 clear tasks. They had to do with different features of the app: 3D and AR, loading screen, notifications, feedback form, etc.
Interface modification. The design in Figma did not cover all of the possible user scenarios for the app, so we had to complete some of these ourselves. For instance, we defined how a button's appearance would change after being clicked and determined where it would redirect users afterward.
Synchronizing with the 3D/AR team. We received completed models from the core team in file format and integrated them into the app. However, during this process, we encountered frequent crashes and lag, prompting us to send the models back for further modification.
The customer also wanted to integrate independent animation elements, such as lights, cars, and people, into the 3D model. To solve this problem, we decided to render the 3D model using the OpenGL library instead of Google’s standard library.
Fixing the bugs. The iOS developer played a key role in refactoring, modifying the code of the core team and helping to fix bugs.
The app was too demanding for smartphones. The integration of 3D and AR technology resulted in suboptimal device performance, overwhelming the RAM and CPU resources. During development, the size of the 3D model increased tenfold, prompting us to seek new technologies to manage it effectively.
Not all smartphones were suitable for testing. The AR feature was only functional on newer gadgets.
The 3D model did not work correctly. The image would glitch when moving or zooming, with the objects falling apart or failing to synchronize with each other.
Optimizing the app’s performance. We tried various models and ultimately found a solution that enabled smooth image movements, while being less resource-intensive for smartphones. We switched from using the original .obj file format to .jlb. We improved the Open Source library we utilized for reading models, as it was not initially designed for large files.
Testing on emulators and multiple gadgets. Our tester used the latest high-performance smartphones from team members, along with programs that could simulate tablet or smartphone interfaces for Android and iOS.
Integrating buttons into the interface. At first, we drew the buttons “on top” of the app, but based on the customer’s feedback, we redesigned them to hide behind buildings. This involved incorporating the buttons into the 3D render, making them part of the 3D model. This helped us achieve smooth graphics and visibility of the buttons in any position.
“Throughout the process, we often faced uncertainty about how the 3D/AR model would appear in the app. Repeated testing of the app on different devices allowed us to identify bugs promptly and modify the model accordingly.”
Android
iOS
Together with our partner team, we dedicated three months to developing an app that enables users to: