- Read: Contributing Guidelines
- Install all of the following:
- SQL Server Express or your favorite SQL technology that TypeORM supports.
- Node v10+
- TypeORM CLI
- Clone this repo
- Run
npm install - Set up your .env / dotenv file
- Set up your local database
- In a shell in Egg Party, run
npm testto build the project and run the unit tests.- If your tests run and pass, WOO! 🎉💃
- If they don't, check:
- That you installed everything
- The Troubleshooting section
- Our GitHub project's issues
- If all else fails, report an issue here. Sorry we couldn't get you fixed sooner 😢
Make a file called ".env" in project root, with these contents:
ENVIRONMENT="Local"
SLACK_CLIENT_ID="" # CLIENT ID HERE
SLACK_CLIENT_SECRET="" # CLIENT SECRET HERE
SLACK_SIGNING_SECRET=""# SIGNING SECRET HERE
# For more information see https://typeorm.io/#/connection-options/common-connection-options
TYPEORM_CONNECTION="" # if you're using SQL Server, use "mssql"
TYPEORM_DATABASE="EggParty"
TYPEORM_ENTITIES="./dist/src/db/entities/*.entity.js"
TYPEORM_MIGRATIONS="./dist/src/db/migrations/*.js"
TYPEORM_HOST="localhost"
TYPEORM_USERNAME="admin"
TYPEORM_PASSWORD="password"- Create a local SQL Database named
EggParty- e.g.
CREATE DATABASE EggParty;
- e.g.
- Make sure your local database server has these features enabled:
- Create a local SQL admin with the credentials in your
.envfile - Run
npm run migration:runto set up the Egg Party schema in your local database.
Something out of date? Click here to report an issue!
In order to run locally against Slack, you'll need:
- A Slack Workspace to test in (create one here), and
- A Slack App (create one here)
- You should be taken to a Basic Information view after creating your app.
- Scroll down to App Credentials, and copy these credentials to the
.envfile you created earlier:- Client ID >
SLACK_CLIENT_ID - Client Secret >
SLACK_CLIENT_SECRET - Signing Secret >
SLACK_SIGNING_SECRET
- Client ID >
- From the Features sidebar, go to Oauth & Permissions.
- For now, add a Redirect URL of
https://www.egg-party.com/api/v1/slack/oauth/redirect. - Down in the Scopes view, add the following scopes:
channels:historyreactions:readim:historyim:writechat:write
- From the Features sidebar, go to Event Subscriptions.
- Turn Events on.
- For now, put a Request URL of
https://www.egg-party.com/api/v1/slack/events. - Down in the Subscribe to Bot Events view, add the following Bot User Events:
message.channelsmessage.imreaction_added
- From the Features sidebar, go to Interactive Components.
- Turn Interactivity on.
- For now, put a Request URL of
https://www.egg-party.com/api/v1/slack/interactions.
- In a shell, run
npm startto run your local API. - In another shell, run
npm run tunnelto tunnel your local traffic to a public URL. - The URL printed by
ngrokis a URL that Slack can use to interact with your local environment. - From the Features sidebar, go to Oauth & Permissions.
- Replace the Redirect URL you added earlier with
https://{{ngrokUrl}}/api/v1/slack/oauth/redirect - From the Features sidebar, go to Event Subscriptions.
- Replace the Request URL you put earlier with
https://{{ngrokUrl}}/api/v1/slack/events - From the Features sidebar, go to Interactive Components.
- Replace the Request URL you put earlier with
https://{{ngrokUrl}}/api/v1/slack/interactions - From the Features sidebar, go to Manage Distribution.
- Click the Embeddable Slack Button to install your app to your workspace.
- This should create a
slack_teamentry in your database, and redirect you to Egg Party in your Slack Workspace.
- This should create a
| Running | |
|---|---|
npm startnpm run serve
|
Run the API locally, hot reload when you make typescript changes |
| Testing | |
npm testnpm run test:single-run
|
Build & run all unit tests |
npm run test:watch
|
Run all unit tests & re-run when you make changes |
| Utilities | |
npm run tunnel
|
Tunnel your local traffic to a public URL using `ngrok`. Use this to run locally against Slack. |
| Style / Linting | |
npm run style:fix
|
Formats your local codebase to the Google Typescript Style |
| Database | |
npm run migration:generate
|
Generate a TypeORM migration file based on changes made to entities since the last migration was made Usage note: you must pass the migration script a name for the migration e.g. npm run migration:generate -- -n AddCreatedDateColumn
|
npm run migration:run
|
Runs migrations against the database specified in .env
|
Run the command Debug: Start Debugging by pressing F5, by searching in the command palette (F1),
or from the Debug panel (Ctrl/Cmd + Shift + D)
Failed to connect to localhost:1433 - Could not connect (sequence)- Cause: TCP is not enabled or the SQL Server Browser Service is not running (Related: typeorm#2333)
- Making changes to the Guide Book? Use the Guide Book Template!