UXBOX - The Open-Source prototyping tool
Clojure JavaScript HTML CSS Shell PLpgSQL





Development environment


The development environment consists in a docker container that mounts your local copy of the uxbox souce code directory tree and executes a tmux inside the container in order to facilitate execute multiple processes inside.

System requirements

You should have docker installed in your system in order to set up properly the uxbox development enviroment.

In debian like linux distributions you can install it executing:

sudo apt-get install docker

Start the docker container

Requires a minimum knowledge of tmux usage in order to use that development environment.

For start it, staying in this repository, execute:

./manage.sh run

This will do the following:

  • Build the image if it is not done before.
  • Download all repositories if them are not downloaded previously.
  • Start a container with predefined tmux layout.
  • Start all needed processes such as gulp and figwheel.

First steps with tmux

Now having the the container running and tmux open inside the container, you are free to execute any commands and open many shells as you want.

You can create a new shell just pressing the Ctr+b c shortcut. And Ctrl+b w for switch between windows, Ctrl+b & for kill the current window.

Inside the tmux session


The UI related tasks starts automatically so you do not need do anything. The window 0 and window 1 are used for the UI related environment.


The backend related environment is located in the window 2, and you can go directly to it using ctrl+b 2 shortcut.

By default this tasks are performed:

  • Start postgresql.
  • Load initial fixtures into the database.

The backend is not started automatically, and frontend code by default does not requires that (because it uses a remote server on default config).

You can start it just execting the run.sh script:


You also can start an repl and strart the backend inside of them:

lein repl

And use (start) to start all the environment, (stop) for stoping it and (reset) for restart with code reloading. If some exception is raised when code is reloaded, just use (refresh) in order to finish correctly the code swaping and later use (reset) again.


This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.