Go (Chi + sqlc + PostgreSQL) + SvelteKit のWebアプリテンプレート。
Wordle風ミニゲームをサンプルとして含む。
backend/— Go API サーバー (Chi router, sqlc, pgx)frontend/— SvelteKit (adapter-node, SSR, Tailwind CSS, daisyUI)
以下のいずれかの方法でツールをインストール。
Nix — すべてのツールが flake.nix で提供される。
direnv allow
# もしくは: nix developmise — .mise.toml の [tools] セクションをアンコメントしてからインストール。
mise install
# sqlc, golangci-lint, air は別途インストール
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
go install github.com/air-verse/air@latest
# https://golangci-lint.run/welcome/install/手動 — 以下を個別にインストール。
- Docker (PostgreSQL コンテナ用)
- Go (1.25+)
- Bun (1.3+)
- sqlc
- golangci-lint
# 初回セットアップ: DB 起動 + スキーマ適用 + シードデータ投入
mise run db-setup
# 開発サーバー起動 (DB + Backend + Frontend)
mise run dev- Frontend: http://localhost:5173
- Backend: http://localhost:8080
.mise.toml にタスクが定義されている。mise run <タスク名> で実行。
mise run lint # golangci-lint + Biome
mise run format # goimports/gofmt + Biome| 変数 | 説明 | デフォルト |
|---|---|---|
DATABASE_URL |
PostgreSQL 接続文字列 | postgres://postgres:postgres@localhost:5432/wordle?sslmode=disable |
PORT |
Backend リッスンポート | 8080 |
API_URL |
Backend URL (SSR サーバーから) | http://localhost:8080 |
Docker のみで動く。ホットリロードは対応していない。
docker compose up- Frontend: http://localhost:3000
- Backend: http://localhost:8080
docker-compose.yaml にはポートマッピングを含めていない(Coolify/Traefik が管理するため)。ローカルでは docker-compose.override.yaml が自動で読み込まれ、ポートが公開される。
- Coolifyで新規プロジェクト作成 → Docker Compose を選択
- GitHubリポジトリ接続
- Compose ファイルに
docker-compose.yamlを指定 - 各サービスのポートとドメインを Coolify の UI で設定
- 環境変数で
API_URLを設定(frontend → backend の内部通信用) - デプロイ
Backend, Frontend, DB をそれぞれ別サービスとして追加。個別にスケール・再デプロイ可能。
Backend
- GitHubリポジトリ接続、Base Directory を
backendに設定 - ビルドパック: Dockerfile
- ポート:
8080 - 環境変数に
DATABASE_URLを設定
Frontend
- GitHubリポジトリ接続、Base Directory を
frontendに設定 - ビルドパック: Dockerfile
- ポート:
3000 - 環境変数に
API_URLを設定(バックエンドの内部URL)
DB
CoolifyのUIから PostgreSQL をワンクリックで追加可能。
このリポジトリを作成した際のコマンド。テンプレートとして使う場合はこのセクションは不要。
# backend
mkdir -p backend && cd backend
go mod init web-go-template
go get github.com/go-chi/chi/v5 github.com/jackc/pgx/v5
mkdir -p sql
# sql/schema.sql, sql/queries.sql, sqlc.yaml を作成後:
sqlc generate
# frontend
cd ..
bunx sv create frontend --template minimal --types ts
cd frontend
bun add -d @sveltejs/adapter-node @biomejs/biome tailwindcss @tailwindcss/vite daisyui@beta
# svelte.config.js で adapter-node に変更
# vite.config.ts に tailwindcss plugin を追加