Documentation
Every page of docs/: the guides, one page per tool, one per product, the demo scripts. The pages stay in the repository, reviewed with the code.
Clicking a page shows it; a link to another page opens it here. Each tool keeps its blue box for the page itself, and its 📖 Documentation link, top right, opens its full page here.
docs/databases.md
Databases: every table the console may read
Disclaimer: this is a personal demo project, not a source of truth or a reference implementation. It reflects my own understanding and choices: its content remains subjective, despite the quotes and references it contains. It may be incomplete, simplified, inaccurate or outdated, and it is not meant for production use. Always check the official documentation before applying anything from it. Provided as is, without any warranty: you use it at your own risk.
Databases lists every database the console's read-only account (console_reader) can read, then their tables, then their rows.
TL;DR
mycompany(the company, 30 tables),orchestrator(the order workflow state),catalog(the software catalog),identity(two views of the identity users).- Each database and table carries its label:
livewhen the storefront writes it,staticwhen it is loaded once and only read,mixedfor a database holding both.- The account has
SELECTonly: MySQL itself refuses a write. Any name from a request is checked against what MySQL lists before reaching a statement.
What the pages show
- Databases: one card per database with its label.
- A database: its tables split in two sections, Live experimentation first (in
mycompany:orders,order_items,stock_levels,invoices,payments,audit_logs), then Static, each with its exact row count (oneCOUNT(*)per table, a span in Grafana). - A table: its first 50 rows, a search on one column, exact or contains.
Opening a database, a table or a search calls MySQL: those are the only clicks that wait behind the loader.
Watching live tables move
Place an order on the storefront, then open mycompany: the counts of the live tables grow (an order, its items, an invoice, a payment, audit lines), the static ones do not. orchestrator holds the workflow and its steps.
Where it lives
src/quality_console/databases.py (the reads), database_pages.py (the routes), table_kinds.py (the labels), db/03-console-reader.sql (the account and its grants).