Tchibo Share is a mobile app which lets users send a coffee to their friend on social media. Open the app, find the perfect coffee in your neighbourhood, buy online, personalise a short link for your coupon: tchiboshare/thinkingAboutYouThreeMoreDaysToGo and send it to your friend on Whatsapp.

Tchibo Share is a way to say "thank you for your advice the other day", "thinking about you on your birthday", "good luck with that interview", "can’t wait to share a coffee again when lockdown is over!"

Tchibo and its network of retailers and partners make coffee for millions of consumers. Tchibo Share is a way cut through this entire supply chain and to engage with coffee lovers directly, creating a giant coffee club throughout Europe.

Tchibo Share opens up a new sales channel. Coffee-as-a-gift is just the beginning. What about selling coupons in bulk to companies as rewards and perks for their employees? What about a subscriptions for coffee lovers instead of paying for coffee every day?

Tchibo Share also offers a new way to do marketing. What about using those coupons to jump-start new retail locations? What about using them to boost new products? Creating fun games and letting people win their favourite hot drink? What about all the intelligence we suddenly gather about what drinks and products consumers search, buy, exchange with each other?

What it does

Tchibo Share has been built as a web app and mobile app. It can be used on phone or desktop.

  • As soon as the app opens, users can browse the entire Tchibo catalogue. They can search for a perfect coffee or any other product. Importantly, they search by location: the goal is to find a small gift available close to where their friend lives or work.
  • Buy the gift online using a credit card. It really takes 10 seconds
  • Enter a custom url for the coupon. For instance tchiboshare/sorryToHearYouHaveTheFlueGetBetterSoon
  • Click share to send using social medial (Whatsapp, Messenger, Instagram) or even simple SMS.
  • As a recipient, click the link to open the coupon.
  • The barrista scans the QR code to confirm the coupon, or
    alternatively uses the Tchibo box. Tchibo box is a small connected
    device with a screen. Just leave it on the counter. The recipient can connect to it form the app with Bluetooth to confirm the coupon in a “hands-free” way.

How we built it

I knew already how to build web apps with react.js, so building the web app was the easiest. The web app is hosted on Firebase hosting.

For the backend, I have used Firebase for simplicity. It offers the Firestore document database and authentication out of the box. I was able to connect it to Facebook and Google to allow users to register even quicker.

Most of the server logic is handled by Firebase, which saved me time. However for some more complex operations, such as integration with Stripe for payments, or searching and filtering products by distance from a location search, I created a simple server using node.js and express, which I hosted on Heroku.

React-native was new to me. I had meant to try it for a while and this was a perfect opportunity. To add a challenge, I coded that part of the project using typescript. This took a long time, and I often required help from a friend, but thanks to his patience, I eventually got the hang of it.

The most original and difficult part of this project is the Tchibo Box. Thankfully, I didn’t start from nothing here. I have long had a hobby to build small connected devices using Arduino. For this project, I used a pre-built micro-controller called m5Stack, which contains a screen, a battery, and importantly, an ESP32 microcontroller. ESP32 is a wonderful board that includes out of the box wifi and Bluetooth connection.

This is how it works. The Tchibo box is pre-configured for each store with a unique store secret. When the phone connects, the box sends out a random number: call it the “question”. The phone then connects to my server to claim the coupon. The server responds back with a “response”. This response is sent from the phone to the box by Bluetooth. At the same time, the box is also calculating the same response, based on the store secret. If the responses match, the coupon is confirmed, and we can show a confirmation message on screen.

The “response” is a simple hash of the store secret and the random number sent by the box. Because it is unique, it can only be used once. Because it is calculated based on the store secret, it cannot be cracked.

This simple set up means that the box can verify coupons without even having to be connected to the wifi. This means that setting up a new store is as simple as sending them a pre-configured box and asking them to turn it on and place it on their counter.

Challenges we ran into

The hardest thing by far was to code the ESP32 micro-controller in C. C is quite a basic language, and every operations was a challenge, from connecting to the Bluetooth, to manipulating strings, hashing the response, displaying images on screen, etc. This was a great learning experience though. Now that I know how to do this, I can think of many more interesting projects to work on using IoT devices.

The Stripe payment API integration was not as straightforward as I had hoped. I had not done this by myself before and for some reason it took a long time to figure out how to correctly configure it. Again, now that I know how it works, it will be much easier the second time around.

Design and UI is always a challenge. I take a very long time to decide on colors, layouts, etc. I had to design the app end-to-end on Figma first, until I got something that was looking decent. I received help from my sister, who is studying fashion design. Importantly, she offered the svg drawings which illustrate how it works.

Accomplishments that we're proud of

There are a few things I am proud of in this project in the end.

  • Looking back, it seems like a lot of ground was covered: a server, a web app, a mobile app and a connected device, with lots of moving parts: Bluetooth, payments, maps, short url generation… For a moment it felt like the program was a bit too ambitious, but in the end it seems to work.

  • The main accomplishment is without a doubt the integration between the mobile app and the connected device via Bluetooth low energy (BLE). BLE is not entirely mainstream yet and as far as I am concerned was fairly unchartered territories. The problem I wanted to solve is to allow the phone to send a signal without using the internet, instantaneously, and with a super simple pairing mechanism. I am very happy with the result.

What's next for Tchibo Share

I am actually considering introducing a version of the Tchibo Share app to local stores around London (obviously with a different brand). The lockdown has been difficult for retailers, and I hope this could be an innovative way to contribute to the rebound.

In some countries, like South Korea, this type of service is very popular. The messaging service KakaoTalk has been very successful in offering its users the ability to send small gifts to each other as coupons. I am interested to discover whether this could be equally popular in Europe.

The next step will be to talk to bakeries and cafes around me to get their thoughts. Any advice on how to improve and progress this idea is very welcome!

Built With

Share this project: