尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Map of 1,705 coffee shops, bakeries, and tea houses in Metro Atlanta. One static page. Hosted on Cloudflare Workers.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
caffeye is a map of coffee shops, bakeries, and tea houses in Metro Atlanta. It is one web page. Use it to find a good place quickly.
The application is a static HTML page. It has no build step and no backend. It uses Leaflet and Leaflet.markercluster from a CDN.
The map shows each venue as a pin. The color and the emoji of the pin show the category. There are six categories: Coffee, Roasters, Bakery+Cafe, Tea/Boba, Dessert Cafe, and Specialty.
You can filter the venues by category. You can also filter by these features:檢視完整 README ↗caffeye is a map of coffee shops, bakeries, and tea houses in Metro Atlanta. It is one web page. Use it to find a good place quickly.
🌐 Live site: https://duluth-coffee-shoppes.sra-e69.workers.dev
The application is a static HTML page. It has no build step and no backend. It uses Leaflet and Leaflet.markercluster from a CDN.
The map shows each venue as a pin. The color and the emoji of the pin show the category. There are six categories: Coffee, Roasters, Bakery+Cafe, Tea/Boba, Dessert Cafe, and Specialty.
You can filter the venues by category. You can also filter by these features:
The list shows only the venues that are in the map view. The list order is the Bayesian weighted rating, from high to low. This formula is the same as the IMDB Top 250 formula. The list does not have a sort control.
The September 2026 dataset has 1,705 venues in 14 counties. The page shows 970 independent venues by default. To show all 1,705 venues, set the Include franchise stores toggle to on.
The data comes from two files:
public/shops.json contains 61 curated seed venues in the Duluth area.public/places.json contains regional venues. A script makes this file from Google Places data.If the page cannot load the regional data, it shows the 61 seed venues. By default, 41 of these venues are independent. A banner tells you that the coverage is partial.
The page calculates all counts, the region name, and the verification month from the JSON files. These counts are for September 2026 only. After a data refresh, use the data-summary procedure in TESTS.md to get the new counts.
The page loads JSON files. Thus, you must use an HTTP server. Do not open the file directly.
Go to the public directory in the repository:
cd public
Start the server:
python3 -m http.server 8765
Open http://127.0.0.1:8765 in a browser.
To see the vector map preview, add ?renderer=vector to the URL. This preview uses MapLibre GL JS and OpenFreeMap tiles.
Do these steps in the repository root:
Install the dependencies:
npm ci
Install the Playwright browser:
npx playwright install chromium
Run the tests:
npm test
The npm test command runs the Python unit tests first. Then it runs the Playwright browser tests. GitHub Actions runs the same tests for each push and each pull request to main.
Cloudflare Workers static assets hosts the site. When you push to main, Cloudflare deploys the site automatically.
The wrangler.jsonc file sets assets.directory to ./public/. Cloudflare publishes only the files in public/. The scripts and the documents stay private.
To deploy manually (for example, for an urgent fix), do this command in the repository root:
wrangler deploy
⚠️ Warning: Do not run
wrangler deployin thepublic/directory. Wrangler publishes all files in the assets directory. The.wrangler/cache contains an OAuth token. If this cache is inpublic/, Wrangler publishes the token.
public/shops.json. Each venue must have these data:
independent or franchise)cw block for the work datalate block, if the venue is open after 10 pmwebsite valueaddr. Add its area to neighborhoods.CLGeocoder). Do not estimate coordinates. For more data, see PRODUCT.md §8.public/places.json manually. A script makes this file. To change the regional data, edit scripts/curations.json. Then run scripts/discover_places.py in replay mode. CLAUDE.md gives the procedure.checkedMonth only after you verify the data of that source.To find venues that need editorial research, run this command:
python3 scripts/curate_places.py --research-queue
The command shows the ten highest-ranked independent venues that do not have work data. It shows the place ID, the address, and the website and map links of each venue. The command does not use the network and does not change data. Verify the amenities before you add an overlay.
caffeye/
├── public/ # published files only
│ ├── index.html # application shell; loads the two datasets
│ ├── maplibre-preview.js # optional ?renderer=vector preview
│ ├── shops.json # curated Duluth seed and fallback data
│ ├── places.json # regional data that a script makes
│ ├── manifest.webmanifest # PWA manifest
│ ├── favicon.ico
│ └── brand/ # logos, icons, social images, and tokens
├── brand/ # source brand packages
├── scripts/ # discovery, curation, rating refresh, and Python tests
├── tests/ # Playwright browser tests
├── .github/workflows/ci.yml # GitHub Actions test workflow
├── package.json # test commands
├── playwright.config.js # Playwright configuration
├── wrangler.jsonc # Cloudflare configuration (assets.directory = ./public)
├── README.md # this file
├── PRODUCT.md # product principles and design decisions
├── REQUIREMENTS.md # numbered requirements
├── TESTS.md # tests for each requirement
├── DESIGN.md # visual design system
└── CLAUDE.md # operation notes for AI sessions
?renderer=vector)MIT. See LICENSE.