メインコンテンツまでスキップ

フロントエンド概要

Bazbiiのフロントエンドは、複数のクライアントアプリケーションと共有パッケージで構成されています。

クライアントアプリケーション構成

user-mobile

エンドユーザー向けモバイルアプリケーション。

  • 技術スタック: React Native (Expo), TypeScript
  • 主要機能:
    • ローカルフィード(位置情報ベース)
    • 投稿作成・閲覧
    • ヒートマップ表示
    • 設定(言語、テーマ)

partner-web

パートナー(店舗)向けWebアプリケーション。

  • 技術スタック: Next.js, TypeScript
  • 主要機能: 店舗情報管理、投稿管理

ops-web

運用管理向けWebアプリケーション。

  • 技術スタック: Next.js, TypeScript
  • 主要機能: 監視、運用操作

共有パッケージ

@bazbii/i18n

国際化対応パッケージ。

  • 多言語対応(日本語、英語など)
  • ロケール管理
  • 翻訳リソース管理

@bazbii/themes

テーマシステムパッケージ。

  • カラーパレット
  • スペーシング、タイポグラフィ
  • ダークモード対応

@bazbii/h3-webview

H3地理計算用WebViewパッケージ。

  • React Native用のH3計算
  • WebViewベースの実装

@bazbii/proto-gen-ts

Protocol BuffersのTypeScript生成コード。

  • gRPC/Connect RPC用の型定義
  • APIコントラクト

通信方式

API通信

  • プロトコル: Connect RPC (HTTP/JSON)
  • 認証: JWT Bearer Token
  • エンドポイント: Gateway経由

実装例

import { createPromiseClient } from "@connectrpc/connect";
import { createConnectTransport } from "@connectrpc/connect-web";
import { UserPostCommandService } from "@bazbii/proto-gen-ts/bazbii/post/v1/user_post_command_connect";

const transport = createConnectTransport({
baseUrl: "https://api.bazbii.app",
});

const client = createPromiseClient(UserPostCommandService, transport);

開発方針

モノレポ構成

  • pnpm workspaceでパッケージ管理
  • 共有パッケージを効率的に利用

型安全性

  • Protocol Buffersから型を生成
  • TypeScriptで型安全なAPI呼び出し

コード共有

  • ビジネスロジックは可能な限り共有
  • UIコンポーネントはアプリごとに実装

関連ドキュメント