尚未检测到更新。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.