Contact us

Printed photo ordering application

Development of an application for ordering photo prints on demand

ABOUT
the project

Client:

Photo printing service

Location:

Country flag

Antwerpen, Belgium

Company Size:

10+ Employees

Industry:

Solution:

Technologies:

MAUI

Blazor

Dapper

Azure

ASP.NET

Firebase

Entity Framework

Our customer’s project offers a modern take on the classic joy of receiving physical photos.

It’s a unique service that allows users to select their favorite digital pictures, add personal notes, and send them to loved ones in the form of printed photos in a beautiful envelope delivered to their home.

Quotation marks Quotation marks

Our collaboration with the customer is a remarkable journey of transformation. By addressing their software challenges and implementing new features, we enhanced the platform’s performance and significantly improved the user experience. As of today, we help our customer grow their service to be ready to promote it in both B2B and B2C markets.

Tetiana Mykolyk

Tetiana Mykolyk

Project Manager at Leobit

photography taking

Customer

Our client is a European startup that targets individuals wanting to share special moments with family and friends. They offer a service that allows users to send printed photos to their loved ones, bridging the gap between digital memories and tangible keepsakes.

In a world where most photos remain locked away on devices, their service stands out by enabling people to create physical, personalized gifts that can be cherished for years.

Business Challenge

Our customer initially collaborated with another development team and was unsatisfied with their work ethic and the quality of the services. The product they delivered was riddled with bugs, leading to poor performance, frequent system crashes, and user dissatisfaction. The lack of data security was another primary concern pushing the customer to look for another software development company.

Faced with these challenges, our customer needed a reliable and proficient partner to redevelop the platform while adding new features, ensuring a robust, secure, and seamless user experience. This is where Leobit stepped in to bring the company’s vision to fruition.

Why Leobit

Our customer was looking for a company with experience in using new .NET technologies like MAUI and Blazor and was pleased to find out that Leobit has already used them in several projects. They were also impressed by the high level of engagement and proactive communication demonstrated by Leobit’s team. Our developers presented a comprehensive plan to improve the platform’s performance, addressing load times, system stability, and scalability issues. This proactive approach ensured our customer that we are capable of transforming their vision into a high-quality, secure, and efficient print-on-demand platform.

Photo printing solution architecture

Project
in detail

Leobit executed a comprehensive redevelopment strategy, incorporating various advanced features to enhance functionality, performance, and user experience.

Leobit adopted a vertical modernization approach, rewriting approximately 60% of the existing code and developing 40% of new features. We migrated the application to MAUI 8, eliminating unnecessary code and redundant logic that previously slowed down the program and consumed excessive resources. This modernization approach streamlined the application, making it more efficient and easier to maintain.

We overhauled the logic of the admin portal. Previously, loading all data simultaneously caused several-minute delays while waiting for tables to load and order statuses to update. Leobit implemented pagination, drastically improving loading times and user experience. Additionally, we optimized data retrieval processes, ensuring that only necessary data is loaded, and streamlined the overall logic to enhance performance and usability. This comprehensive upgrade resulted in a more responsive and efficient admin portal functionality.

Leobit integrated security measures using OAuth, which also improved performance. The application eliminated password-based logic, using phone number logins instead. Users receive a code via SMS, which the application automatically reads using a designated service, facilitating seamless logins.

Using the SkiaSharp library, Leobit developed a custom library for applying and configuring photo filters. This enabled users to enhance their photos with various visual effects before printing.

We implemented Azure Vision AI Service to automatically adjust photos selected by users to the required size for proper printing. Given that the standard envelope size is 5×10 cm, it was crucial to ensure that the photos fit perfectly. Azure Vision AI analyzes each photo based on points of interest and automatically crops it to the necessary format. If a user is not satisfied with how the AI cropped their photo, they have the option to manually adjust the cropping (which we implemented using the SkiaSharp library). Thanks to this, the app offers users both precision and flexibility in photo editing.

The customer used Mollie, a European payment service provider. Initially, the customer’s system pinged the payment provider server every few seconds to check payment status after a user transaction. Leobit introduced a webhook system where the payment provider notifies the application when the payment status changes, allowing the system to update the database or send emails accordingly.

printed photos
project-in-detail

Cloud Cost Optimization

To optimize cloud costs, Leobit restructured the subscription and usage of cloud resources, activating them only during specific hours to perform necessary jobs. This strategy allowed us to reduce Azure expenses by 75%.

We also rewrote significant portions of the business logic, employing the best navigation and data retrieval practices to achieve greater efficiency. This helped us streamline the backend's database interactions and logic, enhancing the application's speed.

project-in-detail

Navigation and Performance Improvements

We optimized the API by utilizing Dapper instead of Entity Framework and rewriting several endpoints. This approach significantly improved the creation and response times for smaller services with less complex logic, resulting in much faster API communication.

Leobit also restructured the app’s navigation to load pages in the correct sequence, reducing the load on the device and enhancing performance. The initial synchronization process was accelerated by downloading all necessary data at startup, minimizing data retrieval during subsequent usage and making the app feel faster. We also modified the photo synchronization process. Previously, syncing photos consumed significant time due to large data volumes. Now, photos are downloaded on demand when users view their past orders, improving overall efficiency.

Additionally, we enhanced the contact synchronization function, ensuring that every time users open the app, their contact book is updated with new entries added since the last session. Contact data is uploaded in batches rather than all at once to further improve efficiency.

Leobit also integrated Geoapify to address autocomplete functionality, enhancing user convenience during the checkout process.

project-in-detail

Promo Code and Referral System Development

Leobit developed a promo code system in which codes are created in the admin panel and distributed externally. Promo codes are also automatically sent to users who haven't placed an order within a certain period after registration.

Referral codes are automatically generated upon new user registration. The referral system allows users to share their unique referral codes with friends; both parties receive a €5 discount on future orders once the friend registers and places their first order.

The Journey
Behind Client's Success

Team:
1 Tech Lead
1 .NET Developer
1 QA
1 PM
Stabilization phase
Discount feature phase
.NET 8 migration phase
Automation phase
Order flow improvements phase
Technical and security improvements
Refactoring critical parts of APIs and infrastructure
Improvement of payment integration
Initial reduction of hosting costs
Adding discount and promo code functionality
Migration to MAUI 8 and .NET 8
Refactoring critical part of mobile app
Automating internal processes through Azure Functions to replace manual work
Automating image cropping using Azure Vision AI
Developing a user retention system using Azure functions
Ads metrics system integration using AppsFlyer
Adding manual photo cropping support using SkiaSharp
Adding photo filters using SkiaSharp
Improving performance and smoothness of order flow
Adding OAuth authentication and 2FA via SMS using ASP.NET Identity
Securing mobile app secrets using SecureStorage
Data access security improvements

Technology Solutions

  • The startup time was significantly reduced from 2 minutes to 15 seconds, providing users with a much faster and more responsive experience.
  • By optimizing navigation, the app now runs more smoothly, with improved animations and no glitches, resulting in a seamless and enjoyable user experience.
  • Implemented Azure Vision AI Service Integration for automatic photo cropping based on points of interest, also leaving the possibility for users to adjust easily or manually crop photos
  • Reduced Azure expenses by 75% thanks to restructuring resource usage
  • Improved admin panel loading times by implementing pagination, significantly speeding up data retrieval and order status updates.
  • Integrated Geoapify to enhance user convenience during the checkout process

Value Delivered

  • Thanks to the performance improvements, the customer’s user base grew by 25%
  • Managed and processed a total of 3,5K+ photos through the platform in the first 6 months
  • Thanks to our cooperation, the customer is now confident in their product and ready to actively promote it in both B2B and B2C markets