The Satisfactory Mod Repository backend API
If you are under Linux, you will need to install the following packages (or your distro's equivalent):
sudo apt update && sudo apt install -y build-essential libpng-dev
You will also need to generate the GQL server and REST docs via:
go generate -x -tags tools ./...
To start the API, execute:
go run cmd/api/serve.go
Running the API has a lot of pre-requisites.
To run the API, you will need to have a working Postgres, Redis and Storage. There is a dev composefile that you can start via:
docker compose up -d
It is suggested you create a configuration file at config.json
(but you can also use environment variables).
Main configuration options:
- Postgres (started with dev composefile)
- Redis (started with dev composefile)
- B2 or S3 (or anything S3-compatible e.g. minio (started with dev composefile))
- GitHub OAuth (https://github.com/settings/developers)
- Google OAuth (https://console.developers.google.com/)
- Facebook OAuth (https://developers.facebook.com/apps/)
- Paseto keys (generated via
go run cmd/paseto/main.go
) - Frontend URL (needed for Google OAuth, otherwise can be ignored)
- VirusTotal API key (https://www.virustotal.com/gui/sign-in)
The config format can be seen in config/config.go
(each dot means a new level of nesting).
After startup requires the following minio commands to be executed:
mc alias set local http://localhost:9000 minio minio123
mc admin user svcacct add local minio --access-key REPLACE_ME_KEY --secret-key REPLACE_ME_SECRET
mc anonymous set public local/smr
Before contributing, please run the linter to ensure the code is clean and well-formed:
golangci-lint run
For some simple formatting issues you can use the --fix
flag, but for more complex issues you will need to fix the code:
golangci-lint run --fix