Skip to content

Latest commit

 

History

History
173 lines (125 loc) · 5.41 KB

README.md

File metadata and controls

173 lines (125 loc) · 5.41 KB

echo

Codeship Status for LearnersGuild/echo Code Climate GPA Code Climate Issue Count Test Coverage

This is the echo service.

GETTING STARTED

Welcome to Echo.

Before you can run echo you need:

SETTING UP THE ECHO SERVICE

1. Globally install nvm, avn, and avn-nvm.
curl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
npm install -g avn avn-nvm
avn setup
2. Fork and clone the repository.
3. Setup and run mehserve.

Figure out which port you intend to use and create the mehserve config file:

echo 9005 > ~/.mehserve/echo.learnersguild
4. Set your NODE_ENV environment variable:
export NODE_ENV=development
6. Create a free AWS account:

https://aws.amazon.com

Make a copy of your access key ID and secret access key. You'll need to include these in your environment variables in the next step.

7. Create your .env.development file for your environment.

Take out all comments in your final version. Example:

PORT=9005
APP_BASE_URL=http://echo.learnersguild.meh
APP_PROJECT_URL=http://echo.learnersguild.meh/projects
REDIS_URL=redis://localhost:6379
RETHINKDB_URL=rethinkdb://localhost:28015/echo_development
# IDM / JWT settings, including session extension
IDM_BASE_URL=http://idm.learnersguild.meh
JWT_PRIVATE_KEY="<get from IDM service>"
JWT_PUBLIC_KEY="<get from IDM service>"
# External API settings
GITHUB_CRAFTS_REPO="https://github.com/GuildCraftsTesting/web-development-js-testing"
S3_BUCKET=guild-development
S3_KEY_PREFIX=db
AWS_ACCESS_KEY_ID=<YOUR_AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<YOUR_AWS_SECRET_ACCESS_KEY>
8. Install dependencies:
npm install
9. Create a development & test databases:
npm run db:create
NODE_ENV=test npm run db:create
npm run db:migrate:up
NODE_ENV=test npm run db:migrate:up

Optionally, seed your development database with test member and project data:

npm run db:copy -- <STATE>

Available STATE options:

  • PRACTICE
  • REFLECTION

RUNNING THE SERVER

NOTE: you'll need rethinkdb, mehserve, idm and this server all running at the same time for things to work.

npm start

Visit the server in your browser:

open http://echo.learnersguild.meh

Start the workers NOTE: you'll need to start redis for the workers to run correctly.

npm run workers
npm run workers:cycleLaunched

USING THE DEV SLACK INSTANCE WITH YOUR LOCAL ECHO SERVICE

1. Join the dev Slack team by requesting (and accepting) an invitation from a teammate.
2. Configure your dev environment for OUTBOUND calls to the Slack API.

Add the following to your .env.development:

# Slack / command CLI settings
CHAT_BASE_URL=https://slack.com
CHAT_API_TOKEN=<the Slack bot user's OAuth access token. obtain from a teammate or in the Slack team's app settings>
3. Configure your dev environment for INBOUND calls from Slack (for /slash commands).

Add the following to your .env.development:

CLI_COMMAND_TOKEN=<the Slack app's verification token. obtain from a teammate or in the Slack team's app settings>
4. Set up localtunnel and run the slackslash script:
npm install -g localtunnel
npm run slackslash

NOTE: You can ignore this message after starting localtunnel:

your url is: https://slackslash.localtunnel.me

It's not a URL you're meant to visit in the browser directly; it is the URL already configured in the dev Slack team's echo app and where incoming requests for /slash commands are sent. With localtunnel running and configured properly (along with echo, idm and mehserve), when you issue a slash command in a channel in the dev Slack team, the request will be sent to https://slackslash.localtunnel.me and served by the echo service running on your local machine.

CONTINUOUS INTEGRATION

We use Codeship for continuous integration. The following files are responsible for CI configuration:

  • Dockerfile: basic Docker image for the app
  • codeship-services.yml: similar to docker-compose.yml, but for CI
  • codeship-steps.yml: the steps to run on each service for CI
  • app.env.encrypted: encrypted environment vars for the app (e.g., NPM_AUTH_TOKEN)

LICENSE

See the LICENSE file.