DesignOpen / board

A board of open projects searching for designers.
9 stars 1 forks source link

Design Open Board

Build Status

Job board which open source projects can use to find design contributors.

Architecture

Dependencies explained

Server

Client

Note that some of the client libraries are also used in server in initial render

Development

Infrastructure

All parts of the service are hosted in Heroku. There are two environments:

These environments are replicants of each other, they both have these addons:

Heroku details

Install development environment

Guide to get the environment running in your local machine.

1. Install tools and tech stack

2. Configure local environment

Add environment variables to local-env.sh. See local-env.sh.sample for an example configuration.

Add heroku remotes to your git repo:

git remote add qa git@heroku.com:designopen-board-qa.git
git remote add prod git@heroku.com:designopen-board.git

If you don't have rights to push to the remote and get this error: Permission denied (publickey). See Adding keys to Heroku.

3. Install npm modules:

In project root:

npm install

Development

This project uses npm scripts as task automation.

To start local server:

There's no live reload.

Database migrations

Database migrations are handled with node-db-migrate. When creating new migration scripts, see their API documentation. Important: Their MongoDB driver does not implement many of the functions mentioned in API, check source code. They have documentation also here: http://db-migrate.readthedocs.org/en/v0.9.x/.

Note: to use db-migrate command, you must install it globally with npm install db-migrate -g, otherwise you have to use: ./node_modules/db-migrate/bin/db-migrate.

Whenever you have data changes in models, you must create a new migration script:

Migration shortcuts

Releasing

Release flow:

  1. Merge changes to master

  2. Wait for green light in CI

  3. Push changes to desired environment, for example qa:

    git checkout master
    git push qa

    You can also release a certain local branch. For example releasing from node branch to qa: git push qa node:master

  4. Check that the environment responds and logs look ok