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.
The easiest way to interact with the API is to use one of the official SDK clients:
- JavaScript - pocketbase/js-sdk (browser and node)
- Dart - pocketbase/dart-sdk (web, mobile, desktop)
PocketBase could be downloaded directly as a standalone app or it could be used as a Go framework/toolkit which allows 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
For Windows, you may have to use go 1.19+ due to an incorrect js mime type in the Windows Registry (see issue#6).
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/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.
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:
-
NB! PR for new features will not be merged until we manage to complete the users refactoring in #376!
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.
pocketbase's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.