docker run --rm -p 3030:3000 gotenberg/gotenberg:8

## Configuration

This application can be configured using a `config.json` file in the root of the project, or by using environment variables. Values set in environment variables will override the values from the `config.json` file.

You can use the `config.example.json` file as a starting point for your `config.json`.

### Environment Variables

The following environment variables can be used for configuration:

| Variable              | Description                                   |
| --------------------- | --------------------------------------------- |
| `PDF_HOSTNAME`        | The hostname of the PDF generator (Gotenberg) |
| `GITEA_URL`           | The URL of your Gitea instance                |
| `GITEA_TOKEN`         | Your Gitea API token                          |
| `EMAIL_FROM`          | The "From" address for sending emails         |
| `EMAIL_SMTP_HOST`     | The SMTP server host                          |
| `EMAIL_SMTP_PORT`     | The SMTP server port                          |
| `EMAIL_SMTP_USER`     | The username for SMTP authentication          |
| `EMAIL_SMTP_PASSWORD` | The password for SMTP authentication          |

## API Endpoints

### POST /invoice

Creates a new invoice.

```bash
curl -X POST -H "Content-Type: application/json" -d '{
  "debtor": {
    "name": "John Doe",
    "Address": {
      "street": "Musterstrasse",
      "number": "1",
      "zipCode": "1234",
      "place": "Musterstadt",
      "country": "CH"
    },
    "contact": "john.doe@example.com"
  },
  "creditor": {
    "name": "Jane Doe",
    "Address": {
      "street": "Beispielweg",
      "number": "2",
      "zipCode": "5678",
      "place": "Beispielhausen",
      "country": "CH"
    },
    "contact": "jane.doe@example.com",
    "iban": "CH1234567890123456789"
  },
  "durationThreshold": "1h",
  "hourlyRate": 100,
  "repositories": [
    "lou-taylor/accounting"
  ]
}' http://localhost:8080/invoice
```

### POST /invoice/send

Creates a new invoice and sends it by email.

```bash
curl -X POST -H "Content-Type: application/json" -d '{
  "to": ["john.doe@example.com"],
  "subject": "Invoice for project lou-taylor/accounting",
  "body": "Hi John,\n\nPlease find attached the invoice for the project lou-taylor/accounting.\n\nBest regards,\nJane Doe",
  "invoice": {
    "debtor": {
      "name": "John Doe",
      "Address": {
        "street": "Musterstrasse",
        "number": "1",
        "zipCode": "1234",
        "place": "Musterstadt",
        "country": "CH"
      },
      "contact": "john.doe@example.com"
    },
    "creditor": {
      "name": "Jane Doe",
      "Address": {
        "street": "Beispielweg",
        "number": "2",
        "zipCode": "5678",
        "place": "Beispielhausen",
        "country": "CH"
      },
      "contact": "jane.doe@example.com",
      "iban": "CH1234567890123456789"
    },
    "durationThreshold": "1h",
    "hourlyRate": 100,
    "repositories": [
      "lou-taylor/accounting"
    ]
  }
}' http://localhost:8080/invoice/send
```

```

```
