1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2024-11-28 18:11:17 +02:00
Open Source realtime backend in 1 file https://pocketbase.io/
Go to file
Olle Månsson da29141248
[#288] added info about the default 100x100 thumb size in the field tooltip
Co-authored-by: Olle Månsson <olle.mansson@zenseact.com>
2022-08-10 20:40:52 +03:00
.github updated go version constraint for the github action 2022-08-02 21:36:36 +03:00
apis refactored the admin ui routes registration for better sub-path deployment support 2022-08-01 20:37:51 +03:00
cmd [#82] removed version cmd and make use of cobra.Version 2022-07-12 07:57:36 +03:00
core [#156] added forcePathStyle to the s3 config 2022-07-19 10:45:38 +03:00
daos fixed panic on expanding existing byt non-relation type field 2022-07-30 07:58:42 +03:00
examples/base initial public commit 2022-07-07 00:19:05 +03:00
forms added debug log for the invalid uploaded file(s) 2022-07-30 14:11:08 +03:00
mails [#228] added target=_blank to the email links 2022-07-26 15:17:10 +03:00
migrations [#53] fix migrations register in framework mode 2022-07-10 14:40:51 +03:00
models [#151] remove files on cascade deletion 2022-07-18 12:04:27 +03:00
resolvers added support to filter request.user.profile relation fields 2022-07-20 22:33:24 +03:00
tests added support to filter request.user.profile relation fields 2022-07-20 22:33:24 +03:00
tokens initial public commit 2022-07-07 00:19:05 +03:00
tools normalize number filter literals 2022-07-28 05:23:58 +03:00
ui [#288] added info about the default 100x100 thumb size in the field tooltip 2022-08-10 20:40:52 +03:00
.gitignore [#38] added lint and used the lint suggestions 2022-07-09 17:17:41 +03:00
.goreleaser.yaml [#250] added armv7 on linux as a build target 2022-08-01 10:29:06 +03:00
CONTRIBUTING.md [#147] added CONTRIBUTING.md 2022-07-17 20:33:12 +03:00
go.mod initial public commit 2022-07-07 00:19:05 +03:00
go.sum initial public commit 2022-07-07 00:19:05 +03:00
golangci.yml [#38] added lint and used the lint suggestions 2022-07-09 17:17:41 +03:00
LICENSE.md initial public commit 2022-07-07 00:19:05 +03:00
Makefile [#38] added lint and used the lint suggestions 2022-07-09 17:17:41 +03:00
pocketbase_test.go initial public commit 2022-07-07 00:19:05 +03:00
pocketbase.go [#82] removed version cmd and make use of cobra.Version 2022-07-12 07:57:36 +03:00
README.md fixed README typo 2022-08-01 22:30:14 +03:00

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 definitions 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:

Overview

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.

Installation

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

For Windows, you may have to use go 1.19+ due to an incorrect js mime type in the Windows Registry (see issue#6).

Example

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 /api/hello" route to the app router (echo)
        e.Router.AddRoute(echo.Route{
            Method: http.MethodGet,
            Path:   "/api/hello",
            Handler: func(c echo.Context) error {
                return c.String(200, "Hello world!")
            },
            Middlewares: []echo.MiddlewareFunc{
                apis.RequireAdminOrUserAuth(),
            },
        })

        return nil
    })

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

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. You can enable and disable CGO by setting the CGO_ENABLED environment variable to 1 or 0 respectively.

Enable CGO only if you really need to squeeze the read/write query performance at the expense of complicating cross compilation.

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.

Testing

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.

Security

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.

Contributing

PocketBase is free and open source project licensed under the MIT License.

You could help continuing its development by:

Please 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.