TopicPostは、Go + Remix + Supabaseで構築されたモダンなフルスタックWebアプリケーションです。
- バックエンド: Go 1.23 + Chi Router + Ent ORM + Wire DI
- フロントエンド: Remix 2.15 + React 18.3 + TypeScript 5.7 + Tailwind CSS 3.4
- データベース: Supabase (PostgreSQL) + Goose Migration
- API仕様: OpenAPI 3.0 + 自動型生成
- インフラ: Docker + Docker Compose
- 認証: JWT + Supabase Auth
topicpost/
├── api/ # Go APIサーバー
│ ├── di/ # 依存性注入 (Wire)
│ ├── ent/ # Ent ORM スキーマ
│ ├── entity/ # エンティティ定義
│ ├── infra/ # インフラ層 (DB, 外部API)
│ ├── interface/ # インターフェース層 (HTTP Handler)
│ ├── usecase/ # ユースケース層 (ビジネスロジック)
│ └── main.go # エントリーポイント
├── web/ # Remix フロントエンド
│ ├── app/ # Remixアプリケーション
│ │ ├── routes/ # ページルーティング
│ │ ├── components/ # Reactコンポーネント
│ │ └── services/ # API クライアント
│ └── package.json # Node.js依存関係
├── supabase/ # Supabase設定
│ ├── config.toml # Supabase設定
│ ├── schema/ # DBスキーマ・マイグレーション
│ └── seed.sql # 初期データ
├── docs/ # ドキュメント
│ └── openapi/ # OpenAPI仕様書
├── docker-compose.yml # Docker設定
└── Taskfile.yml # タスクランナー設定
# Task (タスクランナー)
brew install go-task
# または npm経由
npm install -g @go-task/cli
# 環境チェック
task check
必要なツール一覧:
- Docker または OrbStack
- Go 1.23+
- Node.js 20+
- Supabase CLI
- Goose (DBマイグレーション)
- Wire (依存性注入)
- Spectral (OpenAPI Lint)
# 初期セットアップ (Supabase起動、コード生成など)
task setup
# Dockerイメージのビルド
task build
# APIサーバーの起動
task up
# 依存関係のインストール
task npm/i
# OpenAPI型生成
task ogen
# 開発サーバー起動
task run
- フロントエンド: http://localhost:5173
- API: http://localhost:8686
- Supabase Studio: http://localhost:54323
task setup # 初期セットアップ
task build # Dockerビルド
task up # APIサーバー起動
task down # 全サービス停止
task check # 環境チェック
task goose/migration/up # マイグレーション実行
task goose/migration/down # マイグレーション戻し
task goose/create/migration -- [name] # 新規マイグレーション作成
task goose/create/seed -- [name] # 新規シード作成
task gen # Ent ORM コード生成
task go/wire # Wire 依存性注入コード生成
task ogen # OpenAPI TypeScript クライアント生成
task ogen-go # OpenAPI Go モデル生成
task go/test # Go テスト実行
task olint # OpenAPI仕様書リント
docs/openapi/
でAPI仕様を定義task ogen-go
でGoモデル生成api/ent/schema/
でDBスキーマ定義task gen
でORM生成- ハンドラー、ユースケース、インフラ層を実装
task ogen
でTypeScriptクライアント生成web/app/routes/
でページ作成web/app/components/
でコンポーネント作成- Supabase Authで認証実装
task goose/create/migration -- [name]
でマイグレーション作成- SQLファイルを編集
task goose/migration/up
で適用
.env.supabase.local
- Supabase設定 (自動生成)web/.env
- フロントエンド環境変数
- API: 8686
- Web: 5173
- Supabase API: 54321
- Supabase Studio: 54323
- PostgreSQL: 54322
- Go 1.23: メイン言語
- Chi Router: HTTPルーター
- Ent: ORM (Facebook製)
- Wire: 依存性注入
- JWT: 認証トークン
- Remix 2.15: フルスタックReactフレームワーク
- React 18.3: UIライブラリ
- TypeScript 5.7: 型安全性
- Tailwind CSS 3.4: ユーティリティファーストCSS
- Vite 6.0: ビルドツール
- Supabase: BaaS (PostgreSQL + Auth + Storage)
- Docker: コンテナ化
- Task: タスクランナー
- Goose: DBマイグレーション
- OpenAPI: API仕様書
- Spectral: API仕様リント
- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature
) - 変更をコミット (
git commit -m 'Add amazing feature'
) - ブランチにプッシュ (
git push origin feature/amazing-feature
) - プルリクエストを作成
このプロジェクトはMITライセンスの下で公開されています。