尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Cartworth: nationwide grocery price comparison (web app, iOS app, marketing site)
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Grocery price comparison for anywhere in the US. Enter a ZIP code and Cartworth finds the chains near you, prices the same item at each one, compares them per unit and labels where every price came from. It also shows the week's ads.
ios/| Path | What it is |
|---|---|
server.js, src/ | Node server: a stateless price proxy with a SQLite cache. No accounts, sessions or per-visitor data. |
src/adapters/ | One module per price source: weekly ads, store-level search and nearest-store lookup |
shared/ | Pure logic shared by the server and the browser app: unit pricing, product matching, deal terms, seasonal items |
public/ | The browser app: plain JavaScript, no framework or build step. Each visitor's ZIP, stores and lists stay in their own browser. |
ios/ | The SwiftUI app (XcodeGen project.yml, SwiftData, StoreKit 2), with unit and UI tests |
site/ | The marketing site: hand-written HTML and CSS on Cloudflare. See site/README.md. |
design/sprout/ | The Sprout design system: tokens, components and a contrast table for light and dark |
test/ | 53 Node test files: pricing, matching, accessibility (axe), security and tenant isolation |
scripts/ | Smoke and load tests, price and catalog audits, the nationwide price sampler and a daily price tracker |
ops/ | Deployment, server hardening and coverage sweeps |
marketing/ | App Store listing, screenshots and launch checklists |
Every price is labeled with its source and whether it's a shelf price or a weekly-ad price.
| Source | Used for |
|---|---|
| Flipp | Weekly ads for every chain near a ZIP |
| Instacart storefronts | Shelf prices for ALDI, Woodman's and other chains sold through Instacart |
| Kroger Public API | Exact store prices for Mariano's (optional; uses your own free developer keys) |
| Whole Foods Market | Store-level search and the weekly sales flyer |
| Trader Joe's | Nearest store and product search |
All requests are rate-limited per host, one or two at a time with a gap between them (700 ms by default). A source that
answers "too many requests" is left alone until its wait is over (see src/http.js and
test/qa-http-politeness.test.js).
Needs Node 22.13 or later (it uses the built-in node:sqlite).
npm start # http://localhost:4747
npm run dev # restarts on changes to server.js, src/ and shared/
npm test # the Node test suite
npm run smoke # end-to-end checks against a running server
There are no npm dependencies to install. Configuration is all environment variables, listed in
ops/server-security.md.
cd ios
xcodegen generate
open Cartworth.xcodeproj
CI (.github/workflows/ci.yml) runs the tests on every pull request and on main. On main it also deploys the web app to
Fly.io and runs the smoke test against app.cartworth.app. The marketing site in site/ deploys
separately to Cloudflare. Steps: ops/deploy-web.md.