Skip to content

akm/sk-goa-chat

Repository files navigation

sk-goa-chat

Overview

sk-goa-chat は SvelteKitGoa を使ったWebアプリケーションの検証のためのプロジェクトです。

Goa は OpenAPI で定義された HTTP と protoc に基づいた gRPC による通信を同時にサポートするWebアプリケーションのフレームワークです。 Goa は gRPC のようなストリーミングを HTTP においては WebSockets を用いて実現します。

SvelteKit は SvelteVite を用いたWebアプリケーション開発のフレームワークです。

Vite は SSR(Server Side Rendering) の機能と Proxy の機能を提供します。 つまりこのアプリケーションには2つのWebアプリケーションサーバーが存在します。

APIを提供する Goa のサーバーを apisvr と呼び、主にUIのアセットのホスティングとルーティングを行う SvelteKit + Viteのサーバーを uisvr と呼ぶことにします。 uisvr は Vite の Proxy の機能によって パスが /api/ws にマッチするブラウザからのHTTPリクエストを apisvr に転送します。 また uisvr が SSRする際に必要なデータは、 gRPC を使って apisvr から取得します。

Communication Paths

flowchart LR
    A[Client] -->|HTTP + websockets| B[vite proxy]
    B -->|/api /ws 以外 HTTP| E[uisvr]
    B -->|/ws websockets| C[apisvr]
    B -->|/api HTTP| C[apisvr]
    A --> D[Firebase]
    E -->|gRPC| C
    C --> D
Loading

Prerequisite

Getting Started

Install

make install

Build

make build

Run locally

make dev

Open in browser

Open http://localhost:5173

How to develop

See Development.md

Directories

Name Description
servers/apisvr APIを提供するサーバーのソースコード
servers/applib バックエンドのライブラリ的なパッケージ群
servers/biz バックエンドのビジネスロジックのパッケージ群
servers/containers ローカルで使用する MySQL や Firebase Emulators のコンテナ
servers/dbmigrations RDBのマイグレーション
clients/uisvr UIとそれを提供するサーバー(uisvr)のソースコード
modifiers 自動生成されるコードに更に変更を加えるための ruby のスクリプト群
tools 開発や運用で使用するツール群

Libraries / Middlewares

やらないこと

  • Webサービスとしてのリリースは行うつもりはありません
    • しかし実際のリリースに関する検証は行いたいので、一時的に何処かにリリースするかもしれません
  • このリポジトリはコンセプトを検証するためのものであり、アプリケーションとして完成させることは主目的ではありませんので、不要と判断したバグ修正は行いません

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published