An experiment in creating better shareable versions of content
JavaScript Python CSS Shell Makefile HTML
Latest commit 43e3e44 Jan 31, 2017 @fzzzy fzzzy committed on GitHub Merge pull request #2145 from mozilla-services/fixes
r?fzzzy Fixes
Failed to load latest commit information.
.ebextensions Fixes #1531 Increase request body limit on Elastic Beanstalk Sep 16, 2016
addon Fix #2102, change nesting so watchPromise catches errors and displays… Jan 31, 2017
bin Include a release prod branch Jan 27, 2017
chrome-extension Fix #1888, catch all exceptions in interactive-worker with watchFunct… Nov 10, 2016
docs Remove the struck-out items in that were never implemented… Jan 31, 2017
server Fix #1843, clean out server/src/views Jan 31, 2017
shared Fix #2077, design and implement an A/B testing system Jan 13, 2017
static Fix #2096, increase size of the My Shots filler images, and decrease … Jan 31, 2017
test Merge branch 'master' of Jan 13, 2017
.babelrc Upgrade babel to latest version. Jun 21, 2016
.dockerignore Some tweaks to make the docker files smaller Mar 17, 2016 Fix stage by inverting $CONTROLLER_SINGLETON to be $DISABLE_CONTROLLE… Dec 19, 2016
.eslintignore Fix a few ESLint errors due to exports oddness Jul 5, 2016
.eslintrc Lint addon, JavaScript, and Sass files on Travis Jul 8, 2016
.gitignore Make several ignored patterns/files rooted, so they don't catch direc… Jan 25, 2017
.sass-lint.yml Fix oodles of sass-lint warnings and tweak rules Sep 29, 2016
.travis.yml Let's see if the mocha tests will run on travis. Sep 7, 2016 Add CHANGELOG entries for v5 Jan 23, 2017 Remove credit for a file that we don't use anymore Aug 21, 2015
Dockerfile Fix dev by putting the version number in the file,… Nov 28, 2016 Fix dev by putting the version number in the file,… Nov 28, 2016
LICENSE Initial commit Nov 18, 2014
Makefile Remove from the Makefile entirely Nov 16, 2016 Document the procedure for publishing on Elastic Beanstalk. Jul 5, 2016 Update link to current milestone to point to Deneb Dec 8, 2016
docker-compose.yml Switch to AWS environment variable names for configuring the db Nov 19, 2015 Switch from cfx to jpm Aug 5, 2015
package.json Fix #2136, update packages Jan 31, 2017

Page Shot

Build Status Available on Test Pilot

This is a prototype for a product to create better ways of sharing and saving content, starting with screenshots, with a planned second phase of full-page archiving.

The project will be launched through Test Pilot at

It is made up of both an add-on (using the Add-on SDK) and a website using Node.js. The add-on is in addon/, and the website is in server/

Ian has been blogging about the design, definition, and development process.

Installation and Setup

Install Postgres.

Install Node.js. Version 6.x is required.

Clone the repository.

There are two scripts to run the server locally and develop the add-on:

  • ./bin/run-server will run the server on localhost:10080 and automatically restart if there are changes
  • ./bin/run-addon will build the add-on, start Firefox with the add-on installed (you must have Nightly or Developer Edition)

By default, Page Shot will connect to a Postgres database on localhost:5432. To change which database and user it connects to set/export the environmental variables: RDS_USERNAME, RDS_PASSWORD, and RDS_HOSTNAME

The server will automatically setup the tables in your database, and keep them up to date over time (using pg-patcher).

If you have growl and growlnotify installed on Mac OS X, you will get growl notifications when the build has started and completed for the server and the add-on.

We apologize but we have no story for development on Windows (though the add-on runs on Windows).

Add-on auto-reloading

To make the auto-reloading of the add-on work, after you first start Firefox using run-addon you must manually install the autoinstaller add-on into your development profile. This will allow the script to push updates into the browser without browser restarts.


There is an IRC channel #pageshot on (you can use this link for chat access via the web if you do not otherwise use IRC).

Planning and ideation is happening in the issue tracker. We use a pattern roughly like:

Issue tags otherwise aren't very structured. Research is primarily analysis of other products that do something interesting, or some source material that could provide insight. Input on these (things like "I like this product because...") is very helpful!