forked from pocketbase/pocketbase
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[pocketbase#147] added CONTRIBUTING.md
- Loading branch information
1 parent
b1a30f4
commit a076cc9
Showing
2 changed files
with
83 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
Contributing to PocketBase | ||
====================================================================== | ||
|
||
Thanks for taking the time to improve PocketBase! | ||
|
||
This document describes how to prepare a PR for a change in the main repository. | ||
|
||
- [Prerequisites](#prerequisites) | ||
- [Making changes in the Go code](#making-changes-in-the-go-code) | ||
- [Making changes in the Admin UI](#making-changes-in-the-admin-ui) | ||
|
||
|
||
## Prerequisites | ||
|
||
- Go 1.18+ (for making changes in the Go code) | ||
- Node 16+ (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 | ||
``` | ||
|
||
> 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. | ||
|
||
## Making changes in the Go code | ||
|
||
PocketBase is 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: | ||
|
||
1. Navigate to `examples/base` | ||
2. 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): | ||
```sh | ||
go test ./... | ||
|
||
# or using the Makefile | ||
make test | ||
``` | ||
|
||
- Run the linter - **golangci** ([see how to install](https://golangci-lint.run/usage/install/#local-installation)): | ||
```sh | ||
golangci-lint run -c ./golangci.yml ./... | ||
# or using the Makefile | ||
make lint | ||
``` | ||
|
||
## Making changes in the Admin UI | ||
|
||
PocketBase Admin UI is a single-page application (SPA) built with Svelte and Vite. | ||
|
||
To start the Admin UI: | ||
|
||
1. Navigate to the `ui` project directory | ||
2. Run `npm install` to install the node dependencies | ||
3. Start vite's dev server | ||
```sh | ||
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). | ||
> 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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters