Skip to main content

CLI-first FileMaker DDR extraction and analysis toolkit

Project description

ddr-docs

ddr-docs is a CLI-first Python toolkit for turning FileMaker DDR XML into structured docs, JSON artifacts, and analysis outputs that work well for humans, agents, and downstream tooling.

FM2Web still includes a desktop/Tauri app, but the Python package and CLI are the primary interface in this repo.

Install

Recommended: pipx

Install the CLI in its own environment:

pipx install ddr-docs

If you want the analyzer-powered commands too, install the analyzer extra:

pipx install 'ddr-docs[analyzer]'

Standard pip

Inside a virtualenv:

python -m pip install ddr-docs
# or, with analyzer commands
python -m pip install 'ddr-docs[analyzer]'

From a local checkout

python -m pip install -e .
# or
python -m pip install -e '.[analyzer,dev]'

Quick start

1) Generate extracted docs from a DDR XML file

ddr-docs generate /path/to/file.ddr.xml -o ./out/ddr-run

That produces a run directory with JSON, Markdown, diagrams, reports, and a manifest.

2) Run the agent-friendly end-to-end analysis flow

ddr-docs analyze full-analysis \
  --input /path/to/file.ddr.xml \
  --output-dir ./out/full-analysis \
  --sqlite-path ./out/full-analysis/fm2web.sqlite3

This runs extraction, ingests into SQLite, then writes analysis JSON under analysis/, including:

  • analysis/user_flows_entry_points.json
  • analysis/user_flows_journeys/*.json
  • analysis/cruft_summary.json
  • analysis/feature_clusters.json
  • analysis/analysis_manifest.json

CLI overview

ddr-docs --help
ddr-docs generate --help
ddr-docs analyze --help
ddr-docs analyze full-analysis --help

ddr-docs generate

Core extraction pipeline.

ddr-docs generate /path/to/file.ddr.xml \
  --output ./out/run \
  --persist-sqlite \
  --sqlite-path ./out/run/fm2web.sqlite3

Useful options:

  • --output/-o, output run directory
  • --domain, comma-separated extraction domains
  • --start-from, restart from a later pipeline stage
  • --stop-after, stop at a specific stage
  • --persist-sqlite, write extracted artifacts into SQLite
  • --sqlite-path, choose the SQLite path
  • --no-index, skip search index generation
  • --strict, fail on validation/parsing issues

ddr-docs analyze full-analysis

This is the highest-leverage command when you want one run that leaves behind structured artifacts for review, automation, or agent workflows.

ddr-docs analyze full-analysis \
  --input /path/to/file.ddr.xml \
  --output-dir ./out/full-analysis \
  --sqlite-path ./out/full-analysis/fm2web.sqlite3 \
  --journey-depth 6

Behavior:

  1. runs the extraction pipeline
  2. ingests the run into SQLite
  3. generates journey/entry-point analysis
  4. generates cruft analysis
  5. generates feature-cluster analysis
  6. writes an analysis manifest summarizing outputs

Key options:

  • --input, DDR XML source file
  • --output-dir/-o, target run directory
  • --sqlite-path, explicit SQLite database path
  • --embeddings/--no-embeddings, control embedding generation
  • --journey-depth, traversal depth for journey mapping
  • --verbose, print step-by-step progress

Seeding one or more layout entry points

By default, full-analysis auto-detects entry points from menu scripts and layouts.

If you already know the layouts you want to analyze, provide one or more --entry-point-layout flags:

ddr-docs analyze full-analysis \
  --input /path/to/file.ddr.xml \
  --output-dir ./out/mobile-analysis \
  --entry-point-layout 'Home iPhone' \
  --entry-point-layout 'Settings iPhone'

Repeatable flags are the preferred interface.

For backward compatibility, comma-separated values still work too:

ddr-docs analyze full-analysis \
  --input /path/to/file.ddr.xml \
  --output-dir ./out/mobile-analysis \
  --entry-point-layout 'Home iPhone, Settings iPhone'

When --entry-point-layout is provided, those requested layouts override auto-detected journey entry points. Matching layouts are recorded in analysis/user_flows_entry_points.json, and journeys are generated for the resolved layouts.

Other analysis commands

List analyzer surfaces:

ddr-docs analyze --help

Examples:

ddr-docs analyze journeys --sqlite-path ./out/run/fm2web.sqlite3
ddr-docs analyze journeys --sqlite-path ./out/run/fm2web.sqlite3 --from 'Home'
ddr-docs analyze cruft --extracted-docs ./out/run/json
ddr-docs analyze features --sqlite-path ./out/run/fm2web.sqlite3
ddr-docs analyze flows --sqlite-path ./out/run/fm2web.sqlite3 --field 'Contacts::Email'

Output structure

Typical run output includes:

  • json/, canonical extraction artifacts
  • docs/, rendered Markdown docs
  • diagrams/, relationship diagrams
  • index/, search index artifacts
  • reports/, coverage and warning reports
  • manifest.json, run metadata
  • analysis/, higher-level analysis JSON from full-analysis

Desktop app, still available

The repo also contains a Tauri desktop app in desktop/ for local/offline usage. That is now secondary to the Python package and CLI.

If you specifically need the desktop app, see:

  • desktop/
  • desktop/BACKEND_BUNDLE.md

Development

Run focused tests:

python -m pytest tests/test_cli_full_analysis.py tests/test_cli_optional_deps.py

Build package artifacts locally:

python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*

Repository layout

  • ddr_docs/, CLI and extraction pipeline
  • analyzer/, SQLite-backed analysis services and API
  • desktop/, optional Tauri desktop app
  • ui/, Streamlit UI
  • tests/, automated tests

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddr_docs-0.2.0.tar.gz (353.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ddr_docs-0.2.0-py3-none-any.whl (380.1 kB view details)

Uploaded Python 3

File details

Details for the file ddr_docs-0.2.0.tar.gz.

File metadata

  • Download URL: ddr_docs-0.2.0.tar.gz
  • Upload date:
  • Size: 353.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for ddr_docs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ce379a0cb1ef79552ac9664f99dba5a1e6be4791eb050e6272ac1a675b2010d2
MD5 127e133837b4723c0b887124ba3b8b06
BLAKE2b-256 5994b5e83b467979ad4505c119291c08e83dc2a5ab8af8d3a44a33d76fa60ad5

See more details on using hashes here.

File details

Details for the file ddr_docs-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ddr_docs-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 380.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for ddr_docs-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d43b047ffba809ac04a3ca7b89798cab88eeb4e1d859faa54865cd84f5dfa8fa
MD5 f9645a06750cfd61096569dad1a511a6
BLAKE2b-256 87dbb4874f9310c2acaaa3eefe2800faf19a1c2c20d0a7d0927a9e7115897287

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page