Giter Club home page Giter Club logo

holobooth's Introduction

Holobooth

Holobooth Header

build status coverage style: very good analysis License: MIT

A Holobooth built with Flutter, Firebase, and TensorFlow for Flutter Forward.

Try it now and learn about how it's made.

Built by Very Good Ventures in partnership with Google

Created using Very Good CLI πŸ€–


Getting Started πŸš€

To run the desired project either use the launch configuration in VSCode/Android Studio or use the following commands:

$ flutter run -d chrome -t lib/main_dev.dart

*Holobooth works on Web.


Running Tests πŸ§ͺ

To run all unit and widget tests use the following command:

$ flutter test --coverage --test-randomize-ordering-seed random

To view the generated coverage report you can use lcov.

# Generate Coverage Report
$ genhtml coverage/lcov.info -o coverage/
# Open Coverage Report
$ open coverage/index.html

Working with Translations 🌐

This project relies on flutter_localizations and follows the official internationalization guide for Flutter.

Adding Strings

  1. To add a new localizable string, open the app_en.arb file at lib/l10n/arb/app_en.arb.
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}
  1. Then add a new key/value and description
{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    },
    "helloWorld": "Hello World",
    "@helloWorld": {
        "description": "Hello World Text"
    }
}
  1. Use the new string
import 'package:holobooth/l10n/l10n.dart';

@override
Widget build(BuildContext context) {
  final l10n = context.l10n;
  return Text(l10n.helloWorld);
}

Adding Translations

  1. For each supported locale, add a new ARB file in lib/l10n/arb.
β”œβ”€β”€ l10n
β”‚   β”œβ”€β”€ arb
β”‚   β”‚   β”œβ”€β”€ app_en.arb
β”‚   β”‚   └── app_es.arb
  1. Add the translated strings to each .arb file:

app_en.arb

{
    "@@locale": "en",
    "counterAppBarTitle": "Counter",
    "@counterAppBarTitle": {
        "description": "Text shown in the AppBar of the Counter Page"
    }
}

app_es.arb

{
    "@@locale": "es",
    "counterAppBarTitle": "Contador",
    "@counterAppBarTitle": {
        "description": "Texto mostrado en la AppBar de la pΓ‘gina del contador"
    }
}

Working with Mason 🧱

This project relies on mason to create and consume reusable templates called bricks. For additional documentation see BrickHub.

  1. Install mason from pub:
dart pub global activate mason_cli
  1. Check the current project bricks:
mason list
  1. Add your own bricks:
mason add bloc
  1. Generate code from a brick:
mason make bloc

Note Mason support for Visual Studio Code can be found here.


Debug web app on iPhone

To debug the web app on the iPhone, we need to run it as https, because without that, the iPhone won't let us use the camera. We also need to configure Safari to use the phone's developer tools.

Configure https server

  1. Install http-server from npm:
npm install -g http-server
  1. Execute these commands
cd ~/
mkdir .localhost-ssl
sudo openssl genrsa -out ~/.localhost-ssl/localhost.key 2048
sudo openssl req -new -x509 -key ~/.localhost-ssl/localhost.key -out ~/.localhost-ssl/localhost.crt -days 3650 -subj /CN=localhost
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.localhost-ssl/localhost.crt
  1. Build web project
flutter build web --web-renderer canvaskit
  1. Go to the generated directory
cd {project_dir}/build/web
  1. Run server
http-server --ssl --cert ~/.localhost-ssl/localhost.crt --key ~/.localhost-ssl/localhost.key

Configure Safari to listen for logs

  1. On Mac
Open Safari > Preferences > Advanced > enable "Show Develop menu in menu bar"
  1. On iPhone
Open Settings > Safari > Advanced > enable "Web Inspector"
  1. Connect your device to your Mac using a USB cable.

  2. Open Safari on iOS and enter the server address, for example https://192.168.1.1:8080

  3. On Mac

Safari > Develop > Find "YourPhoneName" > Select the URL entered earlier, for example 192.168.1.1

Assets generation

We rely on fluttergen to generate the assets. Everytime a new asset folder is added, we should:

  1. Add the folder to the pubspec.yaml
flutter:
  assets:
    - assets/backgrounds/
    - assets/icons/
    - assets/audio/
    - assets/characters/
  1. Run fluttergen on the console
  2. Use the asset
Assets.nameOfTheFolder.nameOfTheAsset

Note: Step one can be skipped if the folder is already added to the pubspec.yaml.

Test Assets LICENSE

In order to properly test the face recognition feature, this project uses free photos downloaded from Unsplash released under their Unsplash Licence.

Those assets can be found at packages/tensorflow_models/tensorflow_models_web/test/test_assets/, and the links from each individual image on the LICENSE file under that same folder.


holobooth's People

Contributors

alestiago avatar arturplaczek avatar btobin avatar chenglu avatar deremer avatar ditman avatar doubletrio avatar duythien0912 avatar erickzanardo avatar felangel avatar ferhatb avatar gastonliz avatar johnpryan avatar jorgecoca avatar kirpal avatar laura177 avatar megobrien309 avatar omartinma avatar raffizulvian avatar saileshbro avatar sergsavchuk avatar silverhairs avatar siposbi avatar srihariash999 avatar tomarra avatar willhlas avatar xtealer avatar yjbanov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.