How I started to design digital product architecture in a traditional company

In first part I talked about how I worked to understand the context of MK2 company and understand the customers pain points. In this part, I will talking about which main features we defined to solve customer pain points and step to design the digital product architecture.

Define main features

The first thing to do was to define the main features to solve customer pain points.

We defined five keys features :

Check showtime for all movie theaters

The first one was to allow customers to have a look on showtime wherever they are (in front of computer or in mobility).

On front-end part we built a schedule with listing of movies and sessions for each day.

On back-end part we built a check processing on version programmation id for each movie theater, this process is executed every 15 min. If a new version is detected the migration process makes all current sessions out of date, creates all new sessions and rebuilt the schedule on front-end.

Booking tickets for a session

Step to book tickets from desktop or mobile

As we described in the first part, customers had to wait to buy their tickets. Today we propose a feature to buy tickets with several payment methods (credit card or custom prepaid card) from a mobile or a computer.

Buying a virtual prepaid card

Step to buy a virtual prepaid card

There was the same waiting issue with customers who wanted to buy a prepaid card. Today we propose to buy prepaid cards online too.

Use a physical prepaid card to book a ticket on mobile or desktop

Step to add and to use a physical prepaid card on desktop or mobile
Physical prepaid card

You can also add a physical card to your account (by using the id “N° 1015667985” of the card) and use it to buy ticket online.

Use a virtual prepaid card to retrieve a ticket inside movie theaters

Step to use a virtual prepaid card inside movie theater

It is also possible to use a prepaid card inside movie theaters and to retrieve tickets on movie theater kiosk. We just have to scan the prepaid card barcode from your mobile or from a printed card. The idea is to propose a omnicanal experience : all customers are able to use all prepaid card (physical or virtual) on all point of sales (online & offline) to buy tickets.

Define the data model

Once the first main features defined, I had to think how to design them. One of the most important thing to do is to design the right data model to build the product architecture.

Define functional objects

After understanding data business model I translated it into functional objects.

It is also important to define the objects creation frequency, how many times there’ll be a new instance for each object in the product life. For example, there’ll be about 10 new movies every week but there’ll be only 1 new movie theater every 5 years.

Define data provider

Once the functional objects defined, I had to think how to populate them in all the product’s life.

Define datas

Once the major objects were defined, I had to list every field for each object and data type.

Example for theater and movie :

Define how to populate fields :

We had to find which fields are fitting between the product core fields and providers API fields.

Define complexe property (ex : date / generating files)

In development meaning, there are often some properties which could generate troubles and need more attention.

In our case, we have two properties :

  • date : be careful about configuration date (timezone and date format) especially with session date
  • generate files (PDF) : it needs specific PDF library

Define a first database model

Define content

As all digital products built in a business context, I had to define business vocabulary to be consistent with all business teams and developers (ex : using booking not order etc…). To save time during development process, I listed all terms and categories for building scripts with content to import.

My next post will about : How I designed user experience and interfaces (desktop / mobile but also API)