To make a new Pushup app, first install the main Pushup executable.
- go 1.18 or later
Make sure the directory where the go tool installs executables is in your
$PATH. It is
$(go env GOPATH)/bin. You can check if this is the case with:
echo $PATH | grep $(go env GOPATH)/bin > /dev/null && echo yes || echo no
Install via official release
Binary executables for multiple platforms are available for download on the project releases page.
Install via git
git clone https://github.com/adhocteam/pushup
Make sure you have Go installed (at least version 1.18), and type:
go install github.com/adhocteam/pushup@latest
Install via Nix
Pushup is available via the Nix package manager. It is
currently in the
- Add to your local profile
$ nix-env -iA nixpkgs.pushup
- Create a temporary shell
$ nix-shell -p pushup
- Create a temporary shell (flakes)
$ nix shell nixpkgs#pushup
- Run Pushup without installing (flakes)
$ nix run nixpkgs#pushup
Creating a new Pushup project
To create a new Pushup project, use the
pushup new command.
Without any additional arguments, it will attempt to create a scaffolded new project in the current directory. However, the directory must be completely empty, or the command will abort. To simulataneously make a new directory and generate a scaffolded project, pass a relative path as argument:
pushup new myproject
The scaffolded new project directory consists of a directory structure for .up files and auxiliary project Go code, and a go.mod file.
Change to the new project directory if necessary, then do a
which compiles the Pushup project to Go code, builds the app, and starts up
If all goes well, you should see a message on the terminal that the Pushup app is running and listening on a port:
↑↑ Pushup ready and listening on 0.0.0.0:8080 ↑↑
By default it listens on port 8080, but with the
flags you can pick your own listener.
Open http://localhost:8080/ in your browser to see the default layout and a welcome index page.
You can print a list of all the routes in your Pushup project with the command
The lefthand column is the URL route, where any dynamic path segments are
denoted with a leading
: colon. The righthand column is the corresponding
$ pushup routes