Skip to content
This repository has been archived by the owner on Sep 6, 2020. It is now read-only.

artsy/team-navigator

Repository files navigation

Note: This project has a new home! Checkout https://github.com/artsy/team

Build Status

Team Navigator

Meta

What is this?

We have a pretty complicated set of businesses inside Artsy. Now that we're above 150+ staff members, our organizational structure can get tricky to understand. This is a web-app for showing our team setup.

Here's a censored overview. It has search, filter by locations, teams and an A-Z of all staff.

./screenshots/overview.png

And individual people pages have all sorts of useful info

./screenshots/member.png

Set-Up

  • Fork Team Navigator to your GitHub account in the GitHub UI.
  • Clone your repo locally (substitute your GitHub username).
git clone [email protected]:your-github-username/team-navigator.git
  • Install MongoDB (or use the MongoDB app)
brew install mongodb
  • Install NVM, Node, and npm modules.
brew install nvm
nvm install 8
yarn install
  • Copy over a .env file and replace all sensitive config, e.g. SHEETS_URL=REPLACE, with staging config.
cp .env.example .env
# Artsy staff can see our production env vars with
heroku config --app=artsy-team-navigator
  • Start Team Navigator and Mongo
yarn dev
mutation {
  sync
}

V3

There is some initial work on a V3 inside the app, v3 is a create-react-app using TypeScript that is deployed into team nav.

It is accessible in /v3/ in the routing schema. To work on it use yarn v3, or yarn dev will load the CRA dev server in port 3001.

In v2 the koa app uses assets created by running yarn build.

Spreadsheet format

We use a pretty liberal parser for syncing. You can see an example of what our spreadsheet looks like here with just Orta's data in.

If the example is out of date, that's fine, go look at the member model and convert the values to snake_case. Some of the values are generated by the sync, or via daily tasks too.

Optional ENV vars

EXCEPTION_USER_IDS - lets you add non-artsy users to the app, by adding their user IDs to the environment NO_SYNCING - skips the syncing of data on startup

Testing

We use standard for linting. For the best experience it's recommended that you install an inline linter in your text editor, such as Sublime Linter Standard, to surface linting issues immediately.

We use mocha for testing. For the best experience writing tests it's recommended you target the suite you're working on in watch mode yarn mocha -- --watch test/your/tests.js.

To run the full test suite and linter use yarn test.

Scripts

We have some daily scripts that happen automatically:

  • scripts/daily_notifications.js sends a slack DM to a manager that their reportee's work-aversary is next week.

  • scripts/daily_github_history_for_member.js pulls GitHub repos for anyone with a GitHub handle inside your org.

  • scripts/daily_articles_for_member.js will find any articles someone has contributed to.

Maintainer notes

  • To get an individual's writerAuthorId load the Artsy Editorial channel in writer then inspect the elements for their IDs.

  • To change profile fields, go to your team profile settings - this will support the big social networks (that are the defaults in Slack), I'd love to make this a bit more generic.

About

An internal HR product for Artsy's team

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published