A ticketing solution directly in your smartphone, for local transportation all around the world (bus, train, subway...)
problem to solve 
Scaling a product initially designed for 2 countries, to international coverage
this app is for
People who constantly lose their tickets in their pockets, or want to add simplicity to their travels.
1.0 available on the app store
2.0 waiting for more investments to be ready to launch
From MVP to a larger scale
PweeP already exists in stores (App Store and Google Play Store) since one year. It allows users to buy and use transportation tickets for a few transport companies in Netherlands and France.
It was originally designed to replace physical tickets and subscription for local transportation. PweeP V1 allows you record your payment methods, credit card or iDeal in order to buy new tickets and subscriptions in one tap. 
After a successful first version, PweeP needed a more ambitious second version with a brand new user interface designed to face new challenges:

aim tourists
by providing an automatic geolocation that show you the transportation around you and allows you to buy tickets instantly.
Tourists can also prepare their trip with a search function by city and buy tickets before their trip. A new feature allows to buy a specific ticket by entering a departure and destination fields.
working with a huge number of transport companies
in order to scale the product for international market, PweeP needed a smarter and easier way to buy and manage tickets for its users.
offline mode
because users won’t always have a network connection in subways, that doesn't mean they shouldn't be able to use their tickets anyway. 
This offline mode was made with custom synchronisation methods in the network layer. It also required anti-fraud measures with a token system that detects when a user go offline, use its tickets, uninstall the app and re-install it later to avoid the synchronisation with the backend.
Technically and in a nutshell, PweeP communicate with a backend via REST APIs, the V1 was originally developed in Swift with RxSwift with no defined design pattern. As I had to make it again from scratch, I choose a protocol oriented approach in Swift with the MVC pattern and a limited number of external dependencies. It also makes sense to facilitate futures evolutions by external developers.
The offline synchronisation was done with a local Realm, synchronised every time the app get a connection.
The app was developed from scratch for this second version.

other projects

Back to Top