The character sheets we've always wished for
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
dev/cljs/wish Connect to `wish-server` and listen for push events, as appropriate (#92 Nov 1, 2018
docs Refactor `:5e/spellcaster` to be provide-able (#78) Sep 30, 2018
externs Add extern for AuthResponse.id_token Nov 2, 2018
less Add margin above "Create a New Sheet" link Nov 11, 2018
resources Rename the ids for the :abi-or-feat options to improve namespacing Oct 7, 2018
scripts CI: Skip `lein build` step when not on master (#88) Oct 9, 2018
src Clean up unncessary `println`s Nov 14, 2018
test Connect to `wish-server` and listen for push events, as appropriate (#92 Nov 1, 2018
.gitignore Support Transit sources (#87) Oct 9, 2018
.travis.yml CI: Skip `lein build` step when not on master (#88) Oct 9, 2018
notes.txt Add basic subrace support + handle recursive &merge entity mod Jul 2, 2018
package-lock.json Restore package-lock.json Jun 30, 2018
project.clj Update dependencies Nov 12, 2018
save-syntax.edn Support basic UI for multi-instanced features Jul 6, 2018
syntax.edn Allow implicitly combining :available? with :availability-attr Sep 29, 2018

wish Build Status

The character sheets we've always wished for


The WISH project aims to create the kind of dynamic, living character sheet we’ve always wished for. To achieve this goal, WISH divides character sheets into several parts:

  1. Sheet Data is just the data specific to a character.
  2. The Sheet renderer is the actual set of re-frame views, subscriptions, etc. that render the character sheet. This part is responsible for implementing the system-specific logic, such as health management, etc. Renderers don't know any specific information (such as that the Wizard class can cast spells) but they do know how to handle things generally (such as managing a Wizard's spells and magic use).
  3. Data Sources provide all the specific information that a Sheet Renderer needs to function. Any given sheet may have one or more Data Sources, and they all combine together so that the sheet has all the information it needs. They can be updated without having to change the Sheet Data to get the latest changes.
  4. Providers handle saving and loading Sheet Data and Data Sources, both of which are basically plain text files. WISH does not store your data itself, but rather uses Providers like Google Drive (currently the only provider) so you are in complete control of your data.

WISH sheets will generally come with a builtin data source that provides the core, publically available bits to get you started. Right now we support D&D 5th Edition, and our (incomplete) data source is based on the System Reference Document.

Development Mode

Using Vim:

I recommend using vim-fireplace. You should be able to connect to the repl within Figwheel using the normal methods. My dotfiles have fairly extensive customization if you want a place to start.

Start Cider from Emacs:

Put this in your Emacs config file:

(setq cider-cljs-lein-repl
	"(do (require 'figwheel-sidecar.repl-api)

Navigate to a clojurescript file and start a figwheel REPL with cider-jack-in-clojurescript or (C-c M-J)

Compile css:

Compile css file once.

lein less once

Automatically recompile css file on change.

lein less auto

CSS also gets automatically built when running lein build.

Compile builtin Data Sources:

You'll need to do this on first checkout and any time you update part of a data source:


This script uses wish-compiler under the hood, which can be used to compile custom Data Sources for homebrew, etc. Included in this repo is a wrapper script which automatically downloads the latest version of wish-compiler. If you use this script and need to update your local copy of the binary, just delete .bin/wish-compiler and the script will re-fetch it for you.

Run application:

lein figwheel

Figwheel will automatically push cljs changes to the browser.

Wait a bit, then browse to http://localhost:3450.

Run tests:

lein clean
lein npm install
lein test

The above assumes that you have Chrome installed for running the tests. lein-npm is used to install the Karma test runners for executing the tests.

Production Build

To compile clojurescript to javascript:

lein build