chore: update README.md (#141)
continuous-integration/drone/push Build is passing Details

Reviewed-on: twhelp/core#141
This commit is contained in:
Dawid Wysokiński 2022-12-20 08:10:10 +00:00
parent d244dc69bf
commit 05a80cdc10
2 changed files with 90 additions and 7 deletions

View File

@ -1,10 +1,93 @@
# TWHelp
# core
## Local development
TWHelp is a project aiming to provide:
**Prerequisites:**
1. Kubernetes
2. kustomize
3. helm
4. skaffold
1. Easy access to Tribal Wars data, for both users and developers.
2. Scripts & tools to facilitate gameplay.
## Getting started
### Development
#### Setting up the environment
Prerequisites:
1. **Go** (>= 1.19)
2. **Node.js** (LTS, needed for commitlint)
3. **Kubernetes** (>= 1.25.0)
1. **minikube**
2. **Docker Desktop**
4. **Docker CLI**
5. **Skaffold**
6. **pre-commit**
7. **IDE/Code editor** (e.g. Goland, VSCode, vim, neovim)
8. **direnv** (optional, but recommended)
```shell
# if you have direnv installed
direnv allow
# install git hooks and required tools
make install
# run all required services
skaffold run --port-forward=true --tail=true
# stop all of them
skaffold delete
```
#### Running unit tests
At least one of the following is required to run unit tests:
- Docker ([dockertest](https://github.com/ory/dockertest) will spin up a database)
- Postgres database
```shell
# Docker
go test -v ./...
# Postgres database
TESTS_DB_DSN=postgres://twhelp:twhelp_pass@127.0.0.1/twhelp go test -v ./...
```
#### Creating a new database migration
```shell
# create a migration
go run ./cmd/twhelp/main.go db create go migration 1
```
![img.png](docs/migration.png)
## Configuration options
Configuration options can be specified via environment variables.
| Env variable | Default | Description |
|--------------------------------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ``APP_MODE`` | ``development`` | Whether to use development or production settings |
| ``DB_DSN`` | | **Required.** Only Postgres is supported. Example: ``postgres://user:password@host:5432/dbname?sslmode=disable`` (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING) |
| ``DB_MAX_OPEN_CONNECTIONS`` | ``5`` | Maximum number of open connections to the database (https://pkg.go.dev/database/sql#DB.SetMaxOpenConns) |
| ``DB_MAX_IDLE_CONNECTIONS`` | ``2`` | Maximum number of connections in the idle connection pool (https://pkg.go.dev/database/sql#DB.SetMaxIdleConns) |
| ``DB_CONNECTION_MAX_LIFETIME`` | ``3m`` | Maximum amount of time a connection may be reused (https://pkg.go.dev/database/sql#DB.SetConnMaxLifetime) |
| ``AMQP_URI`` | | **Required.** Example: ``amqp://user:password@host:5672/`` (https://www.rabbitmq.com/uri-spec.html) |
| ``AMQP_PREFETCH_COUNT`` | ``2`` | https://www.rabbitmq.com/consumer-prefetch.html |
| ``API_SWAGGER_ENABLED`` | ``false`` | Enables the API documentation endpoints (e.g. ``/api/v1/swagger/index.html``, ``/api/v1/swagger/doc.json``) |
| ``API_SWAGGER_HOST`` | | Host (name or ip) serving the API (e.g. tribalwarshelp.com) |
| ``API_SWAGGER_SCHEMES`` | ``http,https`` | Comma-separated list of protocols |
| ``API_CORS_ENABLED`` | ``false`` | Enables CORS headers |
| ``API_CORS_ALLOWED_ORIGINS`` | | Comma-separated list of allowed domains |
| ``API_CORS_ALLOW_CREDENTIALS`` | ``false`` | Whether requests with credentials are allowed |
| ``API_CORS_ALLOWED_METHODS`` | ``HEAD,GET`` | Comma-separated list of allowed methods |
| ``API_CORS_MAX_AGE`` | ``300`` | Max time to cache response (seconds) |
## License
Distributed under the MIT License. See ``LICENSE`` for more information.
## Contact
Dawid Wysokiński - [contact@dwysokinski.me](mailto:contact@dwysokinski.me)

BIN
docs/migration.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB