openwhyd

Deploy Openwhyd to a DigitalOcean instance

Read How to deploy on DigitalOcean.


Install and run Openwhyd locally

Using Docker (simple)

Docker makes it easy and safe to install and start the two servers required for Openwhyd: the MongoDB database server, and the web/application server (formerly called whydJS).

With this approach, you don’t need to have Node.js installed on your computer.

If you intend to make changes to Openwhyd’s source code, skip to the “Setup for development” section. Otherwise, don’t forget to rebuild Openwhyd’ Docker container after every change. (e.g. docker compose up --build)

Prerequisites

All you need is:

Note for users of Windows Home

Docker for Windows Home runs on a virtual box, so localhost may not work. For all the instructions below, if localhost is not working, replace it with your docker ip. You can find your docker ip with :

$ docker-machine ip

Clone and run

Commands to type in your shell:

$ git clone https://github.com/openwhyd/openwhyd.git
$ cd openwhyd
$ docker compose up --build --detach                # starts openwhyd's web server and database in the background
$ open http://localhost:8080                        # ... in your web browser => you should see Openwhyd's home page! 🎉
$ docker compose down --rmi local --remove-orphans  # when you're done: stop openwhyd's web server and database

After making changes to the source code, don’t forget to restart with docker compose up --build --detach, so the containers are rebuilt with the changes.

Run automated tests

Commands to run all automated tests in Docker containers:

$ make test-in-docker

Connect to the database

If you want to connect to the MongoDB database with the mongo shell using docker-compose container:

$ docker-compose exec mongo mongo mongodb://localhost:27117/openwhyd_test

Setup for development

Clone and run

Type these shell commands to run Openwhyd on your computer, against a MongoDB database running in a Docker container:

$ git clone https://github.com/openwhyd/openwhyd.git
$ cd openwhyd
$ nvm use                     # picks the expected version of Node.js, assuming it's installed
$ make dev                    # starts openwhyd's web server and database in the background
$ open http://localhost:8080  # ... in your web browser => you should see Openwhyd's home page! 🎉
$ make down                   # when you're done: stop openwhyd's web server and database

This approach makes it more efficient than the one above to iterate on the code, because there is not need to rebuild a Docker container after every change.

Testing

Run all tests, including approval tests:

$ make test

To see what other scripts are available, run:

$ make

And check out the list of scripts provided in package.json.

Sample data

If you want to import some user data from openwhyd.org into your local/test database, you can use the following script:

$ make dev                              # starts openwhyd's web server and database in the background
$ make docker-seed                      # clears the database and restarts openwhyd's container
$ node scripts/import-from-prod.js test # imports 21 posts from https://openwhyd.org/test

After that, you will be able to sign in as an administrator using the credentials returned by the script.

The data imported can be seen from http://localhost:8080/all


Install and run manually (advanced)

If you don’t want to use Docker (or can’t), you can follow these instructions.

Setup (advanced)

Usage (advanced)


Configuration (advanced)

Command-line arguments

Openwhyd’s entry point (app.js) accepts two kinds of command-line arguments:

Advanced use cases

Test email digests

If you want to test email digests locally:

$ node app.js --emailAdminsOnly --digestInterval 5000 --digestImmediate true

Map localhost to a domain name

If you want to test Deezer Connect, you will need your server to be reachable through a domain name. Here’s a way to achieve that:

  1. Configure your Deezer app to allow connections from http://local.openwhyd.org:8080;
  2. Add local.openwhyd.org to your /private/etc/hosts file;
  3. Flush the corresponding cache: $ dscacheutil -flushcache;
  4. Start Openwhyd with $ npm start -- --urlPrefix http://local.openwhyd.org:8080.

Environment variables

Other variables to update

The value of following constants is required to connect to the corresponding APIs: