df
To first run the application in your local environment you can use
# First: (re-)build the app image including migration
make backend_build
# Second: run the db and the app as docker containers
make backend
or run those commands, listed in Makefile
, manually with your terminal in the repository root directory.
Important: The docker commands were tested on fedora. On Windows some commands might differ or do not work at all. E. g. make migrateup
.
That is due to the fact that on Windows the parameters --privileged=true
and --network host
do not exist or are handled differently.
Prerequisites
To create a local development environment you need some tools.
Backend
Basics
You need the basics if you just want to start a test environment to test the application.
Optional but recommended
If you wish to use the Makefile
you need make
which should be available for most linux systems.
However if you are on Windows you could use GnuWin32.Make
which can be installed on Windows 11 using:
winget install GnuWin32.Make
Database
To work with the database you need the following tools.
Container software
You can use either docker
or podman
. But the Makefile
uses the docker
command.
If you wish to use podman
you can create a symlink
to make it work.
On fedora
it works like this:
# Rename the docker binary:
sudo mv /usr/bin/docker /usr/bin/docker_bkp
# Create a symlink
sudo ln -s /usr/bin/podman /usr/bin/docker
golang-migrate
golang-migrate
makes db schema initialization and updates easy.
You can install it as described here.
Furthermore the binary should be in your PATH
environment variable.
Server
To run the server you need go
installed. See here for instructions
Developing
Should you want to make changes you need further tools.
- sqlc: For generating code from
postgres
queries - gomock: For generating a mock database for testing
- evans: For testing gRPC endpoints
- protoc: For generating code from
.proto
-files (gRPC)- plugins:
go install \ github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \ github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \ google.golang.org/protobuf/cmd/protoc-gen-go \ google.golang.org/grpc/cmd/protoc-gen-go-grpc
- plugins:
Important: If you install protoc
on fedora you will need an additional package to make it work. Use the following command for setup:
sudo dnf install -y protobuf-compiler protobuf-devel
Frontend
This section will be added as soon as we begin with the development of the frontend