Setting up a development environment
====================================
These instructions will describe how to set up a development environment for the Numbas runtime and editor.
The editor is a `Django `__ app.
.. todo::
Include a screencast of me going through these steps?
Pre-requisites
--------------
Create a directory named ``numbas``, which you'll use to store all the git repositories and other files associated with the development environment.
You'll need Python 3.8 or later and the version control tool *git*.
Windows
*******
#. Install Python 3 from `python.org/download `_.
#. Install `Git for Windows `_.
#. Install GNU ``make``.
One way of doing this is through the `chocolatey `__ package manager.
``make`` is also included with `Cygwin `__.
Ubuntu
******
#. Install Git and Python 3 using the packaging system:
.. code-block:: console
$ apt install git python3
Mac
***
Python 3 is pre-installed on MacOS.
Most versions of MacOS also have git pre-installed.
If not, it's included with XCode, or you can follow the instructions at `git-scm.com `__.
Set up a Python virtual environment
-----------------------------------
It's a good idea to use a Python virtual environment during development work, to avoid conflicts with any other projects you're working on.
If you don't already have the ``virtualenv`` package installed, install it:
.. code-block:: console
$ pip3 install virtualenv
Then, create a virtual environment:
.. code-block:: console
$ virtualenv -p python3 numbas_venv
To activate it on Linux or Mac:
.. code-block:: console
$ source numbas_venv/bin/activate
To activate it on Windows:
.. code-block:: batch
> numbas_venv\Scripts\activate
You'll need to activate the virtual environment each time you open a new terminal.
Clone the repositories
----------------------
#. The Numbas runtime compiler:
.. code-block:: console
$ git clone https://github.com/numbas/Numbas compiler
#. The Numbas editor:
.. code-block:: console
git clone https://github.com/numbas/editor editor
Install required Python packages
--------------------------------
Both the compiler and editor have lists of packages that they require.
There is a separate file listing packages required to build the editor documentation.
Install all of these:
.. code-block:: console
$ pip3 install -r editor/requirements.txt
$ pip3 install -r editor/requirements-docs.txt
$ pip3 install -r compiler/requirements.txt
Set up the editor
-----------------
Run the "first setup" script:
.. code-block:: console
$ cd editor
$ python first_setup.py
This starts a web-based setup interface where you can configure the editor's settings.
Open http://localhost:8000 in your browser.
.. image:: images/web-setup.png
:alt: The web-based setup interface.
Tick :guilabel:`Is this installation for development?`, fill in the :guilabel:`Path of the Numbas compiler` field and the superuser details.
Then click :guilabel:`Save`.
Once the setup jobs have finished, go back to the terminal and end the setup script (normally :kbd:`Ctrl-C` does it)).
If you make any mistakes, you can run the script again, or edit ``numbas/settings.py`` directly.
Run the editor server
---------------------
There is a script called ``manage.py`` which provides a variety of tools, including a development server.
Run:
.. code-block:: console
$ python manage.py runserver
Open http://localhost:8000 in your web browser.
The editor should now be usable: try creating a question and running it.