プロジェクト事例
SquaddUp
コンサート、ハイキング、美術館などのアクティビティを誰かと楽しみたい人のための、本番運用中の同行者マッチングサービスです。
Wallace Panterによるプロジェクト事例
プロダクト概要
SquaddUpは、アクティビティや共通の予定を通じて人をつなぐサービスです。Expo React Native製モバイルアプリ、API、Web体験、管理画面で構成されています。
フルタイムの育児と並行して開発し、iOS、Android、Webへ本番公開しました。
課題
同行者マッチングサービスでは、本人確認、アクティビティ検索、位置情報データ、複数のクライアント画面を、一貫したプロダクトとして連携させる必要があります。
モバイル、API、Web、管理画面を継続的に発展させられる、再現可能なデプロイ構成も必要でした。
実装内容
ExpoとReact Nativeでクロスプラットフォームのモバイル体験を構築し、Bun上で動作するElysia APIと接続しました。
PostgreSQL、PostGIS、Prismaでアプリケーションデータと位置情報データを設計し、本人確認にStripe Identityを統合しました。
Terraformでインフラ変更を明示的かつ再現可能にし、iOS、Android、Webの公開環境へリリースしました。
アーキテクチャ
- Expo React Nativeが共通のモバイルアプリケーション層を担います。
- ElysiaとBunがAPIランタイムとリクエスト境界を提供します。
- PostgreSQLとPostGISがリレーショナルデータと位置情報データを保持し、Prismaがアプリケーションのデータ層を担います。
- Stripe Identityが本人確認連携を、Terraformがデプロイ可能なインフラ定義を担います。
成果
- 単独の試作ではなく、一貫したフルスタックプロダクトとして提供しました。
- 共通の技術基盤からiOS、Android、Webの本番体験を公開しました。
- モバイル開発、API設計、位置情報データ、本人確認、インフラ自動化を統合する基盤を構築しました。
技術スタック
Expo React NativeReact Nativeの上にExpoを組み合わせたモバイルアプリスタック。Elysia + BunElysiaフレームワークとBunランタイムを組み合わせたAPIスタック。PostgreSQL + PostGISPostgreSQLにPostGISの地理空間クエリ機能を組み合わせたデータベース構成。PrismaリレーショナルDBのモデル化、クエリ、マイグレーションを行うTypeScript ORM。Stripeカード決済、請求、本人確認、金融ワークフロー向けの決済プラットフォーム。Terraformクラウドリソースを再現可能に構築するInfrastructure as Codeツール。