Gringotts is a service which can be used as gateway between your payment provider and for example your SAAS application. It allows you to easily handle customers, subscriptions and invoice generation for your users.
- Subscriptions are always monthly
- Subscription-periods start at the first day the customer started the subscription (exp. 2021-01-15 to 2021-02-14, 2021-02-15 to 2021-03-14, ...)
- Invoices are generated at the end of the subscription-period (exp. 2021-01-15 to 2021-02-14 => invoice is generated on 2021-02-14)
The container image can be found at ghcr.io/geprog/gringotts
.
Name | Description | Default |
---|---|---|
PORT | Port on which the server should listen | 7171 |
PUBLIC_URL | Url on which the server is reachable | http://localhost:7171 |
POSTGRES_URL | Url to the postgres database | postgres://postgres:postgres@localhost:5432/gringotts |
ADMIN_TOKEN | Token which is used to authenticate admin endpoints like project | |
CREATE_PROJECT_DATA | Json string which is used to create the first project | |
DATA_PATH | Path to the data directory | Local: ./data Container: /app/data |
GOTENBERG_URL | Url to the gotenberg server | http://localhost:3000 |
JWT_SECRET | Secret used to sign jwt tokens | supersecret |
MAIL_FROM | From address for emails `My Project my-project@example.org | |
MAIL_HOST | Hostname of the smtp server | |
MAIL_PORT | Port of the smtp server | 25 |
MAIL_USERNAME | Username for the smtp server | |
MAIL_PASSWORD | Password for the smtp server | |
MAIL_SECURE | Use secure connection for the smtp server | false |
MAIL_REQUIRE_TLS | Require tls for the smtp server | false |
To create a project on start you can set the CREATE_PROJECT_DATA
environment variable to a json string like this:
CREATE_PROJECT_DATA='{ "name": "TestProject", "mollieApiKey": "123", "paymentProvider": "mollie", "webhookUrl": "http://localhost:4000/payments/webhook", "currency": "EUR", "vatRate": 19.0, "invoiceData": { "email": "test@example.com", "name": "Company ABC", "addressLine1": "Diagon Alley 1337", "addressLine2": "string", "zipCode": "12345", "city": "London", "country": "Germany", "logo": "data:image/svg+xml;base64,...." } }'
Keep in mind that this wont be updated later if you change the environment variables after the first start.
The OpenApi documentation can be found at https://<PUBLIC_URL>/docs
like http://localhost:7171/docs
docker-compose up -d
# install dependencies
pnpm i
# copy .env.example to .env and adjust the values
cp .env.example .env
# start the server
pnpm start