Skip to content
A web app for recursive question-answering with pointers
TypeScript JavaScript Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode Change dev server compile & run Jan 16, 2019
client Refactor number text inputs Sep 12, 2019
server style: prettier Sep 15, 2019
.gitignore Change dev server compile & run Jan 16, 2019
.travis.yml push schemas to Apollo automatically for master/PRs Apr 23, 2019 Create Jun 13, 2018
docker-compose.yml update server-side dependencies only Apr 11, 2019 Minor tweak to Mar 5, 2018
package.json Add cacheDirectories to top-lvl package.json Sep 3, 2019
screenshot.png Replace screencast with more representative screenshot Jun 25, 2019


Mosaic is a web app for recursive question-answering with pointers.

This is an alpha version with bugs, missing features, and usability issues.


  1. Install Docker
  2. Run docker-compose up in the root folder

On first run, you might have to call migrate to initialize the database:

docker exec -it mosaic_api_1 bash
> cd /data
> node_modules/.bin/sequelize db:migrate


To run the backend tests, attach a shell to the Docker api service:

docker exec -it mosaic_api_1 bash
cd /data
yarn test


The code is written in Typescript, but much of it is not correctly annotated. We use Prettier for code formatting.

Offline development

Mosaic uses Auth0 for authentication, which means you will not be able to login without internet access, even while developing locally. To get around this, follow these steps:

  • login with internet access
  • open your localStorage (google how to do this for your browser)
  • save your user_id and access_token values

Now when you try to login in the future while offline, enter these values in your browser on localhost:3000, refresh the page, and you will be logged in.


The app is deployed on Heroku.

To create a development build on your branch, create a pull request. A link to a development build with the latest version of your branch will be on your PR page.

When a branch is merged into master, CI runs. If the CI passes, the main deploy is updated automatically. Configure this setting at

Note that docker-compose.yml and package.json at the root level must be kept in sync.

PR review

All code changes should be made via PRs (as opposed to e.g. via just pushing to master). The PR process is:

  1. PR author makes the PR on Github and assigns Zak as a reviewer, plus anyone else they'd like to review the PR
  2. Zak (and any other reviewers) review the PR. Either: a. The reviewer suggests (more) changes (proceed to step 3). b. The reviewer OKs the PR and notifies the author (proceed to step 4)
  3. PR author makes changes based on the review comments, then notifies the reviewer (proceed to step 2)
  4. The author (NOT reviewer) merges the PR


Mosaic uses Intercom for chat support. Login and enter to view the latest messages.

You can’t perform that action at this time.