{"id":51445147,"url":"https://github.com/torifo/dialect-pouch-webapp","last_synced_at":"2026-07-05T15:30:41.340Z","repository":{"id":362394067,"uuid":"1258864716","full_name":"torifo/dialect-pouch-webapp","owner":"torifo","description":"日本各地の方言・言い回しを調べ・眺め・変換して遊べる (Phoenix LiveView + PostgreSQL/PostGIS/pg_bigm)","archived":false,"fork":false,"pushed_at":"2026-06-13T14:57:08.000Z","size":584,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T16:23:49.621Z","etag":null,"topics":["dialect","elixir","japanese","japanese-dialects","phoenix","phoenix-liveview","postgis","postgresql"],"latest_commit_sha":null,"homepage":"https://dialect-pouch.riumu.net","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torifo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-04T01:52:53.000Z","updated_at":"2026-06-13T14:57:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/torifo/dialect-pouch-webapp","commit_stats":null,"previous_names":["torifo/dialect-pocket-webapp","torifo/dialect-pouch-webapp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/torifo/dialect-pouch-webapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torifo%2Fdialect-pouch-webapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torifo%2Fdialect-pouch-webapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torifo%2Fdialect-pouch-webapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torifo%2Fdialect-pouch-webapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torifo","download_url":"https://codeload.github.com/torifo/dialect-pouch-webapp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torifo%2Fdialect-pouch-webapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35160046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dialect","elixir","japanese","japanese-dialects","phoenix","phoenix-liveview","postgis","postgresql"],"created_at":"2026-07-05T15:30:40.507Z","updated_at":"2026-07-05T15:30:41.329Z","avatar_url":"https://github.com/torifo.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 方言ポーチ(dialect-pouch)\n\n\u003c!-- tech-stack:start (auto-generated) --\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Elixir-4B275F?style=for-the-badge\u0026logo=elixir\u0026logoColor=white\" alt=\"Elixir\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Phoenix-FD4F00?style=for-the-badge\u0026logo=phoenixframework\u0026logoColor=white\" alt=\"Phoenix\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PostgreSQL-4169E1?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\" alt=\"PostgreSQL\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Tailwind_CSS-06B6D4?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white\" alt=\"Tailwind CSS\"\u003e\n\u003c/p\u003e\n\u003c!-- tech-stack:end --\u003e\n\n日本各地の方言・言い回しを「気になったら気軽に調べ、眺め、変換して遊べる」consumer 向け Web アプリ。\n「調べ物」っぽい堅さを避け、検索流入(SEO)と地図ブラウズを入口に「へぇ、面白い」と楽しめる体験を提供する。\n\n各データは**出典・素性(provenance)を一級市民**として保持し、「それっぽい嘘」を出さないことを最優先とする。\n\n## コア体験\n- **検索**: 見出し語・読み・意味・用例を対象に日本語 N-gram 部分一致で引く。\n- **地図ブラウズ**: 国 \u003e 都道府県 \u003e 地域 の階層をたどって「うちの言葉」を発見する。\n- **変換**: 標準語の語/言い回しを指定地域の方言へ(逆引きも)。DB ルックアップ限定で、推測生成はしない。\n- **投稿**: ニックネームで方言を投稿し、キュレーター承認後に公開。\n- **provenance 表示**: 各エントリの由来(open_data / manual / user / llm_assisted)・出典・検証状態を明示。未検証は「要確認」表示。\n\n## スタック\n- **言語/フレームワーク**: Elixir 1.19.5 / OTP 27.3.4 / Phoenix 1.8 (LiveView)\n- **DB**: PostgreSQL 16 + PostGIS / pg_bigm(日本語 N-gram 全文検索)/ ltree(地域ツリー)\n- **ジョブ**: Oban(取り込み・LLM 補完バッチ)\n- **UI**: Tailwind CSS + daisyUI\n- **Web サーバ**: Bandit\n\n## 開発セットアップ\n\n### 1. ツールチェーン(asdf)\nErlang / Elixir は asdf で管理する(`.tool-versions` に固定)。macOS 向けの一括セットアップ:\n\n```bash\n./scripts/dev-setup.sh\n```\n\n(Erlang はソースビルドのため初回は 10〜20 分かかる)\n\n### 2. DB(Docker)\nDB だけ Docker で動かす。イメージは `docker/postgres` から pg_bigm をビルドする:\n\n```bash\ndocker compose up -d db\n```\n\n### 3. アプリのセットアップと起動\n```bash\nmix deps.get\nmix ecto.setup     # ecto.create + ecto.migrate + seeds(priv/repo/seeds.exs)\nmix phx.server     # http://localhost:4000\n```\n\n`mix ecto.setup` のシード投入で **31 地域・約 372 エントリ**(地域ノード 37: 国 + 29 県 + 6 エリア)が入る。\nDB をやり直したいときは `mix ecto.reset`。\n\n## 主要ルート\n| パス | 内容 |\n|---|---|\n| `/` | ホーム |\n| `/search` | 検索(LiveView) |\n| `/e/:slug` | エントリ個別ページ(SSR・JSON-LD) |\n| `/regions` | 地域一覧 |\n| `/r/:region_path` | 地域別ページ |\n| `/convert` | 変換 |\n| `/contribute` | 投稿 |\n| `/admin/moderation` | モデレーション(管理者認証) |\n| `/sitemap.xml` | サイトマップ |\n\n## テスト\n```bash\nmix test          # テスト実行(ecto.create/migrate を含む)\nmix precommit     # compile --warnings-as-errors + deps.unlock --unused + format + test\n```\n\nコミット前は `mix format` と `mix precommit` を通すこと。\n\n## デプロイ\n\n本番デプロイ（VPS / オンプレ / バックアップ運用）の手順は [docs/deployment.md](docs/deployment.md) を参照。\n\n## データ / provenance / ライセンス方針\n- **provenance を一級市民**として保持し、「それっぽい嘘」を構造的に避ける。変換は DB ルックアップ限定で推測生成しない。\n- 現行シードの背骨は **Wikipedia 各方言記事(CC BY-SA 4.0)**。出典リンク(`source.url`)を必ず保持し、本文の丸ごと転載はしない(語・意味・例の事実 + 出典リンクのみ)。\n- 未確認情報は `reliability: unverified`(真偽未確認)として UI で「出典:○○(真偽未確認)」相当のバッジを付け、確定情報と区別する。\n- **NINJAL(GAJ/LAJ/COJADS 等)は再配布制限**のため、再公開せず**出典・検証参照に限定**する。詳細は `docs/research/open-data-sources.md`。\n- 規約が明確でないコミュニティ由来(SNS/まとめ)は `kind: community` + 出典ポインタで扱う(複製でなく「ポインタ + 事実」)。\n\n## プロジェクト構成\n- `lib/dialect_pouch/` … ドメインコンテキスト\n  - `accounts` … 管理者アカウント / 認証\n  - `dictionary` … エントリ・provenance・検索\n  - `regions` … 地域階層(ltree / PostGIS)\n  - `contributions` … ユーザー投稿・モデレーション\n  - `conversion` … 変換(DB ルックアップ)\n- `lib/dialect_pouch_web/` … LiveView / controllers / router / admin_auth\n- `priv/seed_data/` … 初期シード(`regions_seed.json`, `dialect/*.json`)\n- `priv/repo/seeds.exs` … シード投入\n- `docker/postgres/` … PostGIS + pg_bigm の DB イメージ\n- `deploy/` … nginx.conf / backup.sh\n- `.kiro/specs/dialect-pouch-mvp/` … 要件・設計(requirements.md / design.md)\n- `docs/research/` … データ調達・ライセンス調査\n\n## ライセンス\n**コードのライセンス**と**方言データのライセンスは別物**である。\n\n- コード: リポジトリのライセンス表記に従う。\n- 方言データ: シードは Wikipedia 由来(**CC BY-SA 4.0**・継承/出典表示が必要)。出典・ライセンスはエントリごとの provenance に保持される。NINJAL 等の参照専用ソースは再配布対象に含めない。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorifo%2Fdialect-pouch-webapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorifo%2Fdialect-pouch-webapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorifo%2Fdialect-pouch-webapp/lists"}