Architecture
Hosted Monitor + Credits
Frontend
Single-page dashboard built directly in HTML, CSS, and vanilla
JavaScript. It also uses Google Identity Services for sign-in,
Leaflet for map pins, and a small service worker + web manifest so
it behaves like an installable PWA.
Backend
The backend is a small Python service powered by
Flask with Flask-CORS. Production serving is set up for
Gunicorn, and the scheduler work is handled inside Python instead of splitting into
separate services.
Data + Jobs
SQLite stores users, per-account settings, tracked
products, and check history. APScheduler runs recurring stock checks in the
background for each signed-in account.
Inventory + Alerts
Product resolution and stock lookup use requests,
BeautifulSoup, and lxml. When hits are found, the app pushes alerts
through Discord webhooks.
Credits + Attributions
Third-party fonts, icons, maps, services, and open-source packages
used directly by this app and surfaced here in one place.
Fonts + Identity
Maps + Search
Icons + Visual Assets
Local SVG interface icons such as
add_location.svg,
location.svg,
map.svg,
list.svg,
dark.svg,
light.svg, and
road.svg use
Google Material
Symbols icon paths. Project-local raster action icons used in buttons and utility states are
attributed here as
Flaticon exports where applicable.
Backend + Alerts
The service stack includes
Flask,
Flask-CORS,
APScheduler,
requests,
BeautifulSoup4,
lxml,
python-dotenv,
websocket-client,
Gunicorn, and
SQLite. Alert
delivery uses
Discord webhooks.
- Auth: Google OAuth identity token verification on the backend with `google-auth`.
- API wiring: Runtime API origin is injected through `runtime-config.js`, so the same
frontend can point at different environments.
- Why this stack: Lightweight to host, easy to debug, and fast to ship without needing
a frontend framework bundle.
- Brand marks: Walgreens, Best Buy, CVS, Discord, Google, OpenStreetMap, and other
service names or logos remain the property of their respective owners and are shown only to identify
integrations, retailers, or data sources.