Thanks for taking the time to improve PocketBase!
This document describes how to prepare a PR for a change in the main repository.
- Go 1.21+ (for making changes in the Go code)
- Node 18+ (for making changes in the Admin UI)
If you haven't already, you can fork the main repository and clone your fork so that you can work locally:
git clone https://github.com/your_username/pocketbase.git
Important
It is recommended to create a new branch from master for each of your bugfixes and features. This is required if you are planning to submit multiple PRs in order to keep the changes separate for review until they eventually get merged.
PocketBase is distributed as a Go package, which means that in order to run the project you'll have to create a Go main
program that imports the package.
The repository already includes such program, located in examples/base
, that is also used for the prebuilt executables.
So, let's assume that you already done some changes in the PocketBase Go code and you want now to run them:
- Navigate to
examples/base
- Run
go run main.go serve
This will start a web server on http://localhost:8090
with the embedded prebuilt Admin UI from ui/dist
. And that's it!
Before making a PR to the main repository, it is a good idea to:
-
Add unit/integration tests for your changes (we are using the standard
testing
go package). To run the tests, you could execute (while in the root project directory):go test ./... # or using the Makefile make test
-
Run the linter - golangci (see how to install):
golangci-lint run -c ./golangci.yml ./... # or using the Makefile make lint
PocketBase Admin UI is a single-page application (SPA) built with Svelte and Vite.
To start the Admin UI:
- Navigate to the
ui
project directory - Run
npm install
to install the node dependencies - Start vite's dev server
npm run dev
You could open the browser and access the running Admin UI at http://localhost:3000
.
Since the Admin UI is just a client-side application, you need to have the PocketBase backend server also running in the background (either manually running the examples/base/main.go
or download a prebuilt executable).
Note
By default, the Admin UI is expecting the backend server to be started at http://localhost:8090
, but you could change that by creating a new ui/.env.development.local
file with PB_BACKEND_URL = YOUR_ADDRESS
variable inside it.
Every change you make in the Admin UI should be automatically reflected in the browser at http://localhost:3000
without reloading the page.
Once you are done with your changes, you have to build the Admin UI with npm run build
, so that it can be embedded in the go package. And that's it - you can make your PR to the main PocketBase repository.