Skip to content

georgegillams/screen-reader-adventures

Repository files navigation

Build status Dependencies status

This is the code for the screen-reader-adventures website and API! The project uses React, Redux, and has a Node API which talks to a Redis database.

Developing

Prerequisites

Ensure redis is installed (brew install redis).

Running locally

PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm ci
npm run dev

npm run dev will set all necessary environment variables needed to run the application.

A debugger can be attached to debug server-side code.

Testing

If components have changed, snapshot tests may need to be updated. Backstop js visual regression tests may also need to be updated.

To update jest snapshots:

npx jest -u

To update backstopJS snapshots:

docker build -t georgegillams-test -f Dockerfile.backstopjstest .
docker run georgegillams-test
docker cp DOCKER_CONTAINER_ID:/usr/src/tmp/backstop_data ./

Any changes resulting from these commands should be verified and checked in.

Hosting

The following environment variables should be set up

Env var Reason Value
GSUITE_APP_PASSWORD To send emails from your Gmail account The password generated to access yout G-Suite account
GSUITE_EMAIL To send emails from your Gmail account Your G-Suite email address
NODE_ENV Makes the magic happen production
REDIS_URL To access the redis database. If no URL is provided, the server will connect to a local redis instance.
SECRET_API_KEY Used to make admin API requests Anything secret and impossible to guess
SESSION_SECRET Used to sign cookies Anything secret and impossible to guess
STRIPE_PUBLIC_API_KEY Used to enable card payments Comes from the Stripe dashboard
STRIPE_SECRET_API_KEY Used to enable card payments Comes from the Stripe dashboard

Hosting on Heroku

To host this on Heroku, you will need to add the Heroku-redis Add-on. Doing so will create a the REDIS_URL environment variable required to connect to the DB.

Contributing

Contributions are welcome. Please fork and submit a PR if you want to add or change a feature.