LIME Documentation
LIME is a self-hosted accessibility scanner powered by axe-core, Chromium, PostgreSQL, and a NextJS dashboard. These docs cover local development, architecture, production deployment, updates, and release operations.
Start Here
- Local Development Setup: Run LIME locally with Docker or native processes, including environment variables and common commands.
- Docker & Release Pipeline: Local Docker workflow, production build targets, GHCR release publishing, and release bundle format.
- Deploy to Fly.io: Two-app Fly setup with private networking, managed/external Postgres, screenshot storage, and rolling updates.
- Deploy with Docker: Recommended Docker path using published GHCR images.
- Deploy on Linux without Docker: Native systemd install for operators who cannot run Docker.
- Updating LIME: Update commands per target, backups, rollback notes, and the sidebar update notice.
- Docs Site: Static docs architecture, screenshot refresh pipeline, search, GitHub Pages, and handoff checklist.
- Product Roadmap:
v1.0optimization and public-release plan, plus MCP hardening and future integration work. - MCP Integration: Current read-only MCP endpoint, AI client configuration, smoke tests, and security requirements.
Architecture
- Shopkeeper (Main Backend & Orchestrator): The core Go application that manages the entire lifecycle of a scan.
- Profiler: Module responsible for recursively extracting URLs from a sitemap (including sitemap indexes).
- Juicer: Module responsible for scanning individual URLs using axe-core, capturing screenshots, and processing pages in a controlled, multi-threaded manner.
- Sweetner: Module responsible for refining, batching, and aggregating scan results to prevent duplicate issue reporting.
- User Interface (NextJS): The frontend application residing in the
limefolder, interacting with the Shopkeeper API.
Reference
- Database Architecture: Details regarding the chosen database schema, technologies (PostgreSQL, Drizzle), and the Go backend DB strategy.
- Performance And Caching Strategy: PostgreSQL-first optimization plan for large scans and reports.
- Docs Site: How the public docs site is built, searched, screenshotted, and deployed.
- MCP Integration: Read-only MCP transport, authentication, client configuration, and capability model.
Operational notes for scan lifecycle behavior are documented primarily in:
docs/architecture/shopkeeper.mdfor backend ownership, deletion/rescan rules, and restart recoverydocs/architecture/ui.mdfor polling and page-navigation behaviordocs/setup.mdfor runtime and debugging commands
ACT enrichment notes are documented primarily in:
docs/architecture/shopkeeper.mdfor the shared catalog, resolver behavior, and API enrichment modeldocs/architecture/sweetner.mdfor how Sweetner's canonical axe rule IDs feed ACT lookups laterdocs/architecture/ui.mdfor where ACT guidance appears in the interfacedocs/setup.mdfor ACT catalog refresh and runtime path resolution
Release and production build notes are documented primarily in:
docs/deployment/docker.mdfor GHCR publishing, release bundles, and production Docker usagedocs/setup.mdformake build,make build-docker, native local env expectations, and release runtime env requirementsREADME.mdfor the quick-start release workflow
Docs-site notes are documented primarily in:
docs/docs-site.mdfor static export behavior, content sources, search, screenshot refresh, GitHub Pages, and handoff rulesdocs-site/content/product-docs.tsfor curated user/developer docs shown on the public sitescripts/docs-refresh.shfor isolated docs-demo scan and screenshot generation
Performance and v1.0 optimization notes are documented primarily in:
docs/performance.mdfor the PostgreSQL-first cache/read-model strategydocs/roadmap.mdfor milestone sequencing and exit criteria
MCP integration notes are documented primarily in:
docs-site/content/product-docs.tsfor the user-facing/docs/user/mcp/AI-tool setup guidedocs/mcp.mdfor transport, authentication, AI client connection examples, and read-only capabilitiesdocs/roadmap.mdfor MCP hardening and future integration milestones
Runtime proxy notes are documented primarily in:
docs/architecture/ui.mdfor the same-origin/api/...proxy behavior and screenshot delivery modeldocs/deployment/docker.mdforSHOPKEEPER_URL, external-DB release usage, and reverse-proxy deployment behavior
Guidelines For Contributing
- Read
../CONTRIBUTING.mdbefore opening a pull request. - Ensure new features, deployment changes, and schema changes are documented before release.
- Keep
docs/index.mdas the map of the documentation set.