Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Open Source realtime backend in 1 file

License

NotificationsYou must be signed in to change notification settings

pocketbase/pocketbase

Repository files navigation

PocketBase - open source backend in 1 file

buildLatest releasesGo package documentation

PocketBase is an open source Go backend that includes:

  • embedded database (SQLite) withrealtime subscriptions
  • built-infiles and users management
  • convenientAdmin dashboard UI
  • and simpleREST-ish API

For documentation and examples, please visithttps://pocketbase.io/docs.

Warning

Please keep in mind that PocketBase is still under active developmentand therefore full backward compatibility is not guaranteed before reaching v1.0.0.

API SDK clients

The easiest way to interact with the PocketBase Web APIs is to use one of the official SDK clients:

You could also check the recommendations inhttps://pocketbase.io/docs/how-to-use/.

Overview

Use as standalone app

You could download the prebuilt executable for your platform from theReleases page.Once downloaded, extract the archive and run./pocketbase serve in the extracted directory.

The prebuilt executables are based on theexamples/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 toExtend with JavaScript).

Use as a Go framework/toolkit

PocketBase is distributed as a regular Go library package which allows you to buildyour own custom app specific business logic and still have a single portable executable at the end.

Here is a minimal example:

  1. Install Go 1.23+ (if you haven't already)

  2. Create a new project directory with the followingmain.go file inside it:

    package mainimport ("log""github.com/pocketbase/pocketbase""github.com/pocketbase/pocketbase/core")funcmain() {app:=pocketbase.New()app.OnServe().BindFunc(func(se*core.ServeEvent)error {// registers new "GET /hello" routese.Router.GET("/hello",func(re*core.RequestEvent)error {returnre.String(200,"Hello world!")        })returnse.Next()    })iferr:=app.Start();err!=nil {log.Fatal(err)    }}
  3. To init the dependencies, rungo mod init myapp && go mod tidy.

  4. To start the application, rungo run main.go serve.

  5. To build a statically linked executable, you can runCGO_ENABLED=0 go build and then start the created executable with./myapp serve.

For more details please refer toExtend with Go.

Building and running the repo main.go example

To build the minimal standalone executable, like the prebuilt ones in the releases page, you can simply rungo build inside theexamples/base directory:

  1. Install Go 1.23+ (if you haven't already)
  2. Clone/download the repo
  3. Navigate toexamples/base
  4. RunGOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build(https://go.dev/doc/install/source#environment)
  5. Start the created executable by running./base serve.

Note that the supported build targets by the pure Go SQLite driver at the moment are:

darwin  amd64darwin  arm64freebsd amd64freebsd arm64linux   386linux   amd64linux   armlinux   arm64linux   loong64linux   ppc64lelinux   riscv64linux   s390xwindows 386windows amd64windows arm64

Testing

PocketBase comes with mixed bag of unit and integration tests.To run them, use the standardgo test command:

gotest ./...

Check also theTesting guide to learn how to write your own custom application tests.

Security

If you discover a security vulnerability within PocketBase, please send an e-mail tosupport at pocketbase.io.

All reports will be promptly addressed and you'll be credited in the fix release notes.

Contributing

PocketBase is free and open source project licensed under theMIT 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 fornew features without previously discussing the implementation details.PocketBase has aroadmap 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).


[8]ページ先頭

©2009-2025 Movatter.jp