This repository contains the source code of cuba.genomefoundry.org, a website of the Edinburgh Genome Foundry enabling anyone to use some of the EGF's biological software.
CUBA is based on the CAB boilerplate, making it easy to create new apps with a form in the frontend and custom computations in the backend. It features job queues (with progress feedback for the user), form widgets like file uploaders, help buttons, and many more.
The next steps will download, install, and launch CUBA on your computer.
-
Install
docker
anddocker-compose
on your machine. This step depends on your machine (Windows, Linux, MacOS) so you'll need to google it. -
Download CUBA from Github:
git clone https://github.com/Edinburgh-Genome-Foundry/CUBA.git
- Go to the root
CUBA/
directory (the one containing this README and thedocker-compose.yml
) and launch your application in development mode. The first time you try this, Docker will download and build a lot of things, which may take several minutes. It will only take a few seconds the next times you run this command.
docker-compose up
- Go to your browser and type
localhost
or127.0.0.1
in the address bar. You should see the website appear. the console in which you launcheddocker-compose
will keep printing logs of the different components (django, vue) so you can keep track and debug.
The next steps will add a new app to the CUBA project.
-
Go to
frontend/src/components/scenarios
and create a new scenario view with a form, for instance by duplicating the file ExampleScenario.vue. -
Register your scenario in file
scenarios.js
(in the same folder) by addingrequire('./ExampleScenario')
under the category you want. You should now see your new scenario in the home page and the menu of the website. -
Next we will add some backend computations to process the form and return a result. First go to
backend/app/views
and create a new folder on the model of/example_scenario
. -
Register the scenario in
backend/app/views/__init__.py
by adding
from .example_scenario import ExampleScenarioView
- Register the URL by adding the following line at the end of
backend/website/urls.py
:
url(r'^api/start/example_scenario$',
views.ExampleScenarioView.as_view()),
- That's it. You now have a new app with frontend and backend !
The next steps will put your website on the web. Note that many other deployment workflows are possible.
-
Get a hosting server (for instance from Amazon Web Services or Digital Ocean). Get the IP address of this server (for instance
123.12.123.123
but it could bemydomain.com
if you have registered this domain and pointed it to your server). -
Log into this server (
ssh root@123.12.123.123
orssh root@mydomain.com
) and install Docker and Docker-Compose (some Digital Ocean servers come with these already installed). -
From your computer, in the CUBA root directory, run the following command to create a code repository on the distant server, and register that distant repository under the name
prodserver
./init_remote_git.sh root@123.12.123.123 CUBA prodserver
- On the remote server, in the folder
CUBA.git
, start the website in production mode:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build -d
- Wait some time and go in your browser at the address
123.12.123.123
, your website should be live !
Every time you want to update the website, from your computer in the CUBA root
directory run git push prodserver master
. You will need to rebuild the
containers on the server if you have modified the frontend or added dependencies
to the backend (we may simplify this later).
CUBA is an open source software originally written by Zulko at the Edinburgh Genome Foundry and released on Github under the MIT licence (Copyright 2017 Edinburgh Genome Foundry). Everyone is welcome to contribute!
EGF Codon is powered by the EGF Codons synthetic biology software suite for DNA design, manufacturing and validation.