faghani / pocketbase

Open Source realtime backend in 1 file

Home Page:https://pocketbase.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PocketBase - open source backend in 1 file

build Latest releases Go package documentation

PocketBase is an open source Go backend, consisting of:

  • embedded database (SQLite) with realtime subscriptions
  • built-in files and users management
  • convenient Admin dashboard UI
  • and simple REST-ish API

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

⚠️ Although the web API defintions are considered stable, please keep in mind that PocketBase is still under active development and therefore full backward compatibility is not guaranteed before reaching v1.0.0.

API SDK clients

The easiest way to interact with the API is to use one of the official SDK clients:


PocketBase could be used as a standalone app or as a Go framework/toolkit that enables you to build your own custom app specific business logic and still have a single portable executable at the end.


# go 1.18+
go get github.com/pocketbase/pocketbase


package main

import (


func main() {
    app := pocketbase.New()

    app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
        // add new "GET /api/hello" route to the app router (echo)
            Method: http.MethodGet,
            Path:   "/api/hello",
            Handler: func(c echo.Context) error {
                return c.String(200, "Hello world!")
            Middlewares: []echo.MiddlewareFunc{

        return nil

    if err := app.Start(); err != nil {

Running and building

Running/building the application is the same as for any other Go program, aka. just go run and go build.

PocketBase embeds SQLite, but doesn't require CGO.

If CGO is enabled, 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.


PocketBase comes with mixed bag of unit and integration tests. To run them, use the default 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 could help continuing its development by:

Please also note that PocketBase was initially created to serve as a new backend for my other open source project - Presentator (see #183), so all feature requests will be first aligned with what we need for Presentator v3.


Open Source realtime backend in 1 file


License:MIT License


Language:Go 60.8%Language:Svelte 21.4%Language:SCSS 14.5%Language:JavaScript 3.2%Language:HTML 0.1%Language:Shell 0.0%