これは Skeet v1 のドキュメントです。

基本アーキテクチャ - GraphQL

Skeet Framework は SQL と NoSQL を組み合わせてアプリを構築できます。

ここでは、GraphQL のバックエンドを構築するための基本構造を説明します。

Skeet Framework GraphQL バックエンドの基本的な構造は以下の通りです。

一般的なバックエンドに必要な機能Skeet Framework GraphQL
データベースGoogle Cloud SQL
ログイン認証Firebase Authentication
APIGraphQL on Google Cloud Run
ロードバランサーCloud Load Balancer
スケジュールタスクCloud Scheduler
Pub/SubCloud Pub/Sub
ドメインCloud DNS
セキュリティCloud Armor
  • Prisma による RDBMS(リレーショナルデータベース管理システム) の管理をサポート
  • GitHub Actions による CI/CD をサポート
  • Firebase Functions によるサーバーレスなバックエンドをサポート
  • Firebase Emulator によるローカル開発をサポート
  • TypeScript による型安全な開発をサポート

Skeet Framework の基本構造

src にフロントエンドのソースコードが配置されます。

functions ディレクトリ以下に Cloud Functions for Firebase のプロジェクトが配置されます。

functions には複数の functions を追加することができます。

graphql ディレクトリ以下には GraphQL API のソースコードが配置されます。

bash
├── src │ ├── public │ └── types ├── graphql │ ├── prisma │ └── src ├── functions │ └── skeet ├── package.json ├── skeet-cloud.config.json └── firebase.json
ディレクトリ説明
srcフロントエンドのソースコード
src/publicフロントエンドのソースコード
src/typesフロントエンドの型定義
graphq/prismaPrisma のソースコード
graphq/srcGraphQL のソースコード
functionsCloud Functions for Firebase のソースコード
functions/skeetOpenAI API 等に関する functions
package.jsonバックエンドのパッケージ管理
skeet-cloud.config.jsonSkeet Framework の設定ファイル
firebase.jsonFirebase の設定ファイル

Skeet GraphQL の基本構造

Skeet GraphQL は 以下のパッケージを使用しています。

graphql ディレクトリ以下に Cloud Functions for Firebase のプロジェクトが配置されます。

例: graphql

bash
. ├── Dockerfile ├── build.ts ├── devBuild.ts ├── dist │ ├── index.js │ ├── nexus-typegen.ts │ └── schema.graphql ├── env.sample ├── jest.config.js ├── nodemon.json ├── package.json ├── prisma │ ├── migrations │ ├── schema.prisma │ └── seed.ts ├── src │ ├── graphql │ ├── index.ts │ ├── lib │ └── schema ├── tests │ ├── graphql │ └── jest.setup.ts ├── tsconfig.json └── yarn.lock
ディレクトリ説明
build.tsビルドスクリプト
devBuild.tsビルドスクリプト
distビルド後のソースコード
nodemon.jsonローカルでの起動設定
package.jsonバックエンドのパッケージ管理
srcソースコード
src/index.tsエントリーポイント
src/libライブラリ
src/graphqlGraphQL ファイル
src/schemaGraphQL Schema/Permission 設定
src/scriptsスクリプト
prismaPrisma ファイル
prisma/migrationsPrisma マイグレーションファイル
prisma/schema.prismaPrisma スキーマファイル
prisma/seed.tsPrisma シードファイル
tsconfig.jsonTypeScript の設定
yarn.lockパッケージのロックファイル

Skeet GraphQL ファイル

./src ディレクトリ以下には GraphQL API のソースコードが配置されます。

bash
./src ├── graphql │ ├── authManager │ ├── enums.ts │ ├── index.ts │ ├── modelManager │ ├── responseManager │ └── taskManager ├── index.ts ├── lib │ ├── firebaseConfig.ts │ └── getLoginUser.ts └── schema ├── Node.ts ├── index.ts ├── nexus-typegen.ts ├── permissions.ts ├── schema.graphql └── schema.ts

Skeet GraphQL マネージャーの基本構造

./src/graphql ディレクトリ以下には GraphQL のクエリを管理するマネージャーが配置されます。

bash
├── authManager │ ├── index.ts │ └── me.ts ├── enums.ts ├── index.ts ├── modelManager │ ├── ChatRoom │ ├── ChatRoomMessage │ ├── User │ ├── UserChatRoom │ ├── enums.ts │ └── index.ts ├── responseManager │ └── index.ts └── taskManager ├── index.ts └── postTweet.ts
マネージャータイプ説明
authManager認証に関する mutation/query を管理します。
modelManagerこのディレクトリにモデルに関連する CRUD が自動生成されます。
responseManagerWorker に関する mutation/query を管理します。
taskManagerTask に関する mutation/query を管理します。
enums.tsEnum を管理します。

Skeet DB スキーマ の基本構造

./src/schema ディレクトリ以下には GraphQL のスキーマを管理するファイルが配置されます。

bash
./src/schema ├── Node.ts ├── index.ts ├── nexus-typegen.ts ├── schema.graphql ├── permissions.ts └── schema.ts
ファイル名説明
Node.tsNode インターフェースを管理します。
nexus-typegen.tsNexus によって自動生成されるファイルです。
schema.graphqlNexus によって自動生成されるファイルです。
permissions.tsGraphQL Shield を使った権限管理をするファイルです。
schema.tsGraphQL のスキーマを管理するファイルです。

Skeet CLI

Skeet CLI を使って新たに Cloud Functions for Firebase を追加したり、 yarn コマンドを 各ファンクションごとに実行することができます。

コマンド一覧

bash
$ skeet --help Usage: skeet [options] [command] CLI for Skeet - Full-stack TypeScript Serverless framework Options: -V, --version output the version number -h, --help display help for command Commands: create <appName> Create Skeet Framework App server|s Run Skeet App deploy Deploy Skeet APP to Firebase init [options] Initialize Google Cloud Setups for Skeet APP yarn [options] <yarnCmd> Skeet Yarn Comannd to run yarn command for multiple functions login [options] Skeet Login Command - Create Firebase Login Token curl [options] <methodName> Skeet Curl Command - Call Firebase Functions Endpoint post [options] <queryType> Skeet Post Command - Call Skeet GraphQL Endpoint g|generate Skeet Generate Comannd docker Docker commands db Database commands iam Skeet IAM Comannd to setup Google Cloud Platform add Skeet Add Comannd to add new functions sync Skeet Sync Comannd to sync backend and frontend delete|d Skeet Delete Command list Get Skeet App List help [command] display help for command