Recently maintained
Latest Updates
Current project pages ordered by their most recent published version.
Overview
QDBAuth
QDBAuth QDBAuth is the central login/2FA service for the QDB ecosystem. It owns the ONLY username/password check and the ONLY TOTP 2FA check across every consuming site — QDBAdmin, the CMS (built in A…
Known Limitations & Security Notes
QDBAuth
Known Limitations & Security Notes Open — temporary CMS-New TOTP test-code bypass left in production code Status: open as of 2026-09-06, added deliberately for QA testing, not yet removed. views.py's…
Administrator User Guide
QDBAuth
QDBAuth Administrator User Guide Audience: anyone with Super Admin or Admin role access to QDBAuth's own dashboard, who creates/manages accounts for the QDB ecosystem's sites (CMS, TD, QDB admin, migr…
Authentication, MFA & Token Internals
QDBAuth
Authentication, MFA & Token Internals Written for the "official developer and integration guide" requested in ClickUp task 86d40a7qe. Complements API Reference (endpoint shapes) and Administrator User…
Roles, Permissions & Multi-Tenancy
QDBAuth
Roles, Permissions & Multi-Tenancy Written for the "official developer and integration guide" requested in ClickUp task 86d40a7qe, which frames QDBAuth as "similar to Keycloak." This page documents wh…
Changelog
QDBAuth
2026-09-07 — Site Clients + per-site role management Added apps/auth/site_clients.py + db/create_site_clients_table.sql (new site_clients table): each registered site's own clients/customers — previou…
Changelog
BreedingInfill
Changelog Consolidated history of BreedingInfill, newest first. Entries dated 23–25 August 2026 come from the retired RQDG/BreedingInFill2 repository and are folded in here so the record is continuous…
BreedingInfill Overview
BreedingInfill
BreedingInfill Last reviewed: 2026-09-07 Repository: https://github.com/RQDG/BreedingInFill.git — working copy C:\Users\Robert\Projects\BreedingInfill Schema: breeding v4 (post-key_name drop, 27 Augus…
Status and Open Items
BreedingInfill
Status and Open Items Last reviewed: 2026-09-07 — measured against the live databases. Where things stand The rebuild is done and shipped. rs.breeding holds 3,106,726 rows and qdb.breeding holds the s…
Change Log
QDG Identity
QDG Identity change log Document version: 1.0.15. Updated 7 September 2026. Successful candidate preparation and smarter regression selection The corrected-candidate run completed on Odin. Its returne…
How to Use
QDG Identity
QDG Identity: operating and deployment workflow Document version: 1.0.14. Updated 7 September 2026. This page describes the current delivery workflow. It does not authorise a production change or clai…
August 2026 Validation
BreedingInfill
August 2026 Validation Source document: reports/Breeding_validation_August_2026.docx Figures taken against the live databases on 5 September 2026. What was tested and why The rebuilt breeding table wa…
Pipeline and Operations
BreedingInfill
Pipeline and Operations Last reviewed: 2026-09-07 Every command is a dry run unless given --apply (or apply for the batch driver). Nothing writes by default. Full rebuild run_breeding_rebuild.bat dry…
Breeding Table Schema
BreedingInfill
Breeding Table Schema Last reviewed: 2026-09-07 — verified against live rs.breeding and qdb.breeding. rs.breeding (local, DESKTOP-7UDSBA1) and qdb.breeding (ODIN) are column-identical: 23 columns, sam…
Data Sources
BreedingInfill
Data Sources Last reviewed: 2026-09-07 breeding is built from two independent sources. Neither is authoritative on its own, and the fact that they were assembled from different origins is what makes t…
Breeding Rules
BreedingInfill
Breeding Rules Last reviewed: 2026-09-07 Authoritative code: rebuild/common.py, rebuild/load_pq.py, rebuild/load_studbook.py, rebuild/linking.py, rebuild/reconcile_sources.py, rebuild/dedup_adjacent_y…
User Guide
QDG Identity
QDG Identity user guide Document version: 1.0.2. Updated 6 September 2026. Robert's bounded Codex pilot has passed; production OAuth onboarding is not yet complete. Who this service is for The first r…
Project Description
QDG Identity
QDG Identity: purpose, architecture and decisions Document version: 1.0.2. Updated 6 September 2026. Owner: Robert. QDG Identity establishes Auth0 as QDG's shared identity platform. The first integrat…
Historical Changelog
Gary Breeding Project
Changelog This page consolidates the repository's historical changelog, handover corrections, validation notes, and Git baseline. Entries are in reverse chronological order. Dates are absolute. 2026-0…
Project Overview
Gary Breeding Project
Gary Breeding Project Purpose The Gary Breeding Project rewrites Racing & Sports breeding and pedigree report tooling as a testable Python data layer with a Node.js document renderer. It reads the leg…
Report Files and Outputs
Gary Breeding Project
Report Files and Outputs What the project produces The project has two output families: Breeding and pedigree reports from breeding_report_v3. Each run writes a structured JSON file. The Node renderer…
Change Log
Troyen Website
Troyen Website — Change Log Document set version: 0.2.0 v0.3.0 documentation correction — 2026-09-05 The local Flask site now renders the original API Documentation: Race Cards v2.0.0 and complete Int…
User Guide
Troyen Website
Troyen Website — User Guide Document set version: 0.2.0 Date: 2026-09-05 Status: This guide describes the verified current public experience. It will be revised as the Python replacement website is im…
Project Description
Troyen Website
Troyen Website — Project Description Document set version: 0.2.0 Date: 2026-09-05 Status: Framework-neutral Python foundation created and the supplied reference site captured; the replacement website…
How to Start a Project
How to Start a Project
How To Start A Project Use this guide when starting a new Codex-assisted project. Important: Copy this template's AGENTS.md into the new project root before opening or starting the agent task there. A…
Project Documentation Template
How to Start a Project
[Project Name] Documentation Document set version: [x.y.z] Date: [YYYY-MM-DD] Status: [Current status in one sentence.] Primary language/framework: [Python / .NET / Django / other confirmed selection]…
QDG Knowledge Base Documentation Rules
How to Start a Project
QDG Knowledge Base project documentation rules These instructions apply when starting or continuing a project from this template. They supplement the local documentation, changelog, handover and versi…
Version Control
How to Start a Project
Version Control Use this document as the standard version-control rule set for Codex-assisted projects. Version Format Use Semantic Versioning: MAJOR.MINOR.PATCH Example: 1.4.1 Display versions may in…
Handover Template
How to Start a Project
[Project Name] Handover - v[x.y.z] Date: [YYYY-MM-DD] Document set version: [x.y.z] Current State Local project source: [local project path] OneDrive target, if any: [OneDrive project path or none] Cu…
Change Log Template
How to Start a Project
[Project Name] Changelog Document set version: [x.y.z] Date: [YYYY-MM-DD] Rules Record meaningful source, config, prompt, workflow, and documentation changes. Keep entries newest first. Keep entries c…
Changelog
QDG KB
Changelog Naming: QDG Knowledge Base (QDG KB) is the canonical product and data platform. qdb.qdatasite.com is its public host. “QDG Wiki” and “KB Wiki” refer to the superseded localhost pilot or are…
Team setup: QDG Knowledge Base MCP
QDG Knowledge Base MCP
Team setup: QDG Knowledge Base MCP What this connects to The product is QDG Knowledge Base (QDG KB). The qdb.qdatasite.com name is the public host; it does not mean there is a separate product called…
Production handover
QDG Knowledge Base MCP
QDG Knowledge Base MCP production handover Date: 4 September 2026 Outcome The QDG Knowledge Base MCP is a central team service on Odin. Codex and Claude clients connect to https://qdb.qdatasite.com/mc…
Database
QDG CMS
QDG CMS — Database No direct database access This repository contains no direct database access of any kind — no ORM, no SQL driver, no connection string, no database config. A repo-wide search for sq…
Project Architecture
QDG CMS
QDG CMS — Project Architecture Stack React 19.1 + TypeScript ~5.8.3, built with Vite 7 (vite.config.ts: @vitejs/plugin-react), styled with Tailwind CSS 3.4, linted with ESLint 9 (flat config, eslint.c…
API Documents
QDG CMS
QDG CMS — API Integration QDG CMS is a pure API-consuming frontend. All data access goes through the QDG CMS API backend (see the qdg-cms-api KB project) or, for raw file bytes, directly to Wasabi obj…
User Guide
QDG CMS
QDG CMS — User Guide This guide covers what an authenticated CMS operator can do in the app. Logging in There is no in-app login form. Signing in redirects to the centralized auth portal (auth.qdatasi…
Overview
QDG CMS
QDG CMS QDG CMS is the frontend content management application for QDG and affiliated horse-racing sites. It is a React single-page app that lets CMS operators author stories and manage photo/video me…
API Reference
QDG CMS API
API Reference All routes are versioned: api/v{version:apiVersion}/[controller], currently v1. Except where noted, every endpoint requires the qdg_session cookie ([Authorize(AuthenticationSchemes = Ses…
Database
QDG CMS API
Database QDG CMS API reads/writes three separate MySQL databases (same server in the current environment, but modeled as distinct connections/credentials in code — see Architecture). All access goes t…
Project Architecture
QDG CMS API
Project Architecture QDG CMS API follows a clean/onion layering split across four projects, all targeting .NET 9. Layers QDG.CMS.API (controllers, auth handler, Swagger, versioning, DI wiring) -> QDG.…
User Guide
QDG CMS API
User Guide Prerequisites .NET 9 SDK Network access to the MySQL server hosting the cms, qdb, and photogallery databases Network access to the QDBAuth service and a Wasabi bucket (or equivalent S3-comp…
Overview
QDG CMS API
QDG CMS API A .NET 9 Web API that provides content management services for QDG and affiliated sites: story/article authoring, an image/video gallery backed by Wasabi (S3-compatible) storage, and refer…
Changelog
AdminManagement
Changelog 2026-08-20 — QDBAdmin v1.16.0 Added Added a dedicated Pedigree tile immediately after Breeding, linking to the QWebHub Gary Breeding Reports module at /breeding-reports/. Added a distinct Pe…
Changelog
QWebHub
QWebHub Changelog v1.2.2 — 2026-08-20 Changed Replaced the overly brown light theme with a soft neutral-grey palette. Kept the main background visibly darker than white while using lighter cards and i…
Database Configuration
QWebHub
QWebHub Database Configuration All DB config resolution lives in one place: qwebhub/config.py. Modules mounted under the hub defer to this instead of each reading their own db.json, as they did before…
QWebHub Q&A
QWebHub
QWebHub Q&A How do I change the Odin FTP password used by QWebHub deployments? The credential must be changed in two places: Change the Windows ftpuser account credential on Odin. Update the local use…
Odin Deployment
QWebHub
Odin Deployment Purpose QWebHub and its sibling modules deploy to Odin through local Windows BAT launchers backed by the shared Python FTP helper. The FTP password is stored once in the Windows user e…
Architecture
QWebHub
QWebHub Architecture QWebHub is a shared Django hub that mounts several otherwise-independent Django projects (QDBAdmin, QProcess, QDG KB Viewer) under one server, each under its own URL prefix, plus…
User Guide
GateKeeper
GateKeeper — User Guide Hands-on walkthrough for running GateKeeper locally and doing the actual admin tasks — onboarding a client, issuing/rotating tokens, assigning packages, adding overrides. For t…
Database
GateKeeper
GateKeeper — Database Table-by-table reference for the MySQL schema. Full DDL + seed data: docs/gatekeeper-schema.sql. High-level entity summary and design rationale: Architecture. Seed-data/FK issues…
Overview
GateKeeper
GateKeeper — Overview What is GateKeeper? GateKeeper is the access-control layer for our racing data APIs. Every external client (e.g. CWS, WSB) that wants meetings, racecards, speed maps, or results…
Overview
Troyon Data
Troyon Data — Racing Data Platform Troyon Data ("Troyen"/"Troyon" are used interchangeably across the codebase — e.g. TroyenService builds as TroyonService) is a thoroughbred / harness / greyhound rac…
TD Architecture (Infrastructure & Deployment)
Troyon Data
TD Architecture (Infrastructure & Deployment) This is the infrastructure view — environments, deployment targets, network topology, external dependencies, ports/domains. For the business-logic archite…
Database Reference
Troyon Data
Database Reference The primary datastore is MongoDB (Troyon_Dev DB). A legacy, read-only MySQL database ("RS" / Racing & Sports) is joined into occasionally for RS-client race cards and an id cross-re…
Overview
Stats
Stats (Meeting Stats API) Single-file FastAPI service (trainer_stats_api.py, app title "Meeting Stats API", currently v2.0.0) that computes trainer and jockey performance statistics for horse-racing m…
FAQ
Stats
FAQ Is this API session-based? No. There is no server-side session store, session cookie, or per-user login state. Auth is a single shared static bearer token (tds-stats-secure-token-2026) — anyone wh…
User Guide
Stats
User Guide Audience Anyone setting up, running, or operating this API for the first time — locally for development, or as a standing Windows service. Prerequisites Python 3.x with pip Network access t…
API Reference
Stats
API Reference Base app: Meeting Stats API v2.0.0. Interactive docs when running: Swagger /docs, ReDoc /redoc, hand-written reference /api-docs, manual tester /api-test. Auth Every endpoint below excep…
Database
Stats
Database MySQL/MariaDB, accessed via PyMySQL with DictCursor and autocommit=True. See architecture for how the two connections fit into the overall data flow. Configuration config.json (git-ignored; c…
Architecture
Stats
Architecture Single-file FastAPI app (trainer_stats_api.py) — no package/module split. Everything below is one process: routing, SQL, calculation, and persistence. Data flow Source DB (MySQL/MariaDB,…
Known Issues & Limitations
Runner Form
Runner Form — Known Issues & Limitations Open: hard-coded login credentials Status: Open — dev-only, must fix before production. Symptoms: Login accepts a single hard-coded username/password checked d…
Quick Reference
Runner Form
Runner Form — Quick Reference For full detail see [[api-reference]] (endpoints), [[database-schema]] (tables/columns), and [[architecture]] (request flow, deployment). Run locally .\venv\Scripts\Activ…
Overview
Runner Form
Runner Form A Django horse-racing form viewer. Users log in and browse runner (horse), jockey, and trainer profiles with race-by-race history and computed career stats. Purpose Entity URL pattern What…
User Guide
Runner Form
Runner Form — User Guide Audience Racing analysts and internal staff looking up horse/jockey/trainer form. Requires a login — ask a maintainer for credentials (see [[bugs]] for why they're currently h…
Architecture
Runner Form
Runner Form — Architecture Request flow Browser sends an HTTP request to Django. config/urls.py includes runner_form.urls at the /form/ prefix. @custom_login_required checks request.session['is_authen…
API Reference
Runner Form
Runner Form — API Reference Base path: /form/ (mounted by config/urls.py). All routes below are relative to that. A prior Runner_Form_API_Documentation.docx (repo root) documents a shared dev/staging…
Database Schema
Runner Form
Runner Form — Database Schema Connects to MySQL database qdb at 138.226.220.168:3306 (user web_admin), configured in config/settings.py. There is no Django ORM — every table below is queried with raw…
Changelog
Stats
Changelog Unreleased (working tree, as of 2026-08-12) Uncommitted changes on dev touch trainer_stats_api.py (~380 lines), config.example.json, and config.json. Net effect versus the last commit: row n…
User Guide
Titan Command
User Guide A walkthrough of Titan Command from an operator's seat — what you'll actually see and click. For how the system works under the hood, see the Architecture page. Roles Admin — everything, in…
Architecture
Titan Command
Architecture A system-level view of how Titan Command is put together. For the local database's own schema, see the Database Schema page; for every HTTP route, see the API Reference page; for how the…
Overview
SmartMail
SmartMail SmartMail is a Flask web application that connects a mailbox (Outlook via Microsoft Graph, and Gmail) to an AI-assisted triage and drafting workflow: it syncs mail, stores it in MongoDB/Post…
Development & Deployment Workflow
SmartMail
SmartMail Development & Deployment Workflow Local development setup python -m venv .venv then activate it. pip install -r requirements.txt — note this file does not include pyinstaller, pywin32, or wa…
User Guide
SmartMail
SmartMail User Guide Two separate logins — don't confuse them SmartMail app login (/login) — a plain username/password form (no Microsoft branding). Credentials are hardcoded in app/main.py as a fixed…
API Reference
SmartMail
SmartMail API Reference Single Flask app (app/main.py). Auth model: a session cookie (session["logged_in"], set by /login) gates almost nothing except /logout and the GPT Prompt admin endpoints; every…
Database
SmartMail
SmartMail Database SmartMail runs two storage systems side by side with overlapping responsibilities. See Architecture for how they're used at runtime. SQLite (SQLAlchemy) — app/database.py Fixed path…
Architecture
SmartMail
SmartMail Architecture Evidence-based trace of how SmartMail actually behaves at runtime (not just intended design). See also Overview, Database, API Reference, Workflow. 1. App boot sequence (app/mai…
CLI Quick Reference
SmartMail
SmartMail CLI Quick Reference All commands run via python -m app.main <command> ... after pip install -r requirements.txt and a .env/env/.env.development with CLIENT_ID etc. set. Auth python -m app.ma…
Changelog
SmartMail
Changelog In progress (branch NEW_POPUP) Editing app/templates/outlook.html (uncommitted at time of writing). Recent history (main) 4336a16 — Fixed the send button. a586aa6 — Addressed an inbox-loadin…
Auto Sync Feature
Titan Command
Auto Sync Feature This is a current-state explanation of how "Auto Sync" behaves today. For the commit-by-commit history of how it got here, see docs/auto-sync-v3-features.md and docs/auto-sync-v4-fea…
API Reference
Titan Command
API Reference Every reachable route in QDG.Migration.Web, grouped by controller. "Page routes" render a View or redirect for browser navigation; "JSON endpoints" are meant to be called via fetch/AJAX…
Database Schema
Titan Command
Local Database Schema This documents the app's own local SQLite database (titan_command.db) — the state store for migration sessions, field mappings, ID mappings, and sync jobs. It is not the remote M…
Overview
Titan Command
Titan Command Internal ASP.NET Core 8 web app that migrates/syncs data from a legacy MySQL database (QDB, tblXxx-prefixed tables) into a redesigned destination MySQL schema (QDG). Migration-session st…
Changelog
DemonBets
Changelog Durable, notable changes to DemonBets. This page is seeded from recent commits on the dev branch; add new entries at the top as work ships. Recent (as of 2026-08-11, dev) Race-card cache byp…
Deployment
DemonBets
Deployment DemonBets deploys automatically to IIS as the site WSB-Web through GitHub Actions. Trigger .github/workflows/deploy.yml runs on every push to dev, and can also be started manually via workf…
Overview
DemonBets
DemonBets DemonBets is a single-page web frontend for horse-racing race cards and form. It is built as a Vite + React + TypeScript app and deployed to IIS as the site WSB-Web. It renders meeting race…
Quick Reference
GateKeeper
GateKeeper — Quick Reference Run it locally # Prereqs: .NET 8 SDK, MySQL 8.0.16+, Redis dotnet restore dotnet build # Load schema against a fresh database (see Known Issues — seed rows 101/205/310 wil…
API Reference
GateKeeper
GateKeeper — API Reference GateKeeper exposes exactly two HTTP surfaces, both hosted by GateKeeper.Api (Program.cs). It calls no external/outbound APIs itself — it is only ever a callee. See Architect…
Known Issues & Discrepancies
GateKeeper
GateKeeper — Known Issues & Discrepancies Found by comparing the running code against entitlement-system-design.md and the seed data. None block local development, but worth knowing before building on…
Architecture & Technical Reference
GateKeeper
GateKeeper — Architecture & Technical Reference Technical deep dive backing Overview. Reflects the code as it exists in the repository, not just the original design proposal — divergences from that pr…
Scraper & File Generator Process
Troyon Data
Scraper & File Generator Process How the core pipeline actually works, step by step: PunterScraper scrapes punters.com.au/racenet, writes Mongo + drops an S3 flag file; TroyenDataFilesGenerator polls…
User Guide
Troyon Data
Troyon Data — User Guide This is a day-to-day guide for people who actually operate the system — data-entry staff and whoever triages a failed scrape — not another architecture doc (see Overview, Troy…
TroyenDataHelpers API Reference
Troyon Data
TroyenDataHelpers API Reference TroyenDataHelpers is the internal, read/write admin API behind the TroyenDataWeb admin portal — meetings, races, horses, results, silks, comments, users, system prompts…
TroyenAPI Reference
Troyon Data
TroyenAPI Reference TroyenAPI is the customer/external-facing, read-only REST API over the Mongo-backed racing data (meetings, races, race cards, speed maps, stats). Source: TroyenAPI/Controllers/. Co…
User Guide
Race Day Dashboard
Audience Anyone running or operating the Race Day Dashboard on the hosting Windows machine -- setting up the login for the first time, starting/stopping the server day to day, and using the dashboard…
Changelog
Race Day Dashboard
10-11 Aug 2026 -- Templates split out of raceView.js Moved all CSS out of the JS template literal into public/styles.css, served statically by Express. Moved the dashboard and login pages' static HTML…
Overview
Race Day Dashboard
Purpose A single-page web dashboard for reviewing one date's race meetings at a glance: a grid of meeting x race number, colored/badged to surface data problems before race day (missing or duplicate j…
Overview
Troyen Beta
Troyen Beta — Racing Data Scrapers Troyen Beta is a monorepo of racing data scrapers. Three independent .NET console apps each pull race data from a different source, transform it into a standardized…
API Reference
QDBAuth
QDBAuth API Reference Full interactive docs: GET /api/docs/ (Swagger UI over apps/auth/static/auth/openapi.yaml). This page is the condensed version for quick lookup while integrating a consuming app.…
FormCrawler Changelog
FormCrawler
FormCrawler Changelog Document set version: 1.0.0 Created: 2026-08-07 Last updated: 2026-08-10 02:14:13 AEST (UTC+10:00) Maintenance rule: Keep Unreleased cumulative for the current document-set versi…