Skip to content

ian-deans/echo

 
 

Repository files navigation

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.

screen shot 2017-07-06 at 2 17 26 pm

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.dev
REDIS_URL=redis://localhost:6379
RETHINKDB_URL=rethinkdb://localhost:28015/echo_development
# IDM / JWT settings, including session extension
IDM_BASE_URL=http://idm.learnersguild.dev
JWT_PRIVATE_KEY="<get from IDM service>"
JWT_PUBLIC_KEY="<get from IDM service>"
# External API settings
GITHUB_ORG_ADMIN_TOKEN="<GitHub token with permissions in LearnersGuild, GuildCrafts, and GuildCraftsTesting>"
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

RUNNING THE SERVER

NOTE: you'll need 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.dev

Start the workers

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:
npm install -g localtunnel
lt --port $(cat ~/.mehserve/echo.learnersguild) --subdomain 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.

About

echo: learning management system

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.5%
  • CSS 1.5%