{"id":22685391,"url":"https://github.com/progamesigner/boardgamegallery","last_synced_at":"2026-04-30T10:39:41.837Z","repository":{"id":180889274,"uuid":"609757260","full_name":"progamesigner/boardgamegallery","owner":"progamesigner","description":"簡單的桌遊清單展示頁面","archived":false,"fork":false,"pushed_at":"2025-02-26T01:45:51.000Z","size":2246,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-26T02:33:44.058Z","etag":null,"topics":["boardgames","netlify","solid-start","solidjs"],"latest_commit_sha":null,"homepage":"https://boardgames.0x148.com","language":"TypeScript","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/progamesigner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-03-05T06:12:25.000Z","updated_at":"2025-02-26T01:44:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"7692f230-e957-4994-ba02-fc8e7a6d6498","html_url":"https://github.com/progamesigner/boardgamegallery","commit_stats":null,"previous_names":["progamesigner/boardgamegallery"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progamesigner%2Fboardgamegallery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progamesigner%2Fboardgamegallery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progamesigner%2Fboardgamegallery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progamesigner%2Fboardgamegallery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/progamesigner","download_url":"https://codeload.github.com/progamesigner/boardgamegallery/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246200323,"owners_count":20739567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["boardgames","netlify","solid-start","solidjs"],"created_at":"2024-12-09T22:14:40.062Z","updated_at":"2026-04-30T10:39:36.812Z","avatar_url":"https://github.com/progamesigner.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 桌遊清單\n\n簡單的桌遊清單展示，可以透過 `?s=\u003cstore\u003e` 的方式來顯示自己的桌遊清單資料，例如[這裡](https://boardgames.0x148.com)與[範例](https://boardgames.0x148.com?s=googlesheet:2PACX-1vS8wXhjJ1HFHNmpv9IUaOiuBDAv_renKca9uYpLlQiKNCqJLeYwBilUPQW6MBPpdHJzL6ImMs6CcAVY)\n\n## 資料來源\n\n目前支援三種資料來源\n\n其中遊戲名稱為必須，其他欄位則都為可選\n\n如果有設定 BGG ID 則會在找不到對應遊戲圖片的時候，嘗試去找 [BoardGameGeek](https://boardgamegeek.com) 上相應遊戲的圖片\n\nBGG ID 可以在遊戲頁面的網址上找到，例如阿瓦隆的網址為 https://boardgamegeek.com/boardgame/128882 其中的 128882 就是阿瓦隆的 BGG ID\n\n### JSON\n\n內部的資料結構，參數格式為 `json:\u003cpath/to/data.json\u003e`\n\n其中的 `/path/to/data.json` 可以是相對路徑 (必須要先部署檔案) 也可以是絕對路徑網址 (完整的網址，如果網站在 HTTPS 環境中，這個參數的網址也必須要是 HTTPS 的網址)\n\n範例：\n - `json:data.json`\n - `json:/assets/data.json`\n - `json:https://example.com/games.json`\n\n結構：\n```json\n{\n  \"version\": \"v1\",\n  \"games\": [\n    {\n      \"id\": \"string, required\",\n      \"name\": \"string, required\",\n      \"bggId\": \"string, nullable\",\n      \"originalName\": \"string, nullable\",\n      \"description\": \"string, nullable\",\n      \"label\": \"string, nullable\",\n      \"image\": \"string, nullable\",\n      \"types\": [\n        \"string\"\n      ],\n      \"minimalPlayers\": \"number\",\n      \"maximalPlayers\": \"number\",\n      \"minimalMinutes\": \"number\",\n      \"maximalMinutes\": \"number\",\n      \"tags\": [\n        \"string\"\n      ],\n      \"order\": 0\n    },\n  ],\n}\n```\n\n### Notion\n\n使用 Notion 作為資料來源，參數格式為 `notion:\u003cdatabase_id\u003e`\n\n可以複製[這個](https://mirage-chamomile-ad3.notion.site/73ed29a34fa045f6b24c488fc767f10f)資料庫作為範本開始\n\n步驟：\n - 將 Notion 中的 database 分享給 Integration\n - 將 Integration 的 Secret Token 設定到 `SERVER_NOTION_TOKEN` 中\n - 在資料庫中加入下列結構中的 properties 到 database 上\n - 取得資料庫的 datbase id\n - 設定資料來源為 `notion:\u003cdatabase_id\u003e`\n\n結構：\n - `[BGG]: NAME`: 遊戲名稱 (必填)\n - `[BGG]: INCLUDE`: 勾選後才會顯示\n - `[BGG]: BGGID`: 設定在 [BoardGameGeek](https://boardgamegeek.com/) 上的遊戲 ID\n - `[BGG]: ORIGINAL-NAME`: 遊戲原名，如果有設定的話會顯示在遊戲名稱下面\n - `[BGG]: DESCRIPTION`: 遊戲描述\n - `[BGG]: LABEL-TEXT`: 遊戲的 Label (文字)\n - `[BGG]: IMAGE`: 遊戲的圖片\n - `[BGG]: TYPES`: 遊戲類型，多個可以用半形逗號、全形頓號或空格分隔\n - `[BGG]: MIN-PLAYERS`: 最少遊戲人數\n - `[BGG]: MAX-PLAYERS`: 最多遊戲人數\n - `[BGG]: MIN-MINUTES`: 最少遊戲時間 (分鐘)\n - `[BGG]: MAX-MINUTES`: 最多遊戲時間 (分鐘)\n - `[BGG]: TAGS`: 遊戲標籤，多個可以用半形逗號、全形頓號或空格分隔\n - `[BGG]: ORDER`: 遊戲排序，預設由小至大排序\n\n### GoogleSheet\n\n使用 Google Sheet 作為資料來源，參數格式為 `googlesheet:\u003ccsv_id\u003e`\n\n可以複製[這個](https://docs.google.com/spreadsheets/d/1PQOfpB24-R4_e_BFL9hPSONpHodL7RFH-QO51C4vXW0)表格作為範本開始，編輯完成後選擇「檔案」然後「發佈到網路」，並選擇「整份文件」與「逗號分隔值 (.csv)」之後會得到類似 `https://docs.google.com/spreadsheets/d/e/\u003ccsv_id\u003e/pub?output=csv` 這樣的一個網址，將其中的 `csv_id` 複製下來\n\n第一橫列要是欄位名稱，例如 `NAME` (大小寫無關) 接著每一列都是一筆遊戲資料；由於是採用 csv 輸出，因此整個表格都盡可能不要使用半形逗號；編輯更新之後，可能會需要等 10 分鐘才會看到編輯後更新的結果\n\n結構：\n - `ID`: 可選，如果填寫需要是任意不重複字串\n - `NAME`: 遊戲名稱，必填\n - `BGGID`: 如果有的話會顯示連結，並且在沒有設定 `IMAGE` 的時候使用 [BoardGameGeek](https://boardgamegeek.com/) 上的圖片\n - `ORIGINALNAME`: 遊戲原名\n - `DESCRIPTION`: 遊戲描述\n - `LABEL`: 遊戲的 Label (文字)\n - `IMAGE`: 遊戲的圖片，需要是 HTTPS 網址\n - `TYPES`: 遊戲類型，多個可以用全形頓號或空格分隔\n - `MINPLAYERS`: 最少遊戲人數\n - `MAXPLAYERS`: 最多遊戲人數\n - `MINMINUTES`: 最少遊戲時間 (分鐘)\n - `MAXMINUTES`: 最多遊戲時間 (分鐘)\n - `TAGS`: 遊戲標籤，多個可以用全形頓號或空格分隔\n - `ORDER`: 遊戲排序，預設由小至大排序\n\n另外一些其他的欄位也可以使用，這是為了和現有的其他桌遊清單格式相容：\n - `IMGUR`: 與 `IMAGE` 相同，如果和 `IMAGE` 一起設定的話 `IMAGE` 優先\n - `GAMETYPE`: 與 `TYPES` 相同，會和 `TYPES` 合併\n - `PLAYER`: 遊戲人數，可以用 `N` 或 `N-M` 或 `N~M` 這樣的格式\n - `TAG`: 與 `TAGS` 相同，會和 `TAGS` 合併\n - `PLAYTIME`: 遊戲時間，可以用 `N` 或 `N-M` 或 `N~M` 這樣的格式\n\n## 環境變數\n\n透過環境變數可以調整程式的行為\n\n### Client 環境變數\n - `VITE_ENABLE_SOURCE_QUERY`: 是否啟用從參數設定資料來源的方式，如果啟用，可以透過 Query String (`?s=...` or `?store=...` or `?source=...`) 的方式設定資料來源，格式為 `\u003cstore\u003e:\u003cparams\u003e`\n\n - `VITE_DEFAULT_STORE`: 如果沒有給參數時所使用的資料來源，如果沒有設定，有可能會顯示沒有資料來源的錯誤訊息\n\n### Server 環境變數\n - `SERVER_ENABLE_NOTION_QUERY`: 是否允許使用 Notion Integration (需要部署 Serverless Functions)\n - `SERVER_NOTION_TOKEN`: 設定 Notion Integration 的 Secret Token\n\n## 開發\n\n```bash\nnpm install\nnpm run dev\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogamesigner%2Fboardgamegallery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogamesigner%2Fboardgamegallery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogamesigner%2Fboardgamegallery/lists"}