SMR API
The Satisfactory Mod Repository backend API
Running
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
Configuration
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 -f docker-compose.dev.yml 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).
Contributing
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