https://github.com/tpsyyyyyl/price-monitor
· scanned 2026-06-16 00:40 UTC (2 months, 1 week ago)
29 raw signals (0 security + 29 graph)
Last scanned 2 months, 1 week ago · v1 · 29 actionable findings from 1 signal source. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 304 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 |
|---|---|---|---|
shot |
software | healthy | frontend/scripts/screenshots.mjs:shot |
formatPrice |
software | healthy | frontend/src/format.js:formatPrice |
formatRelative |
software | healthy | frontend/src/format.js:formatRelative |
pctChangeStyle |
software | healthy | frontend/src/format.js:pctChangeStyle |
getToken |
software | healthy | frontend/src/api.js:getToken |
saveToken |
software | healthy | frontend/src/api.js:saveToken |
clearToken |
software | healthy | frontend/src/api.js:clearToken |
api |
software | healthy | frontend/src/api.js:api |
extractUrl |
software | healthy | frontend/src/api.js:extractUrl |
trackProduct |
software | healthy | frontend/src/api.js:trackProduct |
downloadCsv |
software | healthy | frontend/src/api.js:downloadCsv |
applyStoredTheme |
software | healthy | frontend/src/useTheme.js:applyStoredTheme |
useTheme |
software | healthy | frontend/src/useTheme.js:useTheme |
Private |
software | healthy | frontend/src/main.jsx:Private |
ThemeControls |
software | healthy | frontend/src/components/ThemeControls.jsx:ThemeControls |
detectFields |
software | healthy | frontend/src/components/ResultCard.jsx:detectFields |
inferCurrency |
software | healthy | frontend/src/components/ResultCard.jsx:inferCurrency |
renderValue |
software | healthy | frontend/src/components/ResultCard.jsx:renderValue |
isEmpty |
software | healthy | frontend/src/components/ResultCard.jsx:isEmpty |
ResultCard |
software | healthy | frontend/src/components/ResultCard.jsx:ResultCard |
handleTrack |
software | healthy | frontend/src/components/ResultCard.jsx:handleTrack |
ToastProvider |
software | healthy | frontend/src/components/Toast.jsx:ToastProvider |
useToast |
software | healthy | frontend/src/components/Toast.jsx:useToast |
fmtDate |
software | healthy | frontend/src/components/PriceChart.jsx:fmtDate |
readColors |
software | healthy | frontend/src/components/PriceChart.jsx:readColors |
useThemeColors |
software | healthy | frontend/src/components/PriceChart.jsx:useThemeColors |
ChartTooltip |
software | healthy | frontend/src/components/PriceChart.jsx:ChartTooltip |
PriceChart |
software | healthy | frontend/src/components/PriceChart.jsx:PriceChart |
siteLabel |
software | healthy | frontend/src/components/Badges.jsx:siteLabel |
PctBadge |
software | healthy | frontend/src/components/Badges.jsx:PctBadge |
SiteBadge |
software | healthy | frontend/src/components/Badges.jsx:SiteBadge |
AddProductForm |
software | healthy | frontend/src/components/AddProductForm.jsx:AddProductForm |
submit |
software | healthy | frontend/src/components/AddProductForm.jsx:submit |
Skeleton |
software | healthy | frontend/src/components/Skeleton.jsx:Skeleton |
TableSkeleton |
software | healthy | frontend/src/components/Skeleton.jsx:TableSkeleton |
Wave |
software | healthy | frontend/src/components/ParticleField.jsx:Wave |
x |
software | healthy | frontend/src/components/ParticleField.jsx:x |
z |
software | healthy | frontend/src/components/ParticleField.jsx:z |
onIntensity |
software | healthy | frontend/src/components/ParticleField.jsx:onIntensity |
onScroll |
software | healthy | frontend/src/components/ParticleField.jsx:onScroll |
applyWave |
software | healthy | frontend/src/components/ParticleField.jsx:applyWave |
ParticleField |
software | healthy | frontend/src/components/ParticleField.jsx:ParticleField |
EmptyState |
software | healthy | frontend/src/components/EmptyState.jsx:EmptyState |
Shell |
software | healthy | frontend/src/components/Shell.jsx:Shell |
logout |
software | healthy | frontend/src/components/Shell.jsx:logout |
InsightPanel |
software | healthy | frontend/src/components/InsightPanel.jsx:InsightPanel |
ConfirmDialog |
software | healthy | frontend/src/components/ConfirmDialog.jsx:ConfirmDialog |
onKey |
software | healthy | frontend/src/components/ConfirmDialog.jsx:onKey |
ProductDetail |
software | healthy | frontend/src/pages/ProductDetail.jsx:ProductDetail |
confirmRemove |
software | healthy | frontend/src/pages/ProductDetail.jsx:confirmRemove |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
fly.toml |
software | healthy | fly.toml |
README.md |
software | healthy | README.md |
start.sh |
software | healthy | start.sh |
Dockerfile |
software | healthy | Dockerfile |
.env.example |
software | healthy | .env.example |
handoff.md |
software | healthy | handoff.md |
requirements.txt |
software | healthy | requirements.txt |
vite.config.js |
software | healthy | frontend/vite.config.js |
package.json |
software | healthy | frontend/package.json |
index.html |
software | healthy | frontend/index.html |
package-lock.json |
software | healthy | frontend/package-lock.json |
eslint.config.js |
software | healthy | frontend/eslint.config.js |
screenshots.mjs |
software | healthy | frontend/scripts/screenshots.mjs |
index.css |
software | healthy | frontend/src/index.css |
format.js |
software | healthy | frontend/src/format.js |
api.js |
software | healthy | frontend/src/api.js |
useTheme.js |
software | healthy | frontend/src/useTheme.js |
main.jsx |
software | healthy | frontend/src/main.jsx |
ThemeControls.jsx |
software | healthy | frontend/src/components/ThemeControls.jsx |
ResultCard.jsx |
software | healthy | frontend/src/components/ResultCard.jsx |
Toast.jsx |
software | healthy | frontend/src/components/Toast.jsx |
PriceChart.jsx |
software | healthy | frontend/src/components/PriceChart.jsx |
Badges.jsx |
software | healthy | frontend/src/components/Badges.jsx |
AddProductForm.jsx |
software | healthy | frontend/src/components/AddProductForm.jsx |
Skeleton.jsx |
software | healthy | frontend/src/components/Skeleton.jsx |
ParticleField.jsx |
software | healthy | frontend/src/components/ParticleField.jsx |
EmptyState.jsx |
software | healthy | frontend/src/components/EmptyState.jsx |
Shell.jsx |
software | healthy | frontend/src/components/Shell.jsx |
InsightPanel.jsx |
software | healthy | frontend/src/components/InsightPanel.jsx |
ConfirmDialog.jsx |
software | healthy | frontend/src/components/ConfirmDialog.jsx |
ProductDetail.jsx |
software | healthy | frontend/src/pages/ProductDetail.jsx |
Extract.jsx |
software | healthy | frontend/src/pages/Extract.jsx |
Dashboard.jsx |
software | healthy | frontend/src/pages/Dashboard.jsx |
Login.jsx |
software | healthy | frontend/src/pages/Login.jsx |
test_scraper.py |
software | healthy | tests/test_scraper.py |
test_extract.py |
software | healthy | tests/test_extract.py |
test_products.py |
software | healthy | tests/test_products.py |
scrapeme.html |
software | healthy | tests/fixtures/scrapeme.html |
books_toscrape.html |
software | healthy | tests/fixtures/books_toscrape.html |
env.py |
software | healthy | alembic/env.py |
README |
software | healthy | alembic/README |
0001_initial.py |
software | healthy | alembic/versions/0001_initial.py |
database.py |
software | healthy | backend/database.py |
__init__.py |
software | healthy | backend/__init__.py |
auth.py |
software | healthy | backend/auth.py |
routes_products.py |
software | healthy | backend/routes_products.py |
seed_demo.py |
software | healthy | backend/seed_demo.py |
scheduler.py |
software | healthy | backend/scheduler.py |
extract.py |
software | healthy | backend/extract.py |
models.py |
software | healthy | backend/models.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
FakeMessage |
software | healthy | tests/test_extract.py:44 |
FakeChoice |
software | healthy | tests/test_extract.py:47 |
FakeResponse |
software | healthy | tests/test_extract.py:50 |
FakeCompletions |
software | healthy | tests/test_extract.py:53 |
FakeChat |
software | healthy | tests/test_extract.py:57 |
FakeClient |
software | healthy | tests/test_extract.py:60 |
Base |
software | healthy | backend/database.py:23 |
CreateProductRequest |
software | healthy | backend/routes_products.py:25 |
User |
software | healthy | backend/models.py:13 |
Product |
software | healthy | backend/models.py:22 |
PricePoint |
software | healthy | backend/models.py:41 |
ExtractRequest |
software | healthy | backend/routes_extract.py:12 |
SiteAdapter |
software | healthy | backend/scraper/adapters.py:41 |
ScraperError |
software | healthy | backend/scraper/errors.py:8 |
FetchError |
software | healthy | backend/scraper/errors.py:12 |
UnsupportedSiteError |
software | healthy | backend/scraper/errors.py:16 |
ParseError |
software | healthy | backend/scraper/errors.py:20 |
ScrapeResult |
software | healthy | backend/scraper/service.py:13 |
| Label | Layer | Status | Path |
|---|---|---|---|
frontend |
software | healthy | frontend |
scripts |
software | healthy | frontend/scripts |
src |
software | healthy | frontend/src |
components |
software | healthy | frontend/src/components |
pages |
software | healthy | frontend/src/pages |
tests |
software | healthy | tests |
fixtures |
software | healthy | tests/fixtures |
alembic |
software | healthy | alembic |
versions |
software | healthy | alembic/versions |
backend |
software | healthy | backend |
scraper |
software | healthy | backend/scraper |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
ThemeControls |
frontend | healthy | frontend/src/components/ThemeControls.jsx |
ResultCard |
frontend | healthy | frontend/src/components/ResultCard.jsx |
PriceChart |
frontend | healthy | frontend/src/components/PriceChart.jsx |
AddProductForm |
frontend | healthy | frontend/src/components/AddProductForm.jsx |
ParticleField |
frontend | healthy | frontend/src/components/ParticleField.jsx |
EmptyState |
frontend | healthy | frontend/src/components/EmptyState.jsx |
Shell |
frontend | healthy | frontend/src/components/Shell.jsx |
InsightPanel |
frontend | healthy | frontend/src/components/InsightPanel.jsx |
ConfirmDialog |
frontend | healthy | frontend/src/components/ConfirmDialog.jsx |
ProductDetail |
frontend | healthy | frontend/src/pages/ProductDetail.jsx |
Extract |
frontend | healthy | frontend/src/pages/Extract.jsx |
Dashboard |
frontend | healthy | frontend/src/pages/Dashboard.jsx |
Login |
frontend | healthy | frontend/src/pages/Login.jsx |
| Label | Layer | Status | Path |
|---|---|---|---|
POST /demo |
api | healthy | backend/auth.py |
POST /products |
api | healthy | backend/routes_products.py |
GET /products |
api | healthy | backend/routes_products.py |
GET /products/{product_id}/history |
api | healthy | backend/routes_products.py |
DELETE /products/{product_id} |
api | healthy | backend/routes_products.py |
GET /products/{product_id}/export.csv |
api | healthy | backend/routes_products.py |
POST /scrape |
api | healthy | backend/routes_products.py |
GET /products/{product_id}/insight |
api | healthy | backend/routes_products.py |
POST /extract |
api | healthy | backend/routes_extract.py |
GET /api/health |
api | healthy | backend/main.py |
GET /{path:path} |
api | healthy | backend/main.py |
| Label | Layer | Status | Path |
|---|---|---|---|
/ProductDetail |
frontend | healthy | frontend/src/pages/ProductDetail.jsx |
/Extract |
frontend | healthy | frontend/src/pages/Extract.jsx |
/Dashboard |
frontend | healthy | frontend/src/pages/Dashboard.jsx |
/Login |
frontend | healthy | frontend/src/pages/Login.jsx |
/login |
frontend | healthy | frontend/src/main.jsx |
/ |
frontend | healthy | frontend/src/main.jsx |
/tracker |
frontend | healthy | frontend/src/main.jsx |
/product/:id |
frontend | healthy | frontend/src/main.jsx |
* |
frontend | healthy | frontend/src/main.jsx |
| Label | Layer | Status | Path |
|---|---|---|---|
Base |
data | healthy | backend/database.py |
User |
data | healthy | backend/models.py |
Product |
data | healthy | backend/models.py |
PricePoint |
data | healthy | backend/models.py |
users |
data | healthy | backend/models.py |
products |
data | healthy | backend/models.py |
price_points |
data | healthy | backend/models.py |
| Label | Layer | Status | Path |
|---|---|---|---|
postgres |
data | healthy | README.md |
sqlite |
data | healthy | README.md |
postgresql |
data | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.env.example |
security | healthy | .env.example |
auth::backend/auth.py |
security | healthy | backend/auth.py |
auth::README.md |
security | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
backend |
cicd | healthy | .github/workflows/ci.yml |
frontend |
cicd | healthy | .github/workflows/ci.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-vaha06iq |
software | healthy | /tmp/repobility-clone-vaha06iq |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8080 |
network | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
124.0.0.0 |
network | healthy | backend/scraper/fetch.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | frontend/package-lock.json |
| Label | Layer | Status | Path |
|---|---|---|---|
password_literal::backend/auth.py |
security | healthy | backend/auth.py |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
This page is publicly accessible at:
https://repobility.com/scan/accdaa8d-c427-4abc-b44d-b6896eb070cd/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/accdaa8d-c427-4abc-b44d-b6896eb070cd/
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.