๐ซ
emojitrack emojitrack tracks realtime emoji usage on twitter!
This is but a small part of emojitracker's infrastructure. Major components of the project include:
- emojitrack-web the web frontend and application server (you are here!)
- emojitrack-feeder consumes the Twitter Streaming API and feeds our data pipeline
- emojitrack-streamer handles streaming updates to clients via SSE
- ruby version (deprecated)
- nodejs version
- go version (currently used in production)
- streamer API spec defines the streamer spec, tests servers in staging
Additionally, many of the libraries emojitrack uses have also been carved out into independent emoji-related open-source projects, see the following:
- emoji_data.rb utility library for handling the Emoji vs Unicode nightmare (Ruby)
- emoji-data-js utility library for handling the Emoji vs Unicode nightmare (Nodejs port)
- exmoji utility library for handling the Emoji vs Unicode nightmare (Elixir/Erlang port)
- emojistatic generates static emoji assets for a public CDN
As well as some general purpose libraries:
- cssquirt Embeds images (or directories of images) directly into CSS via the Data URI scheme
- sse-bench benchmarks Server-Sent Events endpoints
emojitrack-web
This is the main web application for the Emojitracker frontend and REST API.
Development Setup
Frontend + REST API
-
Make sure you have Ruby 2.2.x installed and
gem install bundler
. -
Get the repository and basic dependencies going:
git clone mroth/emojitrack cd emojitrack bundle install --without=production
-
Copy
.env-sample
to.env
and configure required variables. -
Make sure you have Redis installed and running. The rules in
lib/config.rb
currently dictate the order a redis server instance is looked for. Depending on what you are doing, you may need to have the db populated from a emojitrack-feeder instance. -
Run all processes via
foreman start
.
Frontend development only
You can do work on the web frontend only by utilizing the production REST API. Set FRONTEND_ONLY=true
in your .env
file, and the API routes will not be loaded and the AJAX calls will be routed to the production API instead of localhost.