mozilla / network-pulse

A stream of assets from peers across the Mozilla Network
https://mozillapulse.org
38 stars 41 forks source link

Mozilla Pulse

Travis Build Status AppVeyor Build Status

Pulse is a platform that helps the Mozilla Network capture and broadcast its projects and activities. mozillapulse.org

Around the globe, teachers, engineers, activists, and others collaborate to protect and extend the internet as a public resource. They create amazing apps, art, tools, games, and campaigns. Their impact is tremendous, but decentralized and difficult to track, even within the network.

Pulse reveals the network's footprint, it fosters collaboration and amplifies the big wins.

Contribute

We love contributors, but the team maintaining this project is small and not structured to significantly support new and inexperienced contributors. If there's an unassigned issue that catches your eye, feel free to open a PR for it, but keep in mind our support will be limited. We usually don't have the capacity to walk you through the process of spinning up the project, opening a PR or describing what the solution to the issue could be.

Development

Requirements

Setup

$> git clone https://github.com/mozilla/network-pulse.git
$> cd network-pulse
$> npm install
$> npm start

Environments

If you would like to override default environment variables... create a .env file on the root directory and set your env vars there. See environment variables section for details.

There are two files that you can expressly copy depending on your use:

  1. default.env has all the environment variables needed to run the pulse site without running a local pulse API instance.
  2. default.localhost.env has all the environment variables needed to run the pulse site in a way that it uses a locally running pulse API instance.

If you need (2), make sure to follow the instructions in the network pulse api README.md that explain how to set up Google Authentication.

Key scripts to run

npm start

This starts server in development mode. See environment variables section for PORT number.

npm test

This starts a few test scripts. Don't forget to run this command and fix errors (if any) before you git push your changes.

Fixing linting errors

If npm test yields linting errors, you can run npm run fix to have the style linters try to automatically fix any linting issues. This should almost always be enough to fix any linting errors.

npm optimize

This starts a few image optimization scripts.

Environment variables

Name Description
PORT Default: process.env.PORT(falls back to 3000 if process.env.PORT cannot be found)

The port number you are running the server on.
PULSE_API_HOST Default: https://pulse-api.mofostaging.net

Host of the Pulse API URL.
PULSE_API Default: https://pulse-api.mofostaging.net/api/pulse

URL to Pulse API. e.g., http://test.example.com:8000/api/pulse.
To set up a local instance of Pulse API, follow instructions on Pulse API README doc.
PULSE_LOGIN_URL Default: https://pulse-api.mofostaging.net/accounts/login/

URL to use to login to Pulse. This needs to be a Pulse API login url.
PULSE_LOGOUT_URL Default: https://pulse-api.mofostaging.net/accounts/logout/

URL to use to logout of Pulse. This needs to be a Pulse API logout url.
USE_RECAPTCHA Default: true

Whether or not to have recaptcha securing the sign up/sign in action.
RECAPTCHA_KEY Default: empty string

The recaptcha site key to use, when recaptcha is enabled.
PROJECT_BATCH_SIZE Default: 24

Number of projects you want to display as a batch. Make sure this number is divisible by 2 AND 3 so rows display evenly for different screen sizes.
PROFILE_BATCH_SIZE Default: 10

Number of profiles you want to display as a batch.
LEARN_MORE_LINK Default: https://www.mozillapulse.org/entry/120

Link to learn more about what Pulse project is about.
NODE_ENV Default: development

When this is set to production, it enables production specific express settings and middleware
APP_HOST Default: localhost

The domain which this app should serve. It's only used when NODE_ENV is set to production
HEROKU_APP_NAME Default: ""

The name of the review app (generated by Heroku).
GITHUB_TOKEN Default: ""

GitHub token used by the review app slack webhook.
SLACK_WEBHOOK Default: ""

Webhook of the Slack channel where the bot is posting.

Deployment

Staging

URL: https://network-pulse-staging.herokuapp.com/

Updates to master branch automatically triggers staging deployment.

Production

URL: https://mozillapulse.org

Deployment is done using the Heroku pipeline. Simply click "Promote To Production".

Review Apps

Review App for PRs

Opening a PR will automatically create a Review App in the network-pulse pipeline. A slack bot posts credentials and links to Review Apps in to the mofo-ra-pulse Slack channel.

Note: This only work for Mo-Fo staff: you will need to manually open a Review App on Heroku for PRs opened by external contributors.

Review App for branches

You can manually create a review app for any branch pushed to this repo. It's useful if you want to test your code on Heroku without opening a PR yet.

To create one:

The review app slack bot will post a message in the mofo-ra-pulse with links and credentials as soon as the review app is ready.

Environment variables:

Non-secret envs can be added to the app.json file. Secrets must be set on Heroku in the Review Apps (pipelines' settings tab).