A:\homie進行中

進行中 取り出し· 棚へ戻る

フルスタック · 不動産テック2026年 · 進行中

Homie Platform

物件、入居者、賃貸借契約、請求書、そしてその間のあらゆる業務を扱う、統合型の不動産管理システムです。

HOMIE

Property Management Platform

設計済みモジュール
12
認証フロー
稼働中
稼働中のDBテーブル
4
物件モジュール
クライアント
Homie
業種
不動産管理
依頼内容
フルスタックのプロダクト開発
ステータス
進行中
期間
2026年 · 開発中
対応範囲
ウェブアプリケーション、REST API、データベース

01 概要

クライアントは誰か

Homie Platformは、フルスタックのモノレポとして構成された不動産管理システムです。対象は12の運用領域で、入居申込、物件、入居者、オーナー、契約、請求書、入金、内見、社内メッセージ、管理機能です。

02 課題

どんな課題を抱えていたか

クライアントには、物件運用の全体を管理できる、単一の統合プラットフォームが必要でした。機能領域は12に分かれ、共有のデータ層も、統一されたインターフェースも、ロール間のアクセス制御もありませんでした。

  1. 分断された業務

    12の運用領域(入居申込、物件、入居者、オーナー、契約、請求書、入金、内見、メッセージ、管理)が、それぞれ独立して動いており、それらをつなぐ共有のデータ層がありませんでした。

  2. 操作を追跡できる監査証跡がない

    データの変更を記録する、信頼できる仕組みがありません。作成・更新・削除のすべてを操作者とタイムスタンプ付きで記録する、セキュリティ要件を満たした改ざんできない監査ログが必要だということは、初日から中核の要件として認識されていました。

  3. アクセス制御がない

    チームは、権限レベルの異なる複数のロールにまたがって運用しています。ロールベースのアクセス制御がなければ、どのスタッフもシステム全体に制限なくアクセスできてしまいます。

  4. 入居申込を扱う専用の仕組みがない

    入居申込の管理には、専用のシステムがありませんでした。プラットフォームの中核となる運用領域として認識されており、独自のモジュールが必要です。

  5. リレーショナルなデータ基盤がない

    物件、入居者、オーナー、請求書、契約は相互に依存するエンティティですが、共有のデータベーススキーマがありません。対応するテーブルはPostgreSQLにまだ存在せず、Goの構造体も生成されていません。

03 解決策

どう解決したか

フルスタックの不動産管理システムを、モノレポ構成で設計・構築しました。アーキテクチャは、Go製のREST APIバックエンドとNext.js 16のフロントエンドに分かれ、sqlcによってコンパイル時に型安全なSQLを生成しながら、PostgreSQLデータベースを共有します。

フロントエンドは12の運用モジュールをカバーし、すべてApp Routerの構造のもとで、設計と骨組みの作成が完了しています。認証はエンドツーエンドで稼働しています。運用データベースのスキーマとAPIハンドラーは、現在開発中です。

  1. FE Next.js 16 Reactフロントエンド React 19TypeScriptTailwind v4
  2. API Go REST API バックエンド sqlcCookie認証
  3. DB PostgreSQL データベース マイグレーションsqlcの型
モノレポは1つ · デプロイは1つ · PostgreSQLインスタンスは共有
  • Next.js 16
  • React 19
  • TypeScript
  • Go (Golang)
  • PostgreSQL
  • sqlc
  • Tailwind CSS v4
  • Radix UI
  • TanStack Query v5
  • FullCalendar
  • Tiptap
  • dnd-kit

設計済みの画面 — 骨組みの作成は完了、データ層は進行中

入居者モジュール
入居者
内見モジュール
内見

04 プロジェクトの流れ

