• Technology
  • Flutter
  • TensorFlow.js
  • Rive
  • Firebase

For Flutter Forward in January 2023, Google and the TensorFlow team asked us for a virtual photo booth. We built Holobooth in Flutter for the web, with TensorFlow.js reading your face live and Dash or Sparky copying your expressions.

unit and widget test coverage
100%
featured at Flutter Forward
Jan 2023
avatars to wear, Dash and Sparky
2

Holobooth’s Dash on a holodeck, driven by the app’s Rive state machine. A face mesh stands in for the camera: move the pointer to turn the face and Dash turns with it, press and hold to open Dash’s beak, and use the buttons to wink or try on a hat, glasses, or a shirt.

01The ask

A photo booth that runs on machine learning.

Google and the TensorFlow team wanted a virtual photo booth that showed Flutter and machine learning working together. The demo was featured at the Flutter Forward event in January 2023.

Holobooth builds on the first Photo Booth app, made for Google I/O 2021. This version reads your face and puts your expressions on a mascot.

02Face tracking

Your face, mapped live, on a bird.

The camera plugin for web finds the user’s face in the frame. The TensorFlow.js MediaPipe FaceMesh model then maps facial features live, inside the camera frame.

The result is a futuristic photo booth where your expressions show up in real time on a virtual Dash or Sparky.

03The avatars

Rive state machines make Dash do what you do.

To animate the background and the avatars, we turned to Rive, a web app built in Flutter for high-performance animation. Rive state machines control how Dash and Sparky respond to movement, so the avatar mimics the user.

FaceMesh’s feature detection is matched to coordinates on the avatar models, and a Rive state machine controller turns that input into what the avatar looks like on screen.

04Sharing

One button from the booth to the feed.

With Cloud Functions for Firebase and Cloud Storage for Firebase, Holobooth turns a session into a GIF or video that users share to social media with one click.

Friends who open the post can step into the booth and make their own.

The Holobooth share page, a holographic card of Dash in an astronaut helmet in a neon city beside the line Check out my Flutter holocard and a Try now button

05Under the hood

Full test coverage from the first commit.

We generated the project with Very Good CLI, so the first commit already had null safety, internationalization, and 100% unit and widget test coverage.

The code is split into a layered architecture, and all of it is open source in the Flutter repository on GitHub.

06What changed

Flutter, machine learning, and a bird in a helmet.

  • On stage

    A live demo for Flutter Forward.

    Holobooth was featured at Flutter Forward in January 2023, a Flutter web app anyone could try in the browser.

  • Open source

    The whole code base is public.

    The Holobooth code lives in the Flutter repository on GitHub, architecture and tests included.

  • A first

    Our first major machine learning build in Flutter.

    We worked out how to bring TensorFlow.js models into a Flutter web experience, and we want to take machine learning to apps on any device.

07If you’re next

What we’d tell a team putting machine learning in Flutter.

  1. 01

    Budget time to try models before you build. Much of Holobooth’s early work was testing machine learning models.

  2. 02

    Let an animation tool own the motion. Rive state machines mapped face data onto the avatars.

  3. 03

    Put tests in the first commit. Very Good CLI started Holobooth at 100% unit and widget test coverage.

  4. 04

    Make the result shareable. A GIF or video from the booth brings the next visitor in.

Roll credits.

Who did what, and with which tools.

Client
Google, with the TensorFlow team
Our part
Application development
Platforms
Web
Built with
FlutterTensorFlow.jsMediaPipe FaceMeshRiveCloud Functions for FirebaseCloud Storage for FirebaseVery Good CLI
Timeline
Flutter Forward, January 2023

Built by Very Good Ventures

Laura Hughes Lekhi Director of Business Development
Greg Laird Senior Business Development Executive
Jorge Coca VP of Engineering
Shannon Campbell Product Lead

We’ll care about your success as much as you do.

Our unicorns read every message and reply, usually the same day.

Start the conversation

A 30-minute call about what you’re building.