diff --git a/README.md b/README.md index 2b7c0c9df..ae97af1be 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,58 @@ capabilities, five deployment methods, one shared library, one build. --- +## The 7 production maps + +**Seven maps DX uses today** — each one a plugin you can embed on its own, and all seven together in +the Research Gallery. + + + + + + + + + + + + + + +
Big Picture
Big Picture
the whole research dashboard: filters, map, charts, people groups
Simple Research
Simple Research
the research map with the people-groups grid, made for phones
Regions
Regions
every region and its countries, then a dashboard per region
UPG-100 List
UPG-100 List
prayer lists of 100 people groups, with posters to print
Prayer Progress
Prayer Progress
where prayer is happening, and where it is still needed
Cities with Internet
Cities with Internet
internet access where unreached people groups live
Gospel Resources
Gospel Resources
which people groups have scripture, film or audio — and which have nothing
Research Gallery
Research Gallery
all seven in one app — capability 5
+ +### Every capability ships every way + +| Capability | Example | iframe | Mobile app | JavaScript embed | WordPress / Disciple Tools | Desktop | +|---|---|:-:|:-:|:-:|:-:|:-:| +| **5 — app shell** | Research Gallery | ✅ | ✅ | ✅ | 🧪 | 🧪 | +| **4 — composite** | UPG-100 List | ✅ | ✅ | ✅ | 🧪 | 🧪 | +| **3 — multi-view** | research map | ✅ | ✅ | ✅ | 🧪 | 🧪 | +| **2 — presets** | Prayer Progress | ✅ | ✅ | ✅ | 🧪 | 🧪 | +| **1 — single element** | all people groups | ✅ | ✅ | ✅ | 🧪 | 🧪 | + +✅ works today · 🧪 proven, not yet in production. Every plugin builds into the same folder, and that folder is what all five methods ship — so a capability never limits where a plugin can go. + +
+How one build becomes five ways to ship — the "map cruncher" + +```text + map · map · map · map · map · map · map many maps, each once its own codebase + \ \ | | | / / + +----- plugin-designs/ ------+ one folder per plugin — the free zone + | + library/ (@map) shared, reusable pieces — the high bar + | + ONE build step + | + public/doxa-maps/ one drop-anywhere folder + manifest.json + / | \ \ iframe mobile JS embed WordPress desktop +``` + +
+ +--- + ## The 5 plugin capabilities A capability is **how much a plugin nests**, from one element (1) to an app of apps (5). Every @@ -429,14 +481,45 @@ The studio is a plugin like any other: `plugin-designs/plugin-studio/plugin-stud ## Repository layout ```text -plugin-designs/ YOUR maps — one folder per plugin, a free zone -library/ the SHARED toolkit (layouts, components, composables) — a high bar -public/doxa-maps/ the build output: the drop-anywhere folder + manifest.json -deployment/ mobile (Capacitor) · WordPress · desktop (Tauri) -internal/ the build and its checks -documentation/ tutorial · how-to · reference · architecture — start at documentation/README.md +doxa-maps/ +├── plugin-designs/ YOUR maps — one folder per plugin (the free zone) +│ ├── doxa-maps-spa/ the Research Gallery (capability 5) +│ ├── plugin-studio/ the Plugin Studio (capability 5) +│ ├── my-upg-100-list/ UPG-100 List (capability 4) +│ ├── doxa-simple-map/ Prayer Progress and its presets (capability 2) +│ ├── all-people-groups/ a single map (capability 1) +│ └── template-bundle/ copy this to start a new plugin +│ ├── template-map-a.vue the map itself +│ ├── index.js registers its HTML tag +│ ├── index.html a preview page +│ └── src/ private pieces only this plugin uses +├── library/ the SHARED toolkit, imported as @map (the high bar) +│ ├── layouts/ VerticalTabsLayout, StackLayout — how composites compose +│ ├── components/ legends, map controls, search, posters, detail panels +│ ├── composables/ map instance, data, layers, shared helpers +│ ├── colors/ styles/ colour strategies and the house style +│ ├── i18n/locales/ the 11 languages +│ └── data/ api/ lookup tables and data sources +├── public/doxa-maps/ the BUILD OUTPUT — the drop-anywhere folder + manifest.json +├── deployment/ mobile (Capacitor) · WordPress · desktop (Tauri) +├── internal/ the build and its checks +└── documentation/ tutorial · how-to · reference · architecture ``` +
+Where your code goes — a plugin, or the shared library? + +- **Write your app in `plugin-designs//`.** On the build step it becomes its own plugin in + the output folder — its own embeddable app. Nothing you do there can break anyone else's map. +- **Only put something in `library/` if it is genuinely reusable *and* parameterized** — built so + other maps can use it with their own settings. The library is shared by every map, so every edit + there can break every map: it is a high bar. Keep anything specific to one map inside that map's + own folder. +- The full contribution guide: [documentation/CONTRIBUTING.md](./documentation/CONTRIBUTING.md) · + every reusable piece you can import: [documentation/reference-library-index.md](./documentation/reference-library-index.md). + +
+ > **Maps should be open source, run everywhere, and multiply.** One build makes each map a > self-contained file for your site, your partners' sites and a phone. The Plugin Studio is where > you compose them into something bigger. diff --git a/documentation/readme-images/cap1-single-element.png b/documentation/readme-images/cap1-single-element.png index 1651fc8fe..a80ad94fd 100644 Binary files a/documentation/readme-images/cap1-single-element.png and b/documentation/readme-images/cap1-single-element.png differ diff --git a/documentation/readme-images/cap2-adoption.png b/documentation/readme-images/cap2-adoption.png index a8e994b07..9c2420ee3 100644 Binary files a/documentation/readme-images/cap2-adoption.png and b/documentation/readme-images/cap2-adoption.png differ diff --git a/documentation/readme-images/cap2-engagement.png b/documentation/readme-images/cap2-engagement.png index 2d7047d1b..808759e39 100644 Binary files a/documentation/readme-images/cap2-engagement.png and b/documentation/readme-images/cap2-engagement.png differ diff --git a/documentation/readme-images/cap2-prayer.png b/documentation/readme-images/cap2-prayer.png index 4b471d9b4..ba2a24dbb 100644 Binary files a/documentation/readme-images/cap2-prayer.png and b/documentation/readme-images/cap2-prayer.png differ diff --git a/documentation/readme-images/cap3-monolithic-research.png b/documentation/readme-images/cap3-monolithic-research.png index 9325d5897..6141e8c22 100644 Binary files a/documentation/readme-images/cap3-monolithic-research.png and b/documentation/readme-images/cap3-monolithic-research.png differ diff --git a/documentation/readme-images/cap5-doxa-maps-spa.png b/documentation/readme-images/cap5-doxa-maps-spa.png index 83e1e4675..297eac360 100644 Binary files a/documentation/readme-images/cap5-doxa-maps-spa.png and b/documentation/readme-images/cap5-doxa-maps-spa.png differ diff --git a/documentation/readme-images/cap5-plugin-studio.png b/documentation/readme-images/cap5-plugin-studio.png index ecba5e63c..ba50f88eb 100644 Binary files a/documentation/readme-images/cap5-plugin-studio.png and b/documentation/readme-images/cap5-plugin-studio.png differ diff --git a/documentation/readme-images/prod-big-picture.png b/documentation/readme-images/prod-big-picture.png new file mode 100644 index 000000000..5f4609477 Binary files /dev/null and b/documentation/readme-images/prod-big-picture.png differ diff --git a/documentation/readme-images/prod-cities-internet.png b/documentation/readme-images/prod-cities-internet.png new file mode 100644 index 000000000..8920d438b Binary files /dev/null and b/documentation/readme-images/prod-cities-internet.png differ diff --git a/documentation/readme-images/prod-gospel-resources.png b/documentation/readme-images/prod-gospel-resources.png new file mode 100644 index 000000000..52f620c54 Binary files /dev/null and b/documentation/readme-images/prod-gospel-resources.png differ diff --git a/documentation/readme-images/prod-regions.png b/documentation/readme-images/prod-regions.png new file mode 100644 index 000000000..e066a83fa Binary files /dev/null and b/documentation/readme-images/prod-regions.png differ diff --git a/documentation/readme-images/prod-simple-research.png b/documentation/readme-images/prod-simple-research.png new file mode 100644 index 000000000..89e3045f1 Binary files /dev/null and b/documentation/readme-images/prod-simple-research.png differ diff --git a/documentation/readme-images/shot-bundles.json b/documentation/readme-images/shot-bundles.json index 32aa1039e..adeb0a3cb 100644 --- a/documentation/readme-images/shot-bundles.json +++ b/documentation/readme-images/shot-bundles.json @@ -1,23 +1,23 @@ { "cap1-single-element": { "bundle": "all-people-groups", - "sha256": "312b3a0f64b0842b498ae8c0c88491a9225c353a60c0420e05ac18fa0333a0a5" + "sha256": "5f9c52ba3d64b0557562c0302311ec45922c62afa2c35c3ed9222e1b112b8ee0" }, "cap2-adoption": { "bundle": "doxa-simple-map", - "sha256": "95ab02edf30ab19b1637238bb50f580286daa2808fbcb43478dbb0c3d0115d95" + "sha256": "e86de756cd2da00970d29f01fa1d85c63b9573369ded1907461c060063771b2f" }, "cap2-engagement": { "bundle": "doxa-simple-map", - "sha256": "95ab02edf30ab19b1637238bb50f580286daa2808fbcb43478dbb0c3d0115d95" + "sha256": "e86de756cd2da00970d29f01fa1d85c63b9573369ded1907461c060063771b2f" }, "cap2-prayer": { "bundle": "doxa-simple-map", - "sha256": "95ab02edf30ab19b1637238bb50f580286daa2808fbcb43478dbb0c3d0115d95" + "sha256": "e86de756cd2da00970d29f01fa1d85c63b9573369ded1907461c060063771b2f" }, "cap3-monolithic-research": { "bundle": "doxa-research-map", - "sha256": "7e3637a635faf8223488a4bc21c1f308c5b3ea94fa6c80d5f1560a04ef7ec9cb" + "sha256": "e65c82492c8eea2eecefcec522367dddded890442a7a96f03e224b3128450e6f" }, "cap4-upg100-list": { "bundle": "my-upg-100-list", @@ -33,14 +33,34 @@ }, "cap5-doxa-maps-spa": { "bundle": "doxa-maps-spa", - "sha256": "e24edf74f5609549b8d83250ebef269f3d6a00423cd3ca28b9a86e23bfba8e91" + "sha256": "39d4d92d343740eb6ab9861897f4420010511149941a2414677a2ce7dd7afc65" }, "cap5-plugin-studio": { "bundle": "plugin-studio", - "sha256": "fee321fdfd05fc83567987c682f826f890cbf76722d9a94290335f2228b9dd61" + "sha256": "4d3910b06d55c7fccdba7102be4f9420a0e1368efd1695a6abaf12442b4fcda0" }, "deploy2-mobile-upg100": { "bundle": "my-upg-100-list", "sha256": "57dc358c76f736f5c1b01afe57b3f722e08a1620143ca7f72b2d83133b43f86d" + }, + "prod-big-picture": { + "bundle": "dashboard-plus-grid", + "sha256": "3c1fc9c4af52752e545365676d630e9dfee3a5cd67018ca5181d499304742f61" + }, + "prod-cities-internet": { + "bundle": "cities-internet", + "sha256": "6d7afee32e5d96007a9ec5582cf89f64697da6b9e0ff8e7712a27dcbb721513f" + }, + "prod-gospel-resources": { + "bundle": "gospel-resources", + "sha256": "02465fd9ec6101bc37b81960cfdf3dd3cc714cc6730bf8755c585e83f2cc81db" + }, + "prod-regions": { + "bundle": "regions-dashboard", + "sha256": "558dfe17b1ca477aa8d7acd8a75fb0db1fe4675633808fb68efc0a98617e8e77" + }, + "prod-simple-research": { + "bundle": "research-map-plus-grid", + "sha256": "458139bb4b1da0e79fefeb3c671b78d81da4ef832e411e54789915ca07007ee7" } } diff --git a/internal/readme-shots.mjs b/internal/readme-shots.mjs index 1955d4579..c7b10bc12 100644 --- a/internal/readme-shots.mjs +++ b/internal/readme-shots.mjs @@ -366,6 +366,15 @@ virtualPages.set('/__readme-iframe-host.html', ` await shot('deploy1-iframe', '/__readme-iframe-host.html', { vp: { width: 1000, height: 700 }, wait: 11000, countFrames: true, mapboxReferer: false }) +// ---- THE 7 PRODUCTION MAPS: one shot each, for the README's opening gallery ---- +// Each is the plugin's own standalone leaf page — the same element the Research Gallery nests. +// (UPG-100 List and Prayer Progress reuse cap4-upg100-mfe and cap2-prayer.) +await shot('prod-big-picture', '/doxa-maps/dashboard-plus-grid/dashboard-plus-grid/index.html', { wait: 10000, minElements: 300 }) +await shot('prod-simple-research', '/doxa-maps/research-map-plus-grid/research-map-plus-grid/index.html', { wait: 10000, minElements: 200 }) +await shot('prod-regions', '/doxa-maps/regions-dashboard/regions-mfe/index.html', { wait: 10000, minElements: 100 }) +await shot('prod-cities-internet', '/doxa-maps/cities-internet/connectivity-map/index.html', { wait: 10000, minElements: 60 }) +await shot('prod-gospel-resources', '/doxa-maps/gospel-resources/resources-map/index.html', { wait: 10000, minElements: 100 }) + // ---- DEPLOY2: mobile — the UPG-100 list as the phone app ---- // The mobile example is UPG-100 (ruled 2026-09-24; Simple Research was retired as the example because // it was never built for phones). Shot once its owner marked the phone layout ready at 88a566f: