# Backend

This repository contains the backend code for the application. It utilizes **FastAPI** to quickly create a RESTful API that exposes the endpoints of the route optimizer.

## Getting Started

### Directory Structure
- The code for the Python application is located in the `src` directory.
- Package management is handled with **pipenv**, and the dependencies are listed in the `Pipfile`.
- Since the application is designed to be deployed in a container, the `Dockerfile` is provided to build the image.

### Setting Up the Development Environment

To set up your development environment using **pipenv**, follow these steps:

1. Install `pipenv` by running:
    ```bash
    sudo apt install pipenv
    ```

2. Create and activate a virtual environment:
    ```bash
    pipenv shell
    ```

3. Install the dependencies listed in the `Pipfile`:
    ```bash
    pipenv install
    ```

4. The virtual environment will be created under:
    ```bash
    ~/.local/share/virtualenvs/...
    ```

### Deployment
To deploy the backend docker container, we use kubernetes. Modifications to the backend are automatically pushed to a two-stage environment through the CI pipeline. See [deployment/README](deployment/README.md] for further information.

The deployment configuration is included as a submodule in the `deployment` directory. The standalone repository is under [https://git.kluster.moll.re/anydev/anyway-backend-deployment/](https://git.kluster.moll.re/anydev/anyway-backend-deployment/).


## Development
TBD