XConsole is a personal dealership sales operating system that unifies the
existing dealership automation dashboard, DriveCentric AI extension, connector
jobs, and a Windows Local Agent. The canonical monorepo lives in
Uncagedz/XConsole on main; the integration history remains available in
Uncagedz/Xconsole-Dealership-Tool on feature/xconsole-unification.
Start with:
- System map — the whole system on one page: every box, what it does, and who it talks to. Start here.
- How it runs on Railway — the plain-English, ground-truth map of every deployed service and how one repo becomes several programs.
- Development setup
- Architecture
- Existing-system audit
- Migration plan
- Phase 1 status
- Railway deployment checklist
The legacy FastAPI/dashboard startup remains below as a compatibility path until its adapters are replaced. Browser session state, credentials, customer PII, and captured portal artifacts must never be committed.
Use the maintained pnpm entry points from the repository root:
pnpm dev:cloudThis starts the gateway, AI API, and unified dashboard. To connect the unified inventory page to the preserved live FastAPI synchronizer, follow the live inventory setup.
Optional one-shot Facebook live setup (driver + placeholder images):
.\scripts\setup-facebook-live.ps1Or run stack startup and setup together:
.\start-local-stack.ps1 -SetupFacebookLiveThis starts:
- Admin UI at
http://127.0.0.1:8100/admin - API at
http://127.0.0.1:8100/api - Sales Assistant UI at
http://127.0.0.1:8100/sales-assistant
If port 8100 (or sales port 4300) is already in use, the launcher now auto-picks the next free port and prints a warning with the final URLs.
The launcher also prints a LAN IP URL so you can open the UI from another machine on your network.
- Draft mode writes listing files under
runtime/facebook_posts/<VIN>_<timestamp>/facebook_listing.txt. - Live mode runs Selenium automation from
automation/facebook-marketplace-lister. - Live mode now enforces these preflight checks:
account_idmust exist inautomation/facebook-marketplace-lister/accounts.jsonand include a password- all provided image filenames must exist in
automation/facebook-marketplace-lister/images - ChromeDriver must exist in
automation/facebook-marketplace-lister/drivers(for examplechromedriver.exe)
- Check readiness via:
POST /api/facebook/bootstrapGET /api/facebook/live-requirementsGET /api/facebook/imagesPOST /api/facebook/images/import-from-vehiclePOST /api/facebook/images/relinkPOST /api/facebook/live-preflightPOST /api/facebook/prepare-live-postPOST /api/facebook/full-repairGET /api/facebook/images/suggest?vin=<VIN>POST /api/wire-everything- UI section: Live Posting Requirements
GET /api/stack/readinessreturns build/runtime readiness for admin + sales services.GET /api/sales-assistant/healthchecks the sales backend through FastAPI proxy.GET /api/sales-assistant/banksandGET /api/sales-assistant/banks/factorsreturn backend data via proxy.POST /api/sales-assistant/banks/reloadandPOST /api/sales-assistant/banks/factors/reloadtrigger backend refresh via proxy.GET /api/inventory/source-statusshows active inventory source and last live sync metadata.POST /api/inventory/sync-livefetches dealership inventory from the configured URL and stores live cache.GET /api/inventory/activereturns current active inventory items and source status.
The preserved FastAPI service defaults to the configured Taverna used, new, and lifted-trucks inventory pages. Records are unified by VIN without dropping richer photos, prices, condition data, or source tags. Override any source without changing code:
$env:DEALERSHIP_INVENTORY_URL = "https://your-dealership.com/used-vehicles/"
$env:DEALERSHIP_NEW_INVENTORY_URL = "https://your-dealership.com/new-vehicles/"
$env:DEALERSHIP_LIFTED_TRUCKS_URL = "https://your-dealership.com/lifted-trucks/"- The unified
/inventorypage shows the same live records, photos, prices, source freshness, and sync control through the authenticated gateway bridge.