主なマイルストーンと期間

  1. フェーズ1 2025年Q4

    ディスカバリーとアーキテクチャ

    技術スタックを選定しました:Next.js 16、React 19、TypeScript、Go、PostgreSQL、sqlc。モノレポ構成を定義し、フロントエンドのサイトマップから12モジュールの範囲を確定しました。

  2. フェーズ2 2025年Q4

    フロントエンドの骨組みとデザインシステム

    Next.js App Routerの構造一式を、src/appの下に骨組みとして作成しました。認証グループ、保護されたダッシュボードグループ、12モジュールすべてのルートセグメントです。すべてのビューコンポーネントの設計も完了しています。

  3. フェーズ3 2026年Q1

    認証システムとコアDBスキーマ

    Go APIによるCookieベースのセッション管理(HttpOnly、SameSite=Lax)。3つのエンドポイント(POST /api/auth/login、POST /api/auth/logout、GET /api/auth/me)が稼働中です。最初のマイグレーションで、staff、audit_log、feed_items、settingsの4つのコアスキーマを導入しています。

  4. フェーズ4 2026年Q2 — 進行中

    運用DBスキーマ

    物件、入居者、オーナー、請求書、契約のPostgreSQLスキーマを作成してマイグレーションします。sqlcでGoの構造体を生成します。

  5. フェーズ5 2026年Q2〜Q3

    APIのCRUDハンドラーとRBAC

    すべての業務エンティティに対応するGoのルーターハンドラーを実装します。現在コメントアウトされているRequireRoleミドルウェアを有効化し、全ルートでロールベースのアクセス制御を適用します。

  6. フェーズ6 2026年Q3

    フロントエンドのデータ連携

    12モジュールすべてのUIの静的なモックデータを、TanStack Queryを通じた実際のAPI呼び出しに置き換えます。

05 直面した壁と対処

どんな壁にぶつかり、どう乗り越えたか

  1. 複数のスコープにまたがる柔軟な設定

    課題システムは、プラットフォーム全体の設定、物件ごとの上書き、入居者ごとの上書きという3つのレベルの設定を同時に扱える必要があります。しかも、スコープごとに別々のテーブルを用意せずに実現しなければなりません。

    解決策settingsスキーマはJSONBを使った設計のため、1つのテーブルで全体・物件単位・入居者単位の設定を保存できます。新しい設定キーを追加しても、スキーマの変更は不要です。

  2. React 19とTanStack Query v5の統合

    課題フロントエンドはReact 19とTanStack Query v5で構築されています。どちらも本番運用に耐える依存パッケージで、サーバー状態のキャッシュと同期のために、Go APIとの統合を計画的に行う必要があります。

    解決策TanStack Query v5が、Next.jsのフロントエンドとGo APIの間の非同期なサーバー状態の管理をすべて担い、キャッシュと同期はクエリ層で処理しています。

  3. GoとNext.jsのセッション共有

    課題Go製のバックエンドとNext.jsのフロントエンドにまたがってCookieベースのセッションを調整するには、両側で認証状態を一貫させるために、SameSiteとドメインの設定を慎重に行う必要があります。

    解決策HttpOnly、SameSite=LaxのCookieは、Go APIが設定します。Next.jsアプリがトークンを直接扱うことはなく、認証状態はAPI呼び出しのたびに、GET /api/auth/meを通じてサーバー側で検証されます。

  4. データ層より先に作られたフロントエンド

    課題12モジュールすべてのUIは、設計と骨組みの作成が完了していますが、運用データベースのテーブルとAPIハンドラーはまだ存在しません。それでも、フロントエンドは実データがなくても動作し、確認できる状態を保つ必要があります。

    解決策開発中、すべてのモジュール画面は静的なモックデータを使っています。データ取得レイヤーとしてTanStack Queryはすでに組み込み済みなので、フェーズ6でモックデータを実際のAPI呼び出しに置き換えても、UIの作り直しは不要です。

06 Before / After

プロジェクト前後の状況の比較

BeforeAfter
認証システムがない:プラットフォームのどの部分にも、アクセスを制御する手段がないエンドツーエンドの認証が稼働中:POST /api/auth/login、POST /api/auth/logout、GET /api/auth/me。Cookieベースのセッションを、Go APIとNext.jsで共有
監査証跡がない:誰が、いつ、何を変更したかの記録もない改ざんできないaudit_logスキーマが稼働中:追記専用の台帳に、システムのあらゆる変更を操作者、タイムスタンプ、対象データとともに記録
運用エンティティのデータベーススキーマがない:物件、入居者、オーナー、請求書、契約のテーブルが存在しない全エンティティのPostgreSQLスキーマを設計済み。staff、audit_log、feed_items、settingsはマイグレーション済み(フェーズ3完了)
ロールベースのアクセス制御がない:スタッフのロール間に権限の境界がないRequireRoleミドルウェアをGoのルーターに組み込み済み:保護対象の全ルートで有効化を待っている状態
運用ワークフロー向けのフロントエンドがない12モジュールすべてのUIの設計と骨組みの作成が完了:入居申込、物件、入居者、オーナー、契約、請求書、入金、内見、メッセージ、管理
契約モジュール
契約モジュール。賃貸借契約書の作成と電子署名を担います。設計と骨組みの作成は完了しており、データ層はフェーズ4で加わります。

07 クライアントにもたらした成果

クライアントはどんな価値を得たか

設計済みモジュール
12
全12モジュール中、完了
認証フロー
稼働中
Go ↔ Next.js
稼働中のDBテーブル
4
staff · audit_log · feed_items · settings
稼働中のエンドポイント
3
ログイン · ログアウト · プロフィール
  • 初日からエンドツーエンドの認証を実装

    認証フローの全体が稼働しています。ログイン、ログアウト、プロフィールの各エンドポイントが動いており、HttpOnlyのCookieセッションをGo APIとNext.jsのフロントエンドで共有しています。

  • セキュリティ要件を満たす監査証跡を最初から組み込み

    audit_logスキーマは稼働中で、追記専用です。すべてのシステム変更が、操作者、タイムスタンプ、対象データとともに記録され、最初のマイグレーションからセキュリティコンプライアンス要件を満たしています。

  • システム全体に及ぶ柔軟な設定

    JSONBを使ったsettingsテーブルは、全体・物件単位・入居者単位の設定を単一のスキーマで扱えます。設定要件が増えても、テーブルを追加する必要はありません。

  • フロントエンドは準備完了、データ層は進行中

    12モジュールすべてのUIは、設計と骨組みの作成が完了しており、データ層となるTanStack Queryもすでに組み込み済みです。フェーズ6で実際のAPIデータに接続する際も、フロントエンドの作り直しは必要ありません。

請求書モジュール
請求書モジュール。請求と収支の概要を扱います。設計と骨組みの作成は完了しており、データ層はフェーズ4で加わります。

08 得られた学び

このプロジェクトから何を学んだか

  1. sqlcはSQLから型安全なGoコードを生成する

    sqlcは、SQLクエリからコンパイル時に型安全なGoの構造体とクエリ関数を生成します。スキーマの変更は、実行時の障害ではなくコンパイルエラーとして表に出ます。

  2. モノレポなので、Go APIとNext.jsのフロントエンドを1つのリポジトリで管理できる

    フルスタックのモノレポ構成のため、バックエンドとフロントエンドが、1つのコードベース、1つの開発環境、1つのデプロイパイプラインを共有します。

  3. 認証は、あらゆる運用機能よりも先に作り終えた

    認証(ログイン、ログアウト、プロフィールの各エンドポイント)は、フェーズ3で完成しました。以降の開発はすべて、実際に動作するセッションモデルを前提に進めています。

  4. 12モジュールすべてのUIを、データベースより先に設計した

    フロントエンドの全体は、運用データベースのスキーマができる前に、静的なモックデータで骨組みを作成しました。フェーズ6では、モックデータをTanStack Queryによる実際の呼び出しに置き換えます。UIの作り直しは不要です。

  5. settingsテーブルのJSONBで、全体・物件単位・入居者単位の設定に対応

    settingsスキーマはJSONBを使った設計で、1つのテーブルに3つのスコープの設定を保存します。プラットフォーム全体の設定、物件ごとの上書き、入居者ごとの上書きです。

構築済みの画面 · 設計完了

モジュール

すべての画面は、Homieのチームが日常的に運用している実際のワークフローに対応しています。クリックすると拡大します。

ダッシュボード
ダッシュボード 全体を見渡せるコマンドセンター
物件
物件 物件と部屋の一覧
入居者
入居者 入居者管理プロフィール
契約
契約 賃貸借契約書の作成と電子署名
請求書
請求書 請求と収支の概要
内見
内見 内見スケジュールとカレンダー
メッセージ
メッセージ 社内コミュニケーション
オーナー
オーナー 物件オーナーの記録
入金
入金 入金の記録と消込
スタッフ
スタッフ 社内アカウントとロール
監査ログ
監査ログ 改ざんできないシステムイベントログ
ログイン
ログイン 認証の入口
ディスクラベル
Homie独自のカラーパレットと書体
地色
#0D171C
アクセント
#4FA8C9
淡色
[TBD]
文字色
#FCFBF8
書体
[TBD]