Tree-based mapping of beliefs, arguments, and evidence.
Switch branches/tags
Nothing to show
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.

Debate Map

Join the chat at See the task list at

The Debate Map project is a web platform aimed at improving the efficiency of discussion and debate. It's crowd-sourced and open-source, and welcomes reader contributions.

Its primary improvements are (in short):

  • Restructuring dialogue to make use of both dimensions.
  • Breaking down lines of reasoning into single-sentence "nodes".
  • Providing rich tools that operate on those nodes -- such as rating, tagging, statistical analysis, and belief-tree sharing and comparison.

The below is a screenshot from one of the debates: See the task list at

The maps are constructed from “theses” (blue) which make claims, and “arguments” (green and red) which support/oppose those claims. This structure cuts down on reading time, and lets us focus on the underlying chains of reasoning instead of parsing statement meanings and connections.

For more information, visit the website at:

Workspace setup

  1. Clone the repo to disk:
  2. Run npm install in the root project folder.
  3. Using git, revert the node_modules folder. (it has some git-tracked modifications, which get overwritten during npm install)

Note that I haven't thoroughly tested the setup process, so if something fails for you, I probably just forgot a step or two, so make an issue describing where you're stuck.

For recommended setup of your code editor and other tools, see: Editor setup

Firebase setup + project config

  1. Create two Google Firebase projects -- one for development, one for production.
  2. Edit the .firebaserc and Scripts/Build/CreateConfig.js files, replacing their paths and data with your own.
  3. Add at least one form of authentication to your Firebase projects. (Google sign-in is easiest)
  4. Run the project locally. (see "Running locally" section below)
  5. Sign in, using the panel at the top-right.
  6. Add "?init=true" to the address-bar url, and reload the page.
  7. Press the "Initialize database" button which will appear at the top-left.

Running locally

  1. Run tsc (or npm run tsc-watch) in a console, and keep it running in the background.
  2. Run npm run dev in the root project folder. (or npm run dev-with-stats)
  3. Navigate to localhost:3000.

Note that if you add/remove/modify any modules required from Scripts/Config/Vendors.js, you'll then need to run npm run create-vendors[-quick]. (those modules are compiled separately, to speed up the main compile process)

Deploying to Firebase

  1. Run tsc (or npm run tsc-watch) in a console, and keep it running in the background. (this reduces deploy:prod-quick compile times from ~59s to ~32s, by enabling incremental compilation)
  2. Run npm run deploy:[dev/prod/prod-quick]. Note that deploy:prod-quick time is ~32s, vs ~86s for deploy:prod (since the former doesn't use minification and such).

Editor setup

The below are optional recommendations on your editor setup, which will make editing the project more efficient and less error-prone. (since it matches the setup I use)

Browser: Chrome
Editor: Visual Studio Code
VSCode extensions:

  • Search node_modules: Very helpful for quickly opening files in modules under node_modules.
  • TypeScript Importer: Lets you press alt+enter to auto-import the current symbol from whatever module it's in.
  • TypeScript Hero: Same as above. This one's not quite as nice, but picks up some that the above misses. Also, it has an "import all missing" command.


  • If you get an odd compile error or the CSS does not seem to be loading for the site (when recompiling), try deleting the cache at "node_modules/.cache/hard-source".