同步操作将从 Gitee 极速下载/pocketbase 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
PocketBase is an open source Go backend, consisting of:
For documentation and examples, please visit https://pocketbase.io/docs.
[!WARNING] Please keep in mind that PocketBase is still under active development and therefore full backward compatibility is not guaranteed before reaching v1.0.0.
The easiest way to interact with the API is to use one of the official SDK clients:
You could download the prebuilt executable for your platform from the Releases page.
Once downloaded, extract the archive and run ./pocketbase serve
in the extracted directory.
The prebuilt executables are based on the examples/base/main.go
file and comes with the JS VM plugin enabled by default which allows to extend PocketBase with JavaScript (for more details please refer to Extend with JavaScript).
PocketBase is distributed as a regular Go library package which allows you to build your own custom app specific business logic and still have a single portable executable at the end.
Here is a minimal example:
Install Go 1.21+ (if you haven't already)
Create a new project directory with the following main.go
file inside it:
package main
import (
"log"
"net/http"
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
)
func main() {
app := pocketbase.New()
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
// add new "GET /hello" route to the app router (echo)
e.Router.AddRoute(echo.Route{
Method: http.MethodGet,
Path: "/hello",
Handler: func(c echo.Context) error {
return c.String(200, "Hello world!")
},
Middlewares: []echo.MiddlewareFunc{
apis.ActivityLogger(app),
},
})
return nil
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
To init the dependencies, run go mod init myapp && go mod tidy
.
To start the application, run go run main.go serve
.
To build a statically linked executable, you can run CGO_ENABLED=0 go build
and then start the created executable with ./myapp serve
.
[!NOTE] PocketBase embeds SQLite, but doesn't require CGO.
If CGO is enabled (aka.
CGO_ENABLED=1
), it will use mattn/go-sqlite3 driver, otherwise - modernc.org/sqlite. Enable CGO only if you really need to squeeze the read/write query performance at the expense of complicating cross compilation.
For more details please refer to Extend with Go.
To build the minimal standalone executable, like the prebuilt ones in the releases page, you can simply run go build
inside the examples/base
directory:
examples/base
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build
(_https://go.dev/doc/install/source#environment_)./base serve
.Note that the supported build targets by the pure Go SQLite driver at the moment are:
darwin amd64
darwin arm64
freebsd amd64
freebsd arm64
linux 386
linux amd64
linux arm
linux arm64
linux ppc64le
linux riscv64
linux s390x
windows amd64
windows arm64
PocketBase comes with mixed bag of unit and integration tests.
To run them, use the standard go test
command:
go test ./...
Check also the Testing guide to learn how to write your own custom application tests.
If you discover a security vulnerability within PocketBase, please send an e-mail to support at pocketbase.io.
All reports will be promptly addressed, and you'll be credited accordingly.
PocketBase is free and open source project licensed under the MIT License. You are free to do whatever you want with it, even offering it as a paid service.
You could help continuing its development by:
PRs for new OAuth2 providers, bug fixes, code optimizations and documentation improvements are more than welcome.
But please refrain creating PRs for new features without previously discussing the implementation details. PocketBase has a roadmap and I try to work on issues in specific order and such PRs often come in out of nowhere and skew all initial planning with tedious back-and-forth communication.
Don't get upset if I close your PR, even if it is well executed and tested. This doesn't mean that it will never be merged. Later we can always refer to it and/or take pieces of your implementation when the time comes to work on the issue (don't worry you'll be credited in the release notes).
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。