コンテンツにスキップ

システム全体像

コンポーネント構成

① アプリ・デバイス構成

graph TB
    subgraph ユーザー
        Driver[ドライバー]
        Owner[駐車場オーナー]
    end

    subgraph フロントエンド
        Mobile[smooth-mobile]
        OwnerApp[smooth-owner]
    end

    subgraph ハードウェア
        Camera[駐車場カメラ]
        SmoothBox[SmoothBox]
    end

    subgraph バックエンド
        API[smooth-backend]
        DB[(PostgreSQL)]
        Cache[(Redis)]
    end

    Driver --> Mobile
    Owner --> OwnerApp
    Mobile --> API
    OwnerApp --> API
    Camera --> SmoothBox
    SmoothBox --> API
    API --> DB
    API --> Cache

② バックエンド ↔ 外部サービス連携

graph LR
    API[smooth-backend]

    API <-->|決済・Connect| Stripe[Stripe]
    API <-->|OAuth 検証| Firebase[Firebase Authentication]
    API -->|プッシュ通知| LINE[LINE Bot API]
    API -->|画像保存| GCS[Google Cloud Storage]

入出庫・決済フロー

sequenceDiagram
    box ドライバー側
        participant Car as ドライバー
        participant App as smooth-mobile
    end
    box 駐車場
        participant Device as SmoothBox
    end
    box サーバー
        participant API as バックエンド
        participant Stripe as Stripe
    end

    Note over Car,Device: 入場
    Car->>Device: 駐車場に入る
    Device->>API: ナンバープレートを送信
    API-->>App: 「駐車中」として表示

    Note over Car,Device: 出場
    Car->>Device: 駐車場から出る
    Device->>API: 出場を検知
    API->>Stripe: 料金を自動決済
    Stripe-->>API: 決済完了
    API-->>App: 決済完了を通知
    App-->>Car: 「決済完了」を表示

技術スタックの概要

レイヤー 技術
フロントエンド Next.js 16 (App Router), React 19, TypeScript
バックエンド Go 1.25, Gin, Clean Architecture
データベース PostgreSQL + PostGIS(位置情報検索)
キャッシュ Redis(nonce・レート制限)
決済 Stripe(カード決済・Connect)
認証 JWT + HTTP-only Cookie, Firebase Authentication (OAuth), LINE LIFF
画像認識 YOLOv11(ナンバープレート検出)
通知 LINE Bot API, Firebase Cloud Messaging
クラウド GCP Cloud Run, Cloud SQL, GCS
API仕様 OpenAPI 3.0.3(コード自動生成)

デプロイ構成

  • バックエンド: GCP Cloud Run(サーバーレス・自動スケール)
  • データベース: Cloud SQL(PostgreSQL, asia-northeast1)
  • フロントエンド: Vercel(推定)または Cloud Run
  • シークレット管理: GCP Secret Manager
  • CI/CD: Cloud Build(プッシュ時に自動ビルド)