https://github.com/rhysmaiden/grocery_db
· scanned 2026-06-15 23:50 UTC (2 months, 3 weeks ago)
24 raw signals (0 security + 24 graph)
Last scanned 2 months, 3 weeks ago · v1 · 21 actionable findings from 1 signal source. 3 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 147 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
make_item |
software | healthy | tests/test_ingest.py:6 |
conn |
software | healthy | tests/test_ingest.py:27 |
test_first_ingest_creates_product_and_event |
software | healthy | tests/test_ingest.py:33 |
test_same_price_no_new_event |
software | healthy | tests/test_ingest.py:38 |
test_price_change_creates_event |
software | healthy | tests/test_ingest.py:48 |
test_shrinkflation_creates_attribute_event |
software | healthy | tests/test_ingest.py:59 |
test_reingest_same_day_idempotent |
software | healthy | tests/test_ingest.py:71 |
test_duplicate_sku_in_snapshot_ignored |
software | healthy | tests/test_ingest.py:78 |
test_staleness_guard |
software | healthy | tests/test_ingest.py:84 |
test_first_scrape_of_backfilled_product_rebaselines_silently |
software | healthy | tests/test_ingest.py:93 |
test_simple_grams |
software | healthy | tests/test_units.py:4 |
test_multipack |
software | healthy | tests/test_units.py:8 |
test_multipack_later |
software | healthy | tests/test_units.py:12 |
test_each |
software | healthy | tests/test_units.py:16 |
test_unparseable_returns_none |
software | healthy | tests/test_units.py:20 |
test_normalise_kg_to_g |
software | healthy | tests/test_units.py:25 |
test_normalise_litre_to_ml |
software | healthy | tests/test_units.py:29 |
test_normalise_none_passthrough |
software | healthy | tests/test_units.py:33 |
_r2_setting |
software | healthy | dashboard/app.py:20 |
_r2_client |
software | healthy | dashboard/app.py:29 |
_remote_db_mtime |
software | healthy | dashboard/app.py:42 |
ensure_db |
software | healthy | dashboard/app.py:51 |
get_conn |
software | healthy | dashboard/app.py:77 |
query |
software | healthy | dashboard/app.py:86 |
dollars |
software | dead | dashboard/app.py:90 |
price_history |
software | healthy | dashboard/app.py:94 |
attribute_history |
software | healthy | dashboard/app.py:102 |
history_figure |
software | healthy | dashboard/app.py:109 |
chain_badge |
software | healthy | dashboard/app.py:171 |
unit_price |
software | healthy | dashboard/app.py:183 |
card_title |
software | healthy | dashboard/app.py:191 |
show_detail |
software | healthy | dashboard/app.py:199 |
render_product_cards |
software | healthy | dashboard/app.py:227 |
connect |
software | healthy | src/grocery_db/db.py:89 |
_migrate |
software | healthy | src/grocery_db/db.py:103 |
download |
software | healthy | src/grocery_db/backfill.py:30 |
import_file |
software | healthy | src/grocery_db/backfill.py:42 |
_chains |
software | healthy | src/grocery_db/cli.py:22 |
cmd_scrape |
software | healthy | src/grocery_db/cli.py:30 |
cmd_ingest |
software | healthy | src/grocery_db/cli.py:56 |
cmd_run_daily |
software | dead | src/grocery_db/cli.py:89 |
_hotprices_fallback |
software | healthy | src/grocery_db/cli.py:120 |
cmd_push_raw |
software | dead | src/grocery_db/cli.py:139 |
cmd_daily_ingest |
software | dead | src/grocery_db/cli.py:144 |
cmd_logs |
software | dead | src/grocery_db/cli.py:172 |
cmd_backfill |
software | dead | src/grocery_db/cli.py:181 |
cmd_match |
software | dead | src/grocery_db/cli.py:191 |
cmd_pull |
software | dead | src/grocery_db/cli.py:201 |
cmd_push |
software | dead | src/grocery_db/cli.py:206 |
cmd_stats |
software | dead | src/grocery_db/cli.py:211 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
requirements.txt |
software | healthy | requirements.txt |
test_ingest.py |
software | healthy | tests/test_ingest.py |
test_units.py |
software | healthy | tests/test_units.py |
app.py |
software | healthy | dashboard/app.py |
scrape.yml |
software | healthy | .github/workflows/scrape.yml |
__init__.py |
software | healthy | src/grocery_db/__init__.py |
db.py |
software | healthy | src/grocery_db/db.py |
backfill.py |
software | healthy | src/grocery_db/backfill.py |
cli.py |
software | healthy | src/grocery_db/cli.py |
ingest.py |
software | healthy | src/grocery_db/ingest.py |
units.py |
software | healthy | src/grocery_db/units.py |
__main__.py |
software | healthy | src/grocery_db/__main__.py |
r2.py |
software | healthy | src/grocery_db/r2.py |
__init__.py |
software | healthy | src/grocery_db/scrapers/__init__.py |
woolies.py |
software | healthy | src/grocery_db/scrapers/woolies.py |
coles.py |
software | healthy | src/grocery_db/scrapers/coles.py |
aldi.py |
software | healthy | src/grocery_db/scrapers/aldi.py |
common.py |
software | healthy | src/grocery_db/scrapers/common.py |
__init__.py |
software | healthy | src/grocery_db/matching/__init__.py |
identical.py |
software | healthy | src/grocery_db/matching/identical.py |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
dashboard |
software | healthy | dashboard |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
grocery_db |
software | healthy | src/grocery_db |
scrapers |
software | healthy | src/grocery_db/scrapers |
matching |
software | healthy | src/grocery_db/matching |
| Label | Layer | Status | Path |
|---|---|---|---|
products |
data | healthy | src/grocery_db/db.py |
price_events |
data | healthy | src/grocery_db/db.py |
attribute_events |
data | healthy | src/grocery_db/db.py |
match_groups |
data | healthy | src/grocery_db/db.py |
match_members |
data | healthy | src/grocery_db/db.py |
scrape_runs |
data | healthy | src/grocery_db/db.py |
| Label | Layer | Status | Path |
|---|---|---|---|
StalenessError |
software | healthy | src/grocery_db/ingest.py:20 |
ColesSession |
software | healthy | src/grocery_db/scrapers/coles.py:48 |
ColesBrowserSession |
software | healthy | src/grocery_db/scrapers/coles.py:126 |
ChainTimeout |
software | healthy | src/grocery_db/scrapers/common.py:24 |
| Label | Layer | Status | Path |
|---|---|---|---|
R2_SECRET_ACCESS_KEY |
cicd | healthy | — |
R2_ENDPOINT_URL |
cicd | healthy | — |
R2_ACCESS_KEY_ID |
cicd | healthy | — |
R2_BUCKET |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
scrape |
cicd | healthy | .github/workflows/scrape.yml |
ingest |
cicd | healthy | .github/workflows/scrape.yml |
test |
cicd | healthy | .github/workflows/scrape.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-8nfbxh_j |
software | healthy | /tmp/repobility-clone-8nfbxh_j |
| Label | Layer | Status | Path |
|---|---|---|---|
sqlite |
data | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::aws |
hardware | healthy | .github/workflows/scrape.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::scrape |
cicd | healthy | .github/workflows/scrape.yml |
This page is publicly accessible at:
https://repobility.com/scan/1945d068-5e79-4021-bc57-48b4debf3954/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/1945d068-5e79-4021-bc57-48b4debf3954/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.