PocketBase – Бэкэнд с открытым исходным кодом для SaaS и мобильного приложения
• Нет отзывов
Описание
PocketBase — это серверная часть Go с открытым исходным кодом, состоящая из: встроеной базы данных SQLite, управление файлами и пользователями, удобная панель администратора и простой REST-API
Документацию и примеры можно найти на странице https://pocketbase.io/docs
PocketBase можно загрузить непосредственно как отдельное приложение или использовать в качестве фреймворка/инструментария Go, который позволяет вам создавать собственную бизнес-логику для конкретного приложения и по-прежнему иметь в конце один переносимый исполняемый файл.
Установка
# go 1.18+
go get github.com/pocketbase/pocketbase
Пример
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)
}
}
Запуск/сборка приложения такие же, как и для любой другой программы Go, т.е. просто go run и go build
PocketBase встраивает SQLite, но не требует CGO.
Если CGO включен, будет использоваться драйвер mattn/go-sqlite3 , иначе – modernc.org/sqlite . Вы можете включить и отключить CGO, установив для CGO_ENABLED переменной среды значение 1 или 0 соответственно.
Включайте CGO, только если вам действительно нужно сократить производительность запросов чтения/записи за счет усложнения кросс-компиляции.
Чтобы создать минимальный автономный исполняемый файл, такой как предварительно созданные на странице выпусков, вы можете просто запустить go build его внутри examples/base каталога.
Ссылка на гит: https://github.com/pocketbase/pocketbase