Administration Client Management

Queue may sometime be a fun thing

Our team has developed a reliable customer queuing solution for a client with a prediction of customer waiting time.

About the client

We are not able to disclose client details due to the signed agreement. What we would like to do is to describe an interesting customer serving solution that our team implemented.

About the project

The client had an existing customer queuing solution that he wanted to replace and to modernize with some additional features and to provide a better user experience.

The solution consisted of creating a ticket issuing system and integration with printing and notification devices. Also, states of counters and currently served customers should be available through several displays available on the spot.

During architecture setup and planning we agreed upon implementing a CQRS (Command Query Responsibility Segregation) Event Sourcing System. For every action, the application state is changed and one or more events are produced. Events will update the query side used by the client-side of the application. Also since there was integration with other software systems and hardware devices we needed to enforce synchronization and heartbeat information propagation.

To match up the challenges and to fulfill our rule of creating a faultless solution, from the beginning we applied principles of TDD (Test Driven Development) and Pair Programming with constant Code Reviews and strict following of Definition of Ready and Definition of Done for every user story.

The final outcome

Customer queuing service was deployed at several locations at first and now tends to spread to more locations. Also, there is an interest in upgrading the solution with additional features.

Our side of the story

The requirements we had to meet in this project were a novelty for our team, so we faced a few challenges.

One of the challenges was implementing a full-blown production-ready CQRS Event Sourcing System.

Also integration with multiple devices, ensuring stable communication and synchronization with the system was an important thing that we needed to manage.

Key features

  • Creating a ticket issuing service that assigns customers to a particular counter
  • Monitoring devices and counter state
  • Client waiting time estimation through applying various strategies and algorithms
  • Display and animation of customer assignment

Industry

Administration, Client Management

Location

N / A

Technologies

  • For backend: .NET Core, .NET Framework
  • UI: HTML, CSS, jQuery
  • Database: MongoDB

Team size

~25 members

Cooperation

Cooperation: 2019 – ongoing