pocketbase - 1つのファイルでオープンソースのリアルタイムバックエンド

(Open Source realtime backend in 1 file)

Created at: 2022-07-05 14:06:21
Language: Go
License: MIT

ポケットベース - 1つのファイルのオープンソースバックエンド

建てる 最新リリース Go パッケージのドキュメント

PocketBase はオープンソースの Go バックエンドで、次のもので構成されています。

  • リアルタイムサブスクリプションを備えた組み込みデータベース(SQLite)
  • 組み込みのファイルとユーザー管理
  • 便利な管理ダッシュボード UI
  • そして単純なRESTっぽいAPI

ドキュメントと例については、https://pocketbase.io/docs をご覧ください。

⚠️ポケットベースはまだ活発に開発中であることに注意してください したがって、v1.0.0に到達する前に完全な下位互換性は保証されません。

API SDK クライアント

API を操作する最も簡単な方法は、公式の SDK クライアントの 1 つを使用することです。

概要

PocketBaseは、スタンドアロンアプリとして直接ダウンロードすることも、ビルドできるGoフレームワーク/ツールキットとして使用することもできます。 独自のカスタムアプリ固有のビジネスロジックがあり、最後に1つのポータブル実行可能ファイルがあります。

取り付け

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

Windowsの場合、Windowsレジストリのjsマイムタイプが正しくないため、go 1.19+を使用する必要がある場合があります(問題#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 /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

テスティング

ポケットベースには、ユニットテストと統合テストの混合バッグが付属しています。 それらを実行するには、デフォルトのコマンドを使用します。

go test

go test ./...

独自のカスタムアプリケーションテストを作成する方法を学ぶには、テストガイドも確認してください。

安全

PocketBase内にセキュリティの脆弱性を発見した場合は、pocketbase.io のサポートに電子メールを送信してください。

すべての報告は迅速に対処され、それに応じてクレジットされます。

貢献

PocketBaseは、MITライセンスの下でライセンスされた無料のオープンソースプロジェクトです。 有料サービスとして提供することもできます。

次の方法で開発を継続できます。

小さな機能(新しいOAuth2プロバイダーの追加など)、バグやドキュメントの修正などのPRは大歓迎です。

ただし、実装の詳細について事前に説明せずに、大きな機能のPRを作成することは控えてください。大きなPRのレビューには、多くの場合、多くの時間と退屈なやり取りが必要です。 PocketBaseにはロードマップがあり、私は特定の順序で問題に取り組むようにしていますが、そのようなPRはどこからともなくやって来て、すべての初期計画を歪めてしまうことがよくあります。

PRが適切に実行およびテストされていても、私があなたのPRを閉じても動揺しないでください。これは、決してマージされないという意味ではありません。 後でいつでもそれを参照したり、問題に取り組む時が来たときに実装の一部を取り出すことができます(リリースノートにクレジットされることを心配しないでください)。

また、PocketBaseは当初、他のオープンソースプロジェクトであるプレゼンテーター(#183を参照)の新しいバックエンドとして機能するように作成されたことに注意してください。 したがって、すべての機能要求は、最初にプレゼンテーターv3に必要なものと一致します。