---
hide:

- navigation

---

# Getting Started

!!! abstract "Abstract"

    In this short getting started guide we show the dependencies to run the database repository and perform a small, 
    local, test deployment for quickly trying out the features that the repository offers.

## Requirements

### Hardware

For this small, local, test deployment any modern hardware would suffice, we recommend a machine with at least:

- 8 Cores (can be virtual cores)
- 16GB RAM
- 100GB SSD memory
- Fast internet connection

### Software

Install [:fontawesome-brands-docker: Docker Engine](https://docs.docker.com/engine/install/) for your OS.

## Deployment

We currently maintain 14 images on [Dockerhub](https://hub.docker.com/u/dbrepo).

### Docker

=== ":fontawesome-brands-linux: Linux"

    Download the latest [`docker-compose.yml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/docker-compose.prod.yml) 
    and [`.env`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.env.unix.example) 
    
        $ curl -o docker-compose.yml https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/docker-compose.prod.yml
        $ curl -o .env https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.env.unix.example

    Start the services

        $ docker-compose up -d

=== ":fontawesome-brands-apple: macOS"

    Download the latest [`docker-compose.yml`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/docker-compose.prod.yml) 
    and [`.env`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.env.unix.example) 
    
        $ curl -o docker-compose.yml https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/docker-compose.prod.yml
        $ curl -o .env https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/master/.env.unix.example

    Start the services

        $ docker-compose up -d

The system is auto-configured for a small, local, test deployment. You need to place the `.env` file in the same
directory as the `docker-compose.yml`.

### Firewall

Make sure the following ports can pass through your firewall from the open Internet `0.0.0.0/0`:

* `80/tcp` for the frontend, will be redirected when a SSL/TLS certificate is installed
* `443/tcp` for the frontend
* `9095/tcp` for the Gateway Service, exposing the HTTP API
* `5672/tcp` for the AMQP API

Activate them both in your virtualization infrastructure and the local firewall on your virtual machine.

## Development

We invite all open-source developers to help us fixing bugs and introducing features to the source code. Get involved by
sending a mail to Prof. Andreas Rauber and Projektass. Martin Weise.

### Software

We develop all packages with the following software requirements:

1. [Java OpenJDK](https://openjdk.java.net/) 11
2. [Maven](https://maven.apache.org/) 3.0.0+
3. [Node.js](https://nodejs.org/en/) 14+
3. [Yarn](https://yarnpkg.com/getting-started/install#nodejs-1610-1) 1.21.0+
4. [Postgres](https://www.postgresql.org/) 12+
5. [MariaDB](https://mariadb.org/) 10+

### Building

#### Services and GUI

For local development you need to clone the repository and build the services from scratch:

    git clone git@gitlab.phaidra.org:fair-data-austria-db-repository/fda-services.git
    make build


#### Swagger Codegen

It is possible to use the Swagger documentation of the services to generate HTTP clients to interact with DBRepo.
Clients can only begenerated when DBRepo is running. Just download
the [`swagger-codegen-cli.jar`](https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/) and start the services:

    docker-compose up -d

Run the codegen tool:

    java -jar ./swagger-codegen-cli-2.x.y.jar generate -i ./api-docs.yaml -l python -o ./api-container

### Debugging

#### Backend

Start all containers with docker-compose:

    docker-compose up -d
    docker container stop fda-xxxxx-service # <<< replace with the service you want to debug
    docker container rm fda-xxxxx-service # <<< replace with the service you want to debug
    docker-compose logs -f

Then start the container in your IDE and debug it.

#### Frontend

Start all containers with docker-compose:

    docker-compose up -d
    docker container stop fda-ui && docker container rm fda-ui
    docker-compose logs -f

Then start the frontend in another console window:

    yarn --cwd=./fda-ui dev