Compatibility System
The compatibility database turns ADL from documentation into a knowledge platform. Everything is static JSON plus React components โ no backend, no external services, fully GitHub Pages compatible.
Architectureโ
data/ # source of truth (edit these)
devices.json # Android devices
hardware.json # docks, monitors, storage, input, power
desktop-environments.json # XFCE, LXQt, KDE, GNOME, MATE, Cinnamon
linux-distributions.json # Ubuntu, Debian, Arch, Fedora, Alpine
android-versions.json # per-version support notes
compatibility-matrix.json # per-device capability columns
test-results.json # individual test reports
verified-configurations.json # full verified setups (Part 5 pages)
src/types/compatibility.ts # TypeScript interfaces for every schema
src/components/Compatibility/ # all components below
static/data/*.json # published copies (generated at build)
The build hook (npm run docs:index, run automatically before every build
and dev start) copies data/*.json into static/data/, so the database is
also served raw at /ADL/data/<file>.json โ the machine-readable interface
for tooling and future AI assistants, alongside /ADL/ai-metadata.json.
Data schemasโ
Every file is typed in src/types/compatibility.ts. The two vocabularies
everything shares:
- Support levels (
SupportLevel):fully-supported,supported,partial,experimental,broken,untested - Verification levels (
VerificationLevel):maintainer-verified,community-verified,experimental,needs-testing,deprecated
Any verified claim can carry VersionInfo: Android version, Linux version,
desktop version, documentation version, and verification date.
Honesty rule: never record a status above what was actually tested.
Manufacturer-spec claims stay at needs-testing.
Component referenceโ
All globally registered for MDX โ no imports needed in docs pages.
| Component | Use |
|---|---|
<CompatibilityMatrix /> | The searchable device matrix (search, manufacturer, Android, RAM, status filters) |
<DeviceCard id="..." /> / <DeviceCardGrid /> | One device / all devices from devices.json |
<HardwareEntryCard id="..." /> | One hardware item |
<HardwareDatabase category="input" /> | Searchable hardware list; omit category for chip filters |
<CompatibilityCard label status detail /> | One capability with a status badge |
<TestStatusBadge status="..." compact /> | Any support or verification level as a badge |
<VersionCard version={{...}} /> | Version-tracking block |
<VerifiedConfiguration id="..." /> | Full Part-5 configuration page body |
<HardwareRequirements ids={[...]} /> | Named hardware list for a configuration |
<DistroProfile id="ubuntu" /> | Full distribution page body |
<DesktopEnvProfile id="xfce" /> | Full desktop-environment page body |
<AndroidVersionList /> | All Android versions with statuses |
Adding a new deviceโ
- Add the device to
data/devices.json(see theDeviceinterface). - Add its row to
data/compatibility-matrix.jsonโ one status per column,untestedfor anything unknown. - Optional: add a test report to
data/test-results.json. - Optional: for a fully verified setup, add an entry to
data/verified-configurations.jsonand create a page from the device page template. - Run
npm run buildโ the matrix, cards, and static data files update automatically.
Adding new hardwareโ
Add an entry to data/hardware.json. Describe hardware classes by their
specs (e.g. "USB-C hub with HDMI + 45W PD") rather than store listings, and
use worksWith to reference tested device ids.
Verification workflowโ
- Community reports arrive as pull requests editing the JSON files (or as device-support issues that a maintainer transcribes).
- New claims enter as
community-verified(tested by the reporter) orneeds-testing(spec-based). - The maintainer promotes entries to
maintainer-verifiedafter reproducing them on reference hardware, filling inVersionInfo. - Anything that stops working is downgraded, never deleted โ history
stays in
test-results.json.
Contributor workflowโ
The reader-facing guide is Submit a test. It covers device tests, hardware tests, compatibility updates, screenshots, and benchmarks.
Frontmatter extensionsโ
Doc pages may declare compatibility metadata, which flows into the docs
index and ai-metadata.json:
device: "Samsung Galaxy S22+"
android_version: "Android 16"
linux_distribution: "Ubuntu 24.04"
desktop_environment: "XFCE 4.18"
verified: true
verification_date: "2026-07-10"
maintainer: "thebpandey"
community_verified: false
compatibility_level: "fully-supported"
Future extension pointsโ
/ADL/data/*.jsonโ the raw database, stable ids, versioned by git/ADL/ai-metadata.jsonโ page + command + compatibility metadata with aninterfacesmap documenting where everything lives- Adding a device/distro/DE requires zero component changes โ data only
- The matrix columns and filter vocabularies are single arrays, easy to extend when new capabilities matter (e.g. GPU acceleration)