aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 7245274d30a2f495ab7edb5f1cf10060ff3b3c95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Tilo

A visual explorer for the biological Tree of Life.
[Available online](https://terryt.dev/tilo/).

## Project Overview

The UI is largely coded in Typescript, using the [Vue](https://vuejs.org)
framework, with [Vite](https://vitejs.dev) as the build tool. Much of
the styling is done using [Tailwind](https://tailwindcss.com). Packages
are managed using [npm](https://www.npmjs.com) and [Node.js](https://nodejs.org).

On the server side, tree data is served and generated using Python, with
packages managed using [Pip](https://pypi.org/project/pip). Tree data is
stored using [Sqlite](https://www.sqlite.org).

## Files

### Project Level
-   **package.json**:       Contains npm project information, such as package dependencies.
-   **package-lock.json**:  Auto-generated by npm. Used for replicable installations.
-   **LICENCE.txt**:        This project's license (MIT).
### Client & Server
-   **src**:                Contains most of the client-side code.
-   **index.html**:         Holds code for the main page, into which code from 'src' will be included.
-   **public**:             Contains files to be copied unchanged in the production-build of the UI.
-   **backend**:            Contains code for the server, and for generating tree-of-life data.
### Configuration
-   **vite.config.js**:     For configuring Vite.
-   **tailwind.config.js**: For configuring Tailwind.
-   **postcss.config.js**:  For configuring Tailwind.
-   **tsconfig.json**:      For configuring Typescript.
### Other
-   **.gitignore**:         Lists files to be ignored if using [Git](https://git-scm.com/downloads).
-   **DEPLOY.md**:          Instructions for deployment on an Apache server on Ubuntu.
-   **prebuild.sh**:        Bash script for automating some steps of deployment.

## Setup Instructions

Note: Running your own version of the client and server should be straightforward,
but generating the database that they use takes a long time. More details are
in `backend/tolData/README.md`.

### Client Side
1.  If you don't have npm or Node.js installed, you can download a Node installer from
    <https://nodejs.org/en/download>, which includes npm. This project was coded using version 16.
1.  In this directory, run the command `npm install`, which install packages listed in
    package.json, creating a `node_modules` directory to hold them.
1.  Running `npm run dev` starts the dev server.

### Server Side
1.  If you don't have Python 3 installed, see <https://www.python.org/downloads>.
    The package manager Pip is included.
1.  The database used by the server is generated using scripts in `backend/tol_data/`.
    See it's README for instructions. You'll likely need to install a few
    packages using Pip.
1.  The dev server is started by running `./server.py` in the `backend/` directory.
    To run it, you'll need to install jsonpickle. This can be done using
    `python -m pip install jsonpickle`.

    If you want to keep the installed package separate from your system's packages,
    it's common practice to use [venv](https://docs.python.org/3/tutorial/venv.html).

### Running Tilo
1.  In `backend/`, run `./server.py`, which starts a basic HTTP server that provides
    tree-of-life data on port 8000.
1.  In this directory, or somewhere in `src/`, run `npm run dev`. This starts a dev server that
    provides Tilo's user interface on port 3000.
1.  Open a web browser, and navigate to <http://localhost:3000>.

## Deploying the Website
This is significantly dependent on the server platform. `DEPLOY.md` contains
instructions for deployment on an Apache server on an Ubuntu system.

## Licence

Tilo is licensed under the [MIT Licence](https://github.com/terry06890/tilo/blob/main/LICENCE.txt).