Skip to content

enigma-io/meme

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enigma Meme

This is Enigma's version of Vox Media's Meme. See our deployed version here.

Install and run development server.

  • git clone https://github.com/enigma-io/meme.git
  • bundle install
  • bundle exec middleman

This will start a local web server running at: http://localhost:4567/

Deploy to s3.

Run bundle exec middleman build to bake out the files in source into static assets.

Or run ./deploy.sh which will bake the files in /source and sync them on s3.

Customization

Configuration

Settings and controls are configured through source/javascripts/settings.js.erb. The settings file has ample comments to document configuration.

Fonts

Include your own fonts in stylesheets/_fonts.scss, then add your font options into the settings file.

Editor theme

Set the theme-color variable in source/stylesheets/_vars.scss. That one color will be tinted across all editor controls.

Cross-Origin Resources (CORS)

This is an HTML5 Canvas-based application, and thus comes with some security restrictions when loading graphics across domains (ex: a canvas element on http://tatooine.com cannot export with an image hosted on http://dagobah.com).

If you're hosting this application on the same domain that serves your images, then congratulations! You have no problems. However, if you're going through a CDN, then you'll probably encounter some cross-domain security issues; at which time you have two options:

  1. Follow this excellent MDN article about configuring "Access-Control-Allow-Origin" headers. You'll need to enable these headers on your CDN, at which time the Meme app should be able to request images from it.

  2. Embed all of your watermark images as base64 data URIs within the settings.js.erb file. The asset pipeline's asset_data_uri helper method makes this very easy, and effectively embeds all image data within your JavaScript. The downside here is that your JavaScript will become a very large payload as you include more images. In the long term, getting CORS headers configured will be a better option.

Packages

No packages published

Languages

  • JavaScript 51.7%
  • HTML 17.2%
  • CSS 16.9%
  • Ruby 14.0%
  • Shell 0.2%