React NativeTypescriptKotlin

Photobooth (photo/video)

Mobile app

We really enjoyed working with Kanso. We had a medium-term project together (3 months). Communication was smooth (weekly meeting). Delivery met expectations, deadlines were met. The team was also accommodating to meet our deadlines.

Enguerand Jobard

CEO of Josepho

The client

Jospeho is a photo booth rental company to immortalize events through instant photos. The company was founded in 2015, from the alliance of 4 enthusiasts (Enguérand, Sebastien, Ségolène, Jean).

The project and needs

Josepho already had an application on iOS tablet but the photo rendering was not satisfactory and Apple's constraints were too strict. They chose a Galaxy S8 tablet whose photo quality is much better and improved the initial product. They contacted us to develop the mobile application as well as part of the connection to the printer, keeping in mind that customers would be autonomous with the tablet which implied a product designed with rigor to be perfect, i.e.:

  • Give the possibility to make gifs or photos
  • Allow to print photos
  • Send Gifs or photos to one or more email addresses
  • Work in offline mode during the service
  • Ensure a clear rendering of the photos and a clean cutting of the printer
  • Allow to launch the application directly at startup of the OS and restrict the accessible functionalities outside the photobooth application
  • Control the tablet remotely and manage cases (automatically when possible) of crashes, necessary restarts, etc.

The other challenge was the deadlines: they needed a product delivered at the beginning of the summer to avoid losing customers during their rush period.

The proposed solution

  • To respect the functional constraints (custom frame, animated gif) and technical constraints concerning printing (formats, cuts) we customized the Kotlin code for communication with the printer and we used the FFMPEG library within React Native.
  • To ensure proper operation in offline mode or in case of problems (battery failure, loss or absence of internet, etc), we serialized and persisted most of the tasks executed by the application on files periodically. This periodic "backup" is accompanied by a queue system, to automatically resume tasks where they were interrupted.
  • To manage the printing time (several tens of seconds) without blocking the operation of the application we reused the queue system that had been developed to avoid information loss. Thus a final customer can take photos and launch the print and then immediately let other people use the photobooth: there is no waiting time.
  • To control the tablet remotely (MDM) and support final customers in case of problems, we configured the Kiosk mode with Hexnode. This solution allows you to create an app in automatic boot (you arrive directly on the app when the tablet starts) and manage different scenarios like reboot in case of app crash.

The technical stack and infrastructure

  • React Native, TypeScript
  • Kotlin (integrated as a native module within React Native)
  • FFMpeg
  • Hexnode (MDM: Mobile device management)

React NativeTypescriptKotlin

The scope of action/The means deployed (duration and team)

The entire project lasted 3 months, with 2 FTEs.

The impact

10K+ events
4.6 million photos

Any ideas ? any project ?

Don't hesitate to let us know

We will reply in the hour