EmojiChat is a based on a simple concept: It tracks your and head position and facial expressions in real-time and puts an Emoji on top of your head that represents your current mood.
Author: Frederik Wessberg (frra@itu.dk), June 2017
EmojiChat is live at https://itu.dk/people/frra/EmojiChat
EmojiChat is a based on a simple concept: It tracks your and head position and facial expressions in real-time
and puts an Emoji on top of your head that represents your current mood.
EmojiChat use a variety of modern web technologies:
SyncDB
for data persistence based on IndexedDB.AppBarComponent
, CardComponent
, RippleComposite
and FloatingButtonComponent
are custom and thorough implementations of the spec.Because of this, EmojiChat only works in Chrome, Opera and Safari for the time being. While Safari is supported, Chrome and Opera will provide the best user experience for this showcase.
git clone
from your terminal (or download it here).cd
into the directory.npm install
.All dependencies will now be installed. You’re now able to build the app!
After installing the dependencies, there’s a variety of build-scripts you can run:
npm run build
or npm run b
: Generates a development bundle for both mobile and desktop devices.npm run build:desktop
or npm run b:desktop
: Generates a development bundle for only desktop devices.npm run build:mobile
or npm run b:mobile
: Generates a development bundle for only mobile devices.npm run build:production
or npm run b:production
: Generates a production bundle for both mobile and desktop devices. All files will be minified and gzipped, and all component styles will be deduped and minified using PostCSS and CSSNano. All :hover
selectors will be stripped from the mobile bundle. npm run build
production
or npm run b
production
: Generates a production bundle for only desktop devices. All files will be minified and gzipped, and all component styles will be deduped and minified using PostCSS and CSSNano.npm run build
production
or npm run b
production
: Generates a development bundle for only mobile devices. All files will be minified and gzipped, and all component styles will be deduped and minified using PostCSS and CSSNano. All :hover
selectors will be stripped from the bundle.npm run sw:precache
: Generates a service-worker file of all assets and associated hashes. Run this script whenever your assets change.All of the build
scripts also have equal watch
or w
variants for the same purpose, except they watch the source files and recompiles when something changes.
All of the watch
scripts also have equal serve
or s
variants which serves a simple custom development server so you can easily work from localhost.
The shared gallery is pretty unique. Every picture taken by any EmojiChat user will end up in this gallery. Only the one who took the picture can remove it again. The data persistence model is fully decentralized. There is no remote database. Rather, you communicate with other clients currently connected to EmojiChat to replicate and distribute your local database contents so that the gallery contents are the same between all of you.