Loyalty program management tool



  • Backend: Java 8, Spring Boot, Jool, Apache Xmlgraphics, Google Zxing, Jfreesvg, Google Guava, Apache Commons, jackson, slf4j, Swagger2
  • Web: Angular 4, TypeScript, RxJS, Angular CLI, Angular Material, SCSS, SVG2.1
  • iOS: Swift 3, Apple Wallet, Swagger Codegen, Auto Layout, Storyboard, QR code
  • Database: Postgres, Jooq, HikariCP

Project Team

  • 1 backend developer
  • 3 frontend developers
  • 2 iOS developers
  • Business analyst/PM
  • 2 designers
  • 1 QA engineer


Agile (Scrum)


3 months, 1000+ hours


Mobile, Web

& objectives

  1. Objective


    Develop a tool which enables companies to create unique loyalty programs using PassKit technology.

    The idea is to allow users to get bonuses without installing the mobile app.

  2. Business Tasks

    Business Tasks

    • Make a system that fulfills small, medium and large business needs to diversify their loyalty programs
    • Create a powerful and easy-to-use tool to create and distribute loyalty cards
    • Provide companies with robust employee and customer database management solution
    • Develop a solution to provide analytics and reports on loyalty campaigns
  3. Technical Tasks

    Technical Tasks

    • Develop a system, supporting paperless eWallet technology
    • Support complex several user-roles functionality within 1 app
    • Integrate MailChimp into the system to send pkpasses via email
    • Develop iOS mobile app that allows employees to scan pkpasses from customers’ devices


  1. Project planning & feature evaluation

    As such projects require in-depth technical requirements. We’ve developed a detailed specification, evaluated the scope of work, chose key features with the client, and prioritized them.

  2. Beacons Integrations

    We needed to link loyalty pass campaigns and company's beacons. It means that when a user has the company’s pass in his/her eWallet, beacons in the outlet notify a customer that he/she has a discount/special offer in the near shop so as the customer to bethink and use the pass.

  3. Creating multiple design templates

    One of the main selling points of the service—quick&easy loyalty program launch. This has to be complemented with multiple pre created design templates, as many clients want to test their marketing ideas as soon as possible. Our design team worked on creating dozens of various design patterns for any campaign type.


As to turn client’s idea into a real working solution, we’ve investigated hard bits of a eWallet main entity-pass. Developing the system we needed to:

  • Take into consideration a package format for passes;
  • Develop a web API service for updating passes;
  • Make SVG-generation for a right compilation of passes.

We used REST web service protocol to transmit changes from the server to pkpasses. Our team was developing a web application and a mobile app to scan passes simultaneously.

The apps enable employees to read a customer’s pass data and track statistics of a certain loyalty program.

the bundle

  1. User roles for small and large businesses

    • Many user roles support
    • Multiple ways to distribute passes
  2. Custom pass builder

    • Custom design support
    • Templates for diverse marketing campaigns
  3. Loyalty cards distribution

    • Email
    • Social networks sharing
    • Partner companies
  4. Campaign statistics

    • Campaign statistics
    • Campaign analytics: sent, used passes
    • Rate the most profitable company’s points of sales

final result

Example of the app on macbook and iphone


We’ve developed a complex solution that provides small and large businesses with an ability to track loyalty campaign results using eWallet and PassKit technology.

In other words, provided an easier way to improve customers' loyalty without making them install any apps. Also, the solution helps to increase customers’ Lifetime Value rates for companies that use the platform. For the future, extend the system functionality by implementing GPS and beacons integration.

Time to start a new project? Or just want to say "hi"?