Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01e2b4df39 | ||
|
|
5bc1263be0 | ||
|
|
ecc234234e | ||
|
|
59b4075113 | ||
|
|
6e1503d31b | ||
|
|
ea2d1e889b | ||
|
|
6b487643b3 | ||
|
|
f004e14f36 | ||
|
|
c2665624e3 | ||
|
|
0af096a285 | ||
|
|
70ffea0e16 | ||
|
|
b3e3594571 |
No files matched your search
@@ -27,7 +27,7 @@ After publication, verify the exact commit’s Actions task and deployed page bo
|
|||||||
|
|
||||||
## Sections and diagrams
|
## Sections and diagrams
|
||||||
|
|
||||||
Top-level sections are Organization, Strategy, and Contribution, each with an independent sidebar. The first Organization page is Structure and contains an explicitly illustrative organization chart, not confirmed Eldorado reporting lines.
|
Top-level sections are Organization, Strategy, and Contribution, each with an independent sidebar. The first Organization page is Structure. It presents the organizational operating model: leadership, departments, teams, responsibilities and cross-functional delivery. Research and source excerpts remain under `research/organization/`, outside the published documentation.
|
||||||
|
|
||||||
Archify 3.0.1 is vendored under `vendor/archify/` from commit `d5a1333d7447c866a765adac7d4d062f2f02e4d2`. MIT and third-party notices are preserved. `diagrams/` holds editable JSON; `pnpm diagrams:build` validates and generates local standalone viewers before every site build. The iframe is sandboxed without same-origin permission. See `docs/contribution/diagrams.md` for capability analysis, authoring, boundaries, and upgrade procedure.
|
Archify 3.0.1 is vendored under `vendor/archify/` from commit `d5a1333d7447c866a765adac7d4d062f2f02e4d2`. MIT and third-party notices are preserved. `diagrams/` holds editable JSON; `pnpm diagrams:build` validates and generates local standalone viewers before every site build. The iframe is sandboxed without same-origin permission. See `docs/contribution/diagrams.md` for capability analysis, authoring, boundaries, and upgrade procedure.
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,230 @@
|
|||||||
|
{
|
||||||
|
"schema_version": 1,
|
||||||
|
"diagram_type": "architecture",
|
||||||
|
"meta": {
|
||||||
|
"title": "Eldorado leadership and delivery structure",
|
||||||
|
"output": "static/diagrams/organization-reporting/index.html",
|
||||||
|
"quality_profile": "showcase",
|
||||||
|
"legend": {
|
||||||
|
"entries": {
|
||||||
|
"backend": {
|
||||||
|
"label": "Leadership / department"
|
||||||
|
},
|
||||||
|
"frontend": {
|
||||||
|
"label": "Role / delivery team"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": [
|
||||||
|
{
|
||||||
|
"id": "cto",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "CTO",
|
||||||
|
"sublabel": "Technology direction",
|
||||||
|
"pos": [
|
||||||
|
40,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "head-engineering",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Head of Engineering",
|
||||||
|
"sublabel": "Engineering leadership",
|
||||||
|
"pos": [
|
||||||
|
400,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "group-em",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Group Eng. Manager",
|
||||||
|
"sublabel": "Engineering group leadership",
|
||||||
|
"pos": [
|
||||||
|
760,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "em",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Engineering Manager",
|
||||||
|
"sublabel": "Team leadership and delivery",
|
||||||
|
"pos": [
|
||||||
|
1120,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "engineers",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Software engineers",
|
||||||
|
"sublabel": "Product Engineering team",
|
||||||
|
"pos": [
|
||||||
|
1480,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ai-architect",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "AI Architect",
|
||||||
|
"sublabel": "AI enablement across engineering",
|
||||||
|
"pos": [
|
||||||
|
40,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "coo",
|
||||||
|
"type": "backend",
|
||||||
|
"label": "COO",
|
||||||
|
"sublabel": "Lukas Deksnys",
|
||||||
|
"pos": [
|
||||||
|
400,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ops-qa",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "QA Specialist (Ops)",
|
||||||
|
"sublabel": "Independent operational quality",
|
||||||
|
"pos": [
|
||||||
|
760,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmo",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "CMO",
|
||||||
|
"sublabel": "Marketing leadership",
|
||||||
|
"pos": [
|
||||||
|
1120,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "brand-lead",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Brand Team Lead",
|
||||||
|
"sublabel": "Brand and community",
|
||||||
|
"pos": [
|
||||||
|
1480,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
240,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": [
|
||||||
|
{
|
||||||
|
"id": "cto-head-engineering",
|
||||||
|
"from": "cto",
|
||||||
|
"to": "head-engineering",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "head-engineering-group-em",
|
||||||
|
"from": "head-engineering",
|
||||||
|
"to": "group-em",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "group-em-em",
|
||||||
|
"from": "group-em",
|
||||||
|
"to": "em",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "em-engineers",
|
||||||
|
"from": "em",
|
||||||
|
"to": "engineers",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cto-ai-architect",
|
||||||
|
"from": "cto",
|
||||||
|
"to": "ai-architect",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "coo-ops-qa",
|
||||||
|
"from": "coo",
|
||||||
|
"to": "ops-qa",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmo-brand-lead",
|
||||||
|
"from": "cmo",
|
||||||
|
"to": "brand-lead",
|
||||||
|
"label": "Leads",
|
||||||
|
"variant": "default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"dot": "cyan",
|
||||||
|
"title": "Leadership and delivery",
|
||||||
|
"items": [
|
||||||
|
"Arrows run from leader to role or team.",
|
||||||
|
"Functional leaders develop people, standards and delivery capability."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "amber",
|
||||||
|
"title": "Interdepartmental collaboration",
|
||||||
|
"items": [
|
||||||
|
"Product Owners, Designers and Tech Leads align on product outcomes.",
|
||||||
|
"Data & AI enables AI adoption across Technology."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -2,22 +2,32 @@
|
|||||||
"schema_version": 1,
|
"schema_version": 1,
|
||||||
"diagram_type": "architecture",
|
"diagram_type": "architecture",
|
||||||
"meta": {
|
"meta": {
|
||||||
"title": "Illustrative organization structure",
|
"title": "Eldorado organization structure",
|
||||||
"output": "static/diagrams/organization-structure/index.html",
|
"output": "static/diagrams/organization-structure/index.html",
|
||||||
"quality_profile": "showcase"
|
"quality_profile": "showcase",
|
||||||
|
"legend": {
|
||||||
|
"entries": {
|
||||||
|
"backend": {
|
||||||
|
"label": "Leadership / department"
|
||||||
|
},
|
||||||
|
"frontend": {
|
||||||
|
"label": "Role / delivery team"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
"id": "leadership",
|
"id": "management",
|
||||||
"type": "backend",
|
"type": "backend",
|
||||||
"label": "Example leadership",
|
"label": "Management",
|
||||||
"sublabel": "Illustrative only",
|
"sublabel": "CEO / COO",
|
||||||
"pos": [
|
"pos": [
|
||||||
320,
|
820,
|
||||||
40
|
40
|
||||||
],
|
],
|
||||||
"size": [
|
"size": [
|
||||||
200,
|
320,
|
||||||
80
|
80
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -25,27 +35,27 @@
|
|||||||
"id": "product",
|
"id": "product",
|
||||||
"type": "backend",
|
"type": "backend",
|
||||||
"label": "Product",
|
"label": "Product",
|
||||||
"sublabel": "Example function",
|
"sublabel": "Experience and product outcomes",
|
||||||
"pos": [
|
"pos": [
|
||||||
40,
|
40,
|
||||||
260
|
280
|
||||||
],
|
],
|
||||||
"size": [
|
"size": [
|
||||||
200,
|
280,
|
||||||
80
|
80
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "engineering",
|
"id": "technology",
|
||||||
"type": "backend",
|
"type": "backend",
|
||||||
"label": "Engineering",
|
"label": "Technology",
|
||||||
"sublabel": "Example function",
|
"sublabel": "Engineering and platform",
|
||||||
"pos": [
|
"pos": [
|
||||||
320,
|
360,
|
||||||
260
|
280
|
||||||
],
|
],
|
||||||
"size": [
|
"size": [
|
||||||
200,
|
280,
|
||||||
80
|
80
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -53,41 +63,375 @@
|
|||||||
"id": "operations",
|
"id": "operations",
|
||||||
"type": "backend",
|
"type": "backend",
|
||||||
"label": "Operations",
|
"label": "Operations",
|
||||||
"sublabel": "Example function",
|
"sublabel": "Service, resolution and trust",
|
||||||
"pos": [
|
"pos": [
|
||||||
600,
|
680,
|
||||||
260
|
280
|
||||||
],
|
],
|
||||||
"size": [
|
"size": [
|
||||||
200,
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "marketing",
|
||||||
|
"type": "backend",
|
||||||
|
"label": "Marketing",
|
||||||
|
"sublabel": "Brand and customer growth",
|
||||||
|
"pos": [
|
||||||
|
1000,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "finance",
|
||||||
|
"type": "backend",
|
||||||
|
"label": "Finance & Accounting",
|
||||||
|
"sublabel": "Financial performance and controls",
|
||||||
|
"pos": [
|
||||||
|
1320,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "people",
|
||||||
|
"type": "backend",
|
||||||
|
"label": "HR & Administration",
|
||||||
|
"sublabel": "People and workplace",
|
||||||
|
"pos": [
|
||||||
|
1640,
|
||||||
|
280
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "product-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Product Management",
|
||||||
|
"sublabel": "Strategy, priorities and outcomes",
|
||||||
|
"pos": [
|
||||||
|
40,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "product-team-2",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Product Design",
|
||||||
|
"sublabel": "Research and experience design",
|
||||||
|
"pos": [
|
||||||
|
40,
|
||||||
|
620
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Product Engineering",
|
||||||
|
"sublabel": "Marketplace software delivery",
|
||||||
|
"pos": [
|
||||||
|
360,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-team-2",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Platform & IT",
|
||||||
|
"sublabel": "Reliability and internal systems",
|
||||||
|
"pos": [
|
||||||
|
360,
|
||||||
|
620
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-team-3",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Architecture & Security",
|
||||||
|
"sublabel": "Technical standards and protection",
|
||||||
|
"pos": [
|
||||||
|
360,
|
||||||
|
760
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-team-4",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Quality Engineering",
|
||||||
|
"sublabel": "Testing and release quality",
|
||||||
|
"pos": [
|
||||||
|
360,
|
||||||
|
900
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-team-5",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Data & AI",
|
||||||
|
"sublabel": "Analytics, ML and AI enablement",
|
||||||
|
"pos": [
|
||||||
|
360,
|
||||||
|
1040
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "operations-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Operations Squad",
|
||||||
|
"sublabel": "Service, resolution, risk and quality",
|
||||||
|
"pos": [
|
||||||
|
680,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "marketing-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Marketing Squad",
|
||||||
|
"sublabel": "Brand, acquisition and retention",
|
||||||
|
"pos": [
|
||||||
|
1000,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "finance-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "Finance & Accounting Squad",
|
||||||
|
"sublabel": "Planning, controls and payments",
|
||||||
|
"pos": [
|
||||||
|
1320,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "people-team-1",
|
||||||
|
"type": "frontend",
|
||||||
|
"label": "People & Administration Squad",
|
||||||
|
"sublabel": "Talent, people and workplace",
|
||||||
|
"pos": [
|
||||||
|
1640,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
280,
|
||||||
80
|
80
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"connections": [
|
"connections": [
|
||||||
{
|
{
|
||||||
"id": "leadership-product",
|
"id": "management-product",
|
||||||
"from": "leadership",
|
"from": "management",
|
||||||
"to": "product"
|
"to": "product",
|
||||||
|
"variant": "default"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "leadership-engineering",
|
"id": "management-technology",
|
||||||
"from": "leadership",
|
"from": "management",
|
||||||
"to": "engineering"
|
"to": "technology",
|
||||||
|
"variant": "default"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "leadership-operations",
|
"id": "management-operations",
|
||||||
"from": "leadership",
|
"from": "management",
|
||||||
"to": "operations"
|
"to": "operations",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "management-marketing",
|
||||||
|
"from": "management",
|
||||||
|
"to": "marketing",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "management-finance",
|
||||||
|
"from": "management",
|
||||||
|
"to": "finance",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "management-people",
|
||||||
|
"from": "management",
|
||||||
|
"to": "people",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "product-1",
|
||||||
|
"from": "product",
|
||||||
|
"to": "product-team-1",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "product-2",
|
||||||
|
"from": "product",
|
||||||
|
"to": "product-team-2",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-1",
|
||||||
|
"from": "technology",
|
||||||
|
"to": "technology-team-1",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-2",
|
||||||
|
"from": "technology",
|
||||||
|
"to": "technology-team-2",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-3",
|
||||||
|
"from": "technology",
|
||||||
|
"to": "technology-team-3",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-4",
|
||||||
|
"from": "technology",
|
||||||
|
"to": "technology-team-4",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "technology-5",
|
||||||
|
"from": "technology",
|
||||||
|
"to": "technology-team-5",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "operations-1",
|
||||||
|
"from": "operations",
|
||||||
|
"to": "operations-team-1",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "marketing-1",
|
||||||
|
"from": "marketing",
|
||||||
|
"to": "marketing-team-1",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "finance-1",
|
||||||
|
"from": "finance",
|
||||||
|
"to": "finance-team-1",
|
||||||
|
"variant": "default"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "people-1",
|
||||||
|
"from": "people",
|
||||||
|
"to": "people-team-1",
|
||||||
|
"variant": "default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"cards": [
|
"cards": [
|
||||||
{
|
{
|
||||||
"dot": "amber",
|
"dot": "cyan",
|
||||||
"title": "Test diagram \u2014 not a confirmed structure",
|
"title": "Product",
|
||||||
"items": [
|
"items": [
|
||||||
"All roles and relationships are illustrative.",
|
"Product Management",
|
||||||
"Actual Eldorado teams and reporting lines remain to be defined."
|
"Product Design"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "amber",
|
||||||
|
"title": "Technology",
|
||||||
|
"items": [
|
||||||
|
"Product Engineering",
|
||||||
|
"Platform & IT",
|
||||||
|
"Architecture & Security",
|
||||||
|
"Quality Engineering",
|
||||||
|
"Data & AI"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "cyan",
|
||||||
|
"title": "Operations",
|
||||||
|
"items": [
|
||||||
|
"Operations Squad",
|
||||||
|
"Customer Support; Trust & Resolution",
|
||||||
|
"Risk & Fraud",
|
||||||
|
"Operational Quality"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "amber",
|
||||||
|
"title": "Marketing",
|
||||||
|
"items": [
|
||||||
|
"Marketing Squad",
|
||||||
|
"Brand & Community; Creative; SEO",
|
||||||
|
"PPC & Affiliate; Influencer",
|
||||||
|
"CRM"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "cyan",
|
||||||
|
"title": "Finance & Accounting",
|
||||||
|
"items": [
|
||||||
|
"Finance & Accounting Squad",
|
||||||
|
"Financial Planning & Analysis",
|
||||||
|
"Accounting, Tax & Controls",
|
||||||
|
"Treasury & Payment Operations"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dot": "amber",
|
||||||
|
"title": "HR & Administration",
|
||||||
|
"items": [
|
||||||
|
"People & Administration Squad",
|
||||||
|
"Talent Acquisition",
|
||||||
|
"People Operations",
|
||||||
|
"Office & Administration"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -9,13 +9,13 @@ description: Author typed JSON diagrams and embed their local interactive viewer
|
|||||||
|
|
||||||
| Diagram type | Intended use |
|
| Diagram type | Intended use |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Architecture | Components, boundaries and relationships; also suitable for this illustrative structure test |
|
| Architecture | Components, boundaries and relationships; also used for the organization structure views |
|
||||||
| Workflow | Processes, branches and approval gates |
|
| Workflow | Processes, branches and approval gates |
|
||||||
| Sequence | Participants and ordered messages |
|
| Sequence | Participants and ordered messages |
|
||||||
| Dataflow | Sources, processing and destinations |
|
| Dataflow | Sources, processing and destinations |
|
||||||
| Lifecycle | States and transitions |
|
| Lifecycle | States and transitions |
|
||||||
|
|
||||||
The standalone viewer provides pan/zoom, node inspection, search/focus, relationship tracing, light/dark themes, and an export menu. Motion is opt-in. The Organization example exercises architecture mode; other diagram types use the same build interface but do not yet have portal-specific examples. Browser-dependent exports such as video are not acceptance-tested by this integration.
|
The standalone viewer provides pan/zoom, node inspection, search/focus, relationship tracing, light/dark themes, and an export menu. Motion is opt-in. The Organization views exercise architecture mode; other diagram types use the same build interface but do not yet have portal-specific examples. Browser-dependent exports such as video are not acceptance-tested by this integration.
|
||||||
|
|
||||||
## Author a diagram
|
## Author a diagram
|
||||||
|
|
||||||
@@ -34,10 +34,10 @@ pnpm build
|
|||||||
```mdx
|
```mdx
|
||||||
import ArchifyDiagram from '@site/src/components/ArchifyDiagram';
|
import ArchifyDiagram from '@site/src/components/ArchifyDiagram';
|
||||||
|
|
||||||
<ArchifyDiagram name="organization-structure" title="Illustrative organization structure" />
|
<ArchifyDiagram name="organization-structure" title="Eldorado organization structure" />
|
||||||
```
|
```
|
||||||
|
|
||||||
Supply a text alternative below each diagram. The wrapper uses a local, base-path-aware iframe with a descriptive title, scripts and downloads enabled, and no same-origin or parent-navigation permissions. A full-viewer link provides a wider canvas in a new tab; that direct page is not iframe-sandboxed. Only publish reviewed, trusted diagrams, and do not describe iframe isolation as protection for the standalone route. Generated output is ignored by Git and rebuilt in CI.
|
Supply a text alternative below each diagram. The wrapper uses a local, base-path-aware iframe with a descriptive title, scripts and downloads enabled, and no same-origin or parent-navigation permissions. The Open full viewer button expands the diagram in a full-screen modal on the current page, with the same iframe sandbox. Close it with the Close button or Escape; focus returns to the opener. It does not open a new tab. The separate standalone HTML asset remains directly addressable and is not itself iframe-sandboxed, so publish only reviewed, trusted diagrams. Generated output is ignored by Git and rebuilt in CI.
|
||||||
|
|
||||||
## Integration boundaries
|
## Integration boundaries
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,137 @@
|
|||||||
---
|
---
|
||||||
title: Structure
|
title: Structure
|
||||||
description: Explore an illustrative organization diagram with the Archify viewer.
|
description: Eldorado’s organizational operating model, departments, teams and responsibilities.
|
||||||
slug: /structure
|
|
||||||
---
|
---
|
||||||
|
|
||||||
import ArchifyDiagram from '@site/src/components/ArchifyDiagram';
|
import ArchifyDiagram from '@site/src/components/ArchifyDiagram';
|
||||||
|
|
||||||
:::note Illustrative integration example
|
This operating model organizes Eldorado around six departments: **Product, Technology, Operations, Marketing, Finance & Accounting, and HR & Administration**. Leadership aligns their priorities around marketplace growth, customer trust and efficient delivery.
|
||||||
This is **not Eldorado’s confirmed organization chart**. The roles and relationships below are test data demonstrating the diagram capability. Actual teams, reporting lines, and AI responsibilities will be defined separately.
|
|
||||||
:::
|
|
||||||
|
|
||||||
<ArchifyDiagram name="organization-structure" title="Illustrative organization structure" />
|
## Leadership
|
||||||
|
|
||||||
Select a node to inspect it. Use the viewer’s search, zoom, theme, and export controls, or open the full viewer for more space.
|
| Role | Leadership | Responsibility |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Chief Executive Officer | Vladas Jurkevičius | Company direction, business performance, strategic priorities and executive alignment. |
|
||||||
|
| Chief Operating Officer | Lukas Deksnys | Marketplace operations, customer service, resolution quality and operational performance. |
|
||||||
|
|
||||||
## Text alternative
|
Functional leaders translate company priorities into departmental plans. Team leads own execution, people development and service quality within their teams.
|
||||||
|
|
||||||
The example connects **Example leadership** to three sample functions: **Product**, **Engineering**, and **Operations**. These links demonstrate structure; they do not assert real reporting relationships at Eldorado.
|
## Organization overview
|
||||||
|
|
||||||
|
<ArchifyDiagram name="organization-structure" title="Eldorado organization structure" />
|
||||||
|
|
||||||
|
**Management coordinates the six departments.** Each department has a clear business responsibility and a set of teams that deliver it.
|
||||||
|
|
||||||
|
## Departments and teams
|
||||||
|
|
||||||
|
Product has **two teams** and Technology has **five teams**. Operations, Marketing, Finance & Accounting, and HR & Administration each have **one squad** covering their departmental workstreams. Each team belongs to one department, with its own leadership and responsibilities. The departments collaborate on delivery without sharing team ownership.
|
||||||
|
|
||||||
|
### Product
|
||||||
|
|
||||||
|
**Purpose:** improve the buyer and seller experience and turn marketplace opportunities into valuable product capabilities.
|
||||||
|
|
||||||
|
| Team | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Product Management | Product strategy, roadmaps, priorities and outcome measurement across discovery, categories, orders, seller tools, payments and operational workflows. |
|
||||||
|
| Product Design | User research, interaction design, design consistency and accessible buyer and seller experiences. |
|
||||||
|
|
||||||
|
Product Management owns what to improve and why. Product Design shapes the experience. Both work with Technology teams while remaining within Product.
|
||||||
|
|
||||||
|
### Technology
|
||||||
|
|
||||||
|
**Purpose:** build and operate a secure, reliable marketplace and improve the effectiveness of engineering.
|
||||||
|
|
||||||
|
| Team | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Product Engineering | Build and maintain marketplace capabilities, including search, orders, seller tools, checkout, wallet and operational tooling. |
|
||||||
|
| Platform & IT | Platform services, delivery infrastructure, observability, reliability, performance, internal systems, employee devices and identity administration. |
|
||||||
|
| Architecture & Security | Technical standards, system design, security architecture and secure engineering practices. |
|
||||||
|
| Quality Engineering | Test strategy, automation, release quality and defect prevention. |
|
||||||
|
| Data & AI | Analytics, experimentation, ranking, recommendations, marketplace ML and safe AI-assisted engineering workflows. |
|
||||||
|
|
||||||
|
The CTO owns technology direction. The Head of Engineering leads engineering delivery through Group Engineering Managers and Engineering Managers. The AI Architect coordinates AI enablement within Data & AI, working with Architecture & Security and the other Technology teams. These are leadership roles within the five-team structure, not additional teams.
|
||||||
|
|
||||||
|
### Operations
|
||||||
|
|
||||||
|
**Purpose:** keep marketplace trading dependable and resolve customer issues fairly and efficiently.
|
||||||
|
|
||||||
|
**Operations Squad** delivers the department’s responsibilities across the following workstreams.
|
||||||
|
|
||||||
|
| Workstream | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Customer Support | Buyer and seller assistance, knowledge management, self-service and support workflow automation. |
|
||||||
|
| Trust & Resolution | Disputes, appeals, refunds, warranties, chargebacks and complex customer cases. |
|
||||||
|
| Risk & Fraud | Transaction and account risk, fraud prevention, investigations and operational controls. |
|
||||||
|
| Operational Quality | Independent case reviews, quality standards, calibration, service accuracy and improvement tracking across operational teams. |
|
||||||
|
|
||||||
|
The COO coordinates Operations. Team leads manage specialists and daily service delivery. Operational Quality reports directly to the COO and reviews quality across teams.
|
||||||
|
|
||||||
|
### Marketing
|
||||||
|
|
||||||
|
**Purpose:** attract and retain customers, build the Eldorado brand and grow marketplace demand.
|
||||||
|
|
||||||
|
**Marketing Squad** delivers the department’s responsibilities across the following workstreams.
|
||||||
|
|
||||||
|
| Workstream | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Brand & Community | Brand positioning, campaigns, organic social, community and brand partnerships. |
|
||||||
|
| Creative | Campaign concepts, visual assets and performance creative. |
|
||||||
|
| SEO | Organic discovery, search visibility and content performance. |
|
||||||
|
| PPC & Affiliate | Paid acquisition, affiliate channels and return on marketing investment. |
|
||||||
|
| Influencer | Creator relationships, influencer programs and campaign delivery. |
|
||||||
|
| CRM | Customer lifecycle communication, retention, reactivation and campaign personalization. |
|
||||||
|
|
||||||
|
The CMO coordinates Marketing. The Brand Team Lead owns Brand & Community, with shared support from Creative and the other marketing workstreams.
|
||||||
|
|
||||||
|
### Finance & Accounting
|
||||||
|
|
||||||
|
**Purpose:** maintain financial control, support business decisions and keep marketplace money flows dependable.
|
||||||
|
|
||||||
|
**Finance & Accounting Squad** delivers the department’s responsibilities across the following workstreams.
|
||||||
|
|
||||||
|
| Workstream | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Financial Planning & Analysis | Budgets, forecasts, profitability, management reporting and investment analysis. |
|
||||||
|
| Accounting, Tax & Controls | Accounting, financial reporting, tax, audit coordination and internal controls. |
|
||||||
|
| Treasury & Payment Operations | Cash management, reconciliation, payout oversight, payment-provider coordination and financial risk. |
|
||||||
|
|
||||||
|
The CFO coordinates Finance & Accounting and works with executive leadership on business performance. Finance, Operations and Product share responsibility for effective payment and withdrawal processes, each within its own area of expertise.
|
||||||
|
|
||||||
|
### HR & Administration
|
||||||
|
|
||||||
|
**Purpose:** help teams attract, develop and retain people and provide an effective working environment.
|
||||||
|
|
||||||
|
**People & Administration Squad** delivers the department’s responsibilities across the following workstreams.
|
||||||
|
|
||||||
|
| Workstream | Responsibilities |
|
||||||
|
| --- | --- |
|
||||||
|
| Talent Acquisition | Recruitment, candidate experience, hiring coordination and workforce demand support. |
|
||||||
|
| People Operations | Employee onboarding, development, performance processes, policies and employee experience. |
|
||||||
|
| Office & Administration | Workplace services, office operations and administrative coordination. |
|
||||||
|
|
||||||
|
HR partners with department leaders on team capacity and development. People Operations works with Platform & IT on employee onboarding, role changes and offboarding.
|
||||||
|
|
||||||
|
## Leadership and delivery structure
|
||||||
|
|
||||||
|
<ArchifyDiagram name="organization-reporting" title="Eldorado leadership and delivery structure" />
|
||||||
|
|
||||||
|
The diagram shows management responsibility from leader to role or team:
|
||||||
|
|
||||||
|
- **CTO → Head of Engineering → Group Engineering Managers → Engineering Managers → the Product Engineering team.**
|
||||||
|
- **CTO → AI Architect**, coordinating engineering AI enablement.
|
||||||
|
- **COO → Operational Quality**, providing independent quality oversight.
|
||||||
|
- **CMO → Brand Team Lead**, leading Brand & Community.
|
||||||
|
|
||||||
|
Product and Technology retain separate team ownership and reporting lines. Their teams coordinate priorities, design, engineering, quality and data work to deliver business outcomes.
|
||||||
|
|
||||||
|
## How the departments work together
|
||||||
|
|
||||||
|
| Business outcome | Collaboration |
|
||||||
|
| --- | --- |
|
||||||
|
| Better buyer experience | Product defines improvements; Technology delivers them; Operations brings customer feedback; Data & AI measures the result. |
|
||||||
|
| Stronger seller experience | Product and Technology develop seller tools; Operations supports sellers; Finance manages financial processes. |
|
||||||
|
| Safe and trustworthy trading | Risk & Fraud, Trust & Resolution, Architecture & Security, and Finance coordinate controls and incident responses. |
|
||||||
|
| Sustainable growth | Marketing develops demand; Product improves conversion and retention; Finance measures profitability. |
|
||||||
|
| AI-powered execution | Data & AI supports engineering and develops marketplace intelligence; Operations improves service and quality workflows. |
|
||||||
|
|
||||||
|
Department leaders remain accountable for outcomes, controls and service quality as AI becomes part of everyday work.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Organization background research
|
||||||
|
|
||||||
|
The source/excerpt ledger and `reconstruction-snapshot.mdx` preserve the original public-evidence investigation. They are background working material, outside the published docs and static assets.
|
||||||
|
|
||||||
|
The reader-facing `docs/organization/structure.mdx` is an organizational operating model, not a research report or an employee roster. Per the user's presentation direction, it describes leadership, departments, teams and responsibilities directly without evidence markers, vacancies or citations. Internet research informs the model; this editorial change does not independently verify staffing, incumbent names or every reporting relationship.
|
||||||
|
|
||||||
|
The original snapshot records which categories and relationships were evidenced, job-advertised or inferred. Retain that provenance for future maintenance, without importing it into the published page, diagram metadata or search index.
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
---
|
||||||
|
title: Structure
|
||||||
|
description: Distinguish Eldorado’s publicly evidenced organization from advertised roles and planning assumptions.
|
||||||
|
---
|
||||||
|
|
||||||
|
import ArchifyDiagram from '@site/src/components/ArchifyDiagram';
|
||||||
|
|
||||||
|
**Research snapshot: 2026-10-02.** This is a public-evidence reconstruction for AI strategy planning, **not a verified employee roster** or an internally approved organization chart.
|
||||||
|
|
||||||
|
## What is known
|
||||||
|
|
||||||
|
Eldorado names **Vladas Jurkevičius — co-founder and CEO** and **Lukas Deksnys — co-founder and COO** on its official About page.[1]
|
||||||
|
|
||||||
|
Its official careers site uses seven hiring categories: **Management, Product, Technology, Operations, Marketing, Finance & Accounting, and HR & Administration**. Those labels are directly evidenced; treating them as six peer departments beneath Management is a planning arrangement, not a published reporting hierarchy.[4]
|
||||||
|
|
||||||
|
### Evidence legend
|
||||||
|
|
||||||
|
- **E — Publicly evidenced:** a named leader, team, function or careers category explicitly appears in an official source. This does not establish every reporting relationship.
|
||||||
|
- **J — Job-advertised:** a vacancy describes a role, mandate or reporting line. The position may be unfilled or newly created.
|
||||||
|
- **A — Assumed:** a proposed grouping or missing team boundary used for planning, not a claim about Eldorado’s current structure. Dashed connectors identify assumed placements.
|
||||||
|
|
||||||
|
## Department overview
|
||||||
|
|
||||||
|
<ArchifyDiagram name="organization-structure" title="Eldorado organization — evidence and assumptions" />
|
||||||
|
|
||||||
|
**Text alternative:** Management is shown above Product, Technology, Operations, Marketing, Finance & Accounting, and HR & Administration. All six placements beneath Management are assumed. The department names come from the careers taxonomy; the notes in the viewer identify evidenced teams and proposed subdivisions. This view does not assign every function directly to the CEO or COO.
|
||||||
|
|
||||||
|
## Departments and teams
|
||||||
|
|
||||||
|
The following separates **named teams** from **roles, capabilities and domains**. A function mentioned in a vacancy is not automatically a separately staffed team.
|
||||||
|
|
||||||
|
| Department / function | Publicly evidenced teams, roles or domains | Assumed completion for planning |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| **Management** | **E:** CEO Vladas Jurkevičius and COO Lukas Deksnys. **J:** CTO and CMO are referenced as reporting managers.[1][8][12] CFO is advertised.[5] No incumbent names are inferred for those three roles. | **A:** a leadership coordination layer across the six functions. Exact executive reporting lines, Board membership and decision rights remain unverified. |
|
||||||
|
| **Product** | **E:** Order/Orders team; Categories design team, with Boosting & Currency scope; Data Team appears in the ranking Data Scientist vacancy metadata. Data classification and product design evidence.[9][13][14] **J:** Sellers and Operations product-owner domain, including Seller Portal, integrations, onboarding, balances/withdrawals, invoicing and support tooling.[15] | **A:** treat Sellers & Operations as a cross-functional product squad for planning, not a proven standalone team. Do not duplicate Data as a separate peer department. |
|
||||||
|
| **Technology** | **J:** Head of Engineering → Group Engineering Managers → Engineering Managers → engineers. AI Architect reports to CTO and starts solo. Technical Architect is named as an infrastructure/security partner; IT Engineer is advertised for identity, device management and internal SaaS.[6][8][10] | **A:** CTO → Head of Engineering. Proposed shared platform/reliability and security capability groups, with staffing and reporting unverified. Do not turn AI Architect into an established AI department. |
|
||||||
|
| **Operations** | **E:** Customer Support, Trust & Resolution, Risk & Fraud. **J:** QA Specialist (Operations) reports directly to COO; separate support/resolution Team Lead mandates cover specialist teams.[11][17][18] | **A:** COO ownership of the wider Operations function and its team-lead escalation chain. Only the QA Specialist’s direct COO line is explicit in the reviewed sources. |
|
||||||
|
| **Marketing** | **J:** Brand Team Lead reports to CMO. **E:** the wider Marketing team names Creative, SEO, PPC & Affiliate, Influencer, and CRM; brand scope includes organic social, community and brand partnerships.[12] | **A:** model these named disciplines as planning workstreams under Marketing. Separate team managers, headcounts and each discipline’s direct CMO line are not established. |
|
||||||
|
| **Finance & Accounting** | **E:** Finance team / hiring category. **J:** CFO remit includes planning, reporting, cash/capital, tax, compliance, financial risk and payments; it describes partnership with CEO and Board, not an explicit reporting line.[5] | **A:** FP&A; Accounting/Tax/Controls; Treasury/Payment Operations as three capability groups. These are inferred subdivisions, not proven staffed teams. Financial risk is not the same thing as the Operations Risk & Fraud team. |
|
||||||
|
| **HR & Administration** | **E:** Talent Acquisition team / role category. **J:** full-cycle IT and non-IT recruitment, partnering with hiring managers.[16] | **A:** People Operations and Office/Administration alongside Talent Acquisition. Separate teams and the HR leader’s reporting line remain unverified. |
|
||||||
|
|
||||||
|
The Sellers and Operations posting establishes a **product domain**, not a named Sellers department. Its mandate crosses seller-facing features, operational tooling and marketplace infrastructure.[15]
|
||||||
|
|
||||||
|
## Reporting lines supported by vacancies
|
||||||
|
|
||||||
|
<ArchifyDiagram name="organization-reporting" title="Eldorado reporting lines — advertised and assumed" />
|
||||||
|
|
||||||
|
**Read arrows as manager → role/team.** Solid **J** connectors are explicitly described in vacancies. The dashed **A** link between CTO and Head of Engineering is the only inferred link in this diagram. Separate rows are not connected because their upward reporting lines were not established.
|
||||||
|
|
||||||
|
| Manager / leader | Role or team below it | Status and scope |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Head of Engineering | Group Engineering Manager | **J:** explicitly reports directly to Head of Engineering; the vacancy describes managing 4–5 Engineering Managers.[6] |
|
||||||
|
| Group Engineering Manager | Engineering Manager | **J:** explicitly named manager in the Engineering Manager vacancy.[7] |
|
||||||
|
| Engineering Manager | Software engineers | **J:** leads a team of around five engineers. This is the advertised span, not a count of all current engineering teams.[7] |
|
||||||
|
| CTO | AI Architect | **J:** explicitly direct; a new individual-contributor role, starting solo with a possible future team.[8] |
|
||||||
|
| COO | QA Specialist (Operations) | **J:** explicitly direct; independent quality work across Customer Support, Trust & Resolution, and Risk & Fraud.[11] |
|
||||||
|
| CMO | Brand Team Lead | **J:** explicitly direct; brand, organic social, community and brand partnerships remit.[12] |
|
||||||
|
| Customer Support / Trust & Resolution Team Leads | Their specialists | **J:** support/resolution leadership advert describes teams of 5–10 specialists; the resolution-specific advert also states 5–10. Their own upward manager is not stated.[17][18] |
|
||||||
|
| CTO | Head of Engineering | **A:** plausible technology reporting arrangement, retained only as a planning assumption. |
|
||||||
|
|
||||||
|
Product Owner, Tech Lead and Product Designer are described as collaborating on product direction. That is evidence of cross-functional work, **not** evidence that one line-manages the others.[13][14]
|
||||||
|
|
||||||
|
## What this means for AI strategy
|
||||||
|
|
||||||
|
**Research interpretation, not an approved roadmap:** use the evidenced organizational owners rather than inventing one central AI department.
|
||||||
|
|
||||||
|
- **Engineering enablement:** the AI Architect vacancy focuses on engineering output, adoption, standards and security under the CTO—not ownership of every business AI initiative.[8]
|
||||||
|
- **Marketplace intelligence:** Product/Data has an advertised ranking and recommendations remit, including experimentation and learning-to-rank.[9]
|
||||||
|
- **Operations quality:** operational QA explicitly includes auditing AI-handled support and LLM-assisted scoring; customer support leadership includes AI-assisted support and automation.[11][17]
|
||||||
|
- **Planning assumption:** coordinate these three areas with Product, Operations, Technology and Finance owners. Whether to create a cross-company AI steering group is a future decision, not a finding about current organization.
|
||||||
|
|
||||||
|
## Limits and validation questions
|
||||||
|
|
||||||
|
- **No complete internal chart was found in the reviewed public sources.** This is not a claim that none exists. Research prioritized official About, careers, vacancy and legal pages; it is not an exhaustive employee or vacancy census.
|
||||||
|
- **Job postings are time-bound recruitment evidence.** A vacancy can describe a future role or team. Names, staffing, budgets and every executive reporting line still need company confirmation.
|
||||||
|
- **No reliable total headcount is asserted.** The careers homepage itself contains both “150+” and “200+” descriptions; do not use either to derive department sizes.[2]
|
||||||
|
- **Legal entities are not departments.** The Terms of Service names GWD Processing FZCO, Eldorado Sales LLC and Halfway House OÜ collectively as Eldorado. This establishes contracting language, not a parent/subsidiary hierarchy or the employing entity of each team.[3]
|
||||||
|
- **Keep scope distinctions:** marketplace Risk & Fraud, financial risk, AI security, and corporate compliance may collaborate but should not be collapsed into one assumed reporting chain.
|
||||||
|
|
||||||
|
Before using this as an operating model, confirm: **(1)** which advertised roles are filled, **(2)** executive and functional reporting lines, **(3)** product squad membership and engineering matrix, **(4)** ownership of Payments, Legal/Compliance and Data, and **(5)** the real team roster and capacity. Replace each **A** only when evidence is supplied.
|
||||||
|
|
||||||
|
## Sources
|
||||||
|
|
||||||
|
[1] https://www.eldorado.gg/about-us — Eldorado About us
|
||||||
|
[2] https://careers.eldorado.gg — Eldorado Careers homepage
|
||||||
|
[3] https://www.eldorado.gg/terms-of-service — Eldorado Terms of Service
|
||||||
|
[4] https://careers.eldorado.gg/jobs — Eldorado Jobs — official hiring categories
|
||||||
|
[5] https://careers.eldorado.gg/jobs/8394692-chief-financial-officer — Chief Financial Officer
|
||||||
|
[6] https://careers.eldorado.gg/jobs/8376024-group-engineering-manager — Group Engineering Manager
|
||||||
|
[7] https://careers.eldorado.gg/jobs/8290012-engineering-manager — Engineering Manager
|
||||||
|
[8] https://careers.eldorado.gg/jobs/8175478-ai-architect — AI Architect
|
||||||
|
[9] https://careers.eldorado.gg/jobs/8261309-data-scientist-offer-ranking-recommendations — Data Scientist (Offer Ranking & Recommendations)
|
||||||
|
[10] https://careers.eldorado.gg/jobs/8363463-it-engineer — IT Engineer
|
||||||
|
[11] https://careers.eldorado.gg/jobs/8358613-qa-specialist-operations — QA Specialist (Operations)
|
||||||
|
[12] https://careers.eldorado.gg/jobs/8450323-brand-team-lead — Brand Team Lead
|
||||||
|
[13] https://careers.eldorado.gg/jobs/8404928-product-designer-orders-team — Product Designer (Orders team)
|
||||||
|
[14] https://careers.eldorado.gg/jobs/8253165-product-designer — Product Designer
|
||||||
|
[15] https://careers.eldorado.gg/jobs/8389376-product-owner-sellers-and-operations — Product Owner (Sellers and Operations)
|
||||||
|
[16] https://careers.eldorado.gg/jobs/8487069-talent-acquisition-partner-junior-mid — Talent Acquisition Partner (Junior - Mid)
|
||||||
|
[17] https://careers.eldorado.gg/jobs/8381712-customer-support-team-lead — Customer Support Team Lead
|
||||||
|
[18] https://careers.eldorado.gg/jobs/8483510-trust-resolution-team-lead — Trust & Resolution Team Lead
|
||||||
|
|
||||||
@@ -0,0 +1,261 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"url": "https://www.eldorado.gg/about-us",
|
||||||
|
"title": "Eldorado About us",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Eldorado.gg was founded by two Lithuanian co-founders, Vladas Jurkevičius (CEO) and Lukas Deksnys (COO).",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"url": "https://careers.eldorado.gg",
|
||||||
|
"title": "Eldorado Careers homepage",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "A global team of 150+ professionals shaping the future of in-game commerce at Eldorado.gg",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "A team of 200+ professionals",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"url": "https://www.eldorado.gg/terms-of-service",
|
||||||
|
"title": "Eldorado Terms of Service",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Together, GWD Processing FZCO, Eldorado Sales LLC and Halfway House OÜ are collectively referred to in this Agreement as “Eldorado,” unless otherwise specified.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs",
|
||||||
|
"title": "Eldorado Jobs — official hiring categories",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Finance & Accounting (1)\nHR & Administration (1)\nMarketing (2)\nOperations (5)\nProduct (3)\nTechnology (9)\nManagement",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8394692-chief-financial-officer",
|
||||||
|
"title": "Chief Financial Officer",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "This is a key executive role with a broad mandate across financial planning, reporting, cash and capital management, tax, compliance, risk, payments and the Finance team.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8376024-group-engineering-manager",
|
||||||
|
"title": "Group Engineering Manager",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We're growing and looking for a Group Engineering Manager to lead an engineering group of several teams, manage 4-5 Engineering Managers, and report directly to Head of Engineering.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8290012-engineering-manager",
|
||||||
|
"title": "Engineering Manager",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We’re growing and looking for an Engineering Manager to lead a team of around five software engineers and report to a Group Engineering Manager.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8175478-ai-architect",
|
||||||
|
"title": "AI Architect",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We're creating a new role at Eldorado.gg: AI Architect, reporting directly to the CTO.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "You'll start solo: this is an individual-contributor role on paper, with outsized influence in practice. No direct reports required from day one, but a mandate that touches the whole organization.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Own the security posture of AI usage across engineering, in partnership with Technical Architect on infra and security.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8261309-data-scientist-offer-ranking-recommendations",
|
||||||
|
"title": "Data Scientist (Offer Ranking & Recommendations)",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Team\nProduct\nRole\nData Team",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8363463-it-engineer",
|
||||||
|
"title": "IT Engineer",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Own the joiner–mover–leaver process end to end;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8358613-qa-specialist-operations",
|
||||||
|
"title": "QA Specialist (Operations)",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Our Operations teams - Customer Support, Trust & Resolution, and Risk & Fraud - are scaling fast, and each measures quality its own way.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "We're creating a new role at Eldorado.gg: QA Specialist (Operations), reporting directly to the COO.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Audit AI-handled support conversations and root-cause failures into content, routing, or model issues;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8450323-brand-team-lead",
|
||||||
|
"title": "Brand Team Lead",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "You will manage a team of several people and report to our CMO.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Lead and develop a high-performing team spanning brand, organic social, community and brand partnerships;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Collaborate closely with the wider Marketing team (Creative, SEO, PPC & Affiliate, Influencer, CRM) as well as Product, Data, and other cross-functional stakeholders.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 13,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8404928-product-designer-orders-team",
|
||||||
|
"title": "Product Designer (Orders team)",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We're growing and looking for a Product Designer to join our Order team.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Shape product direction as an equal stakeholder alongside the Product Owner and Tech Lead, owning the end-to-end design process for the order page, dispute flows, and broader post-purchase delivery experience;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8253165-product-designer",
|
||||||
|
"title": "Product Designer",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We’re growing and looking for a Product Designer to join our Categories design team.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8389376-product-owner-sellers-and-operations",
|
||||||
|
"title": "Product Owner (Sellers and Operations)",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "You’ll own the seller platform domain — the systems and tools that power how sellers operate on Eldorado.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "This includes Seller Portal and dashboards, direct seller integrations, onboarding and verification tools, balances and withdrawals, invoicing, and customer support tooling.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8487069-talent-acquisition-partner-junior-mid",
|
||||||
|
"title": "Talent Acquisition Partner (Junior - Mid)",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Team\nHR & Administration\nRole\nTalent Acquisition",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 17,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8381712-customer-support-team-lead",
|
||||||
|
"title": "Customer Support Team Lead",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "We’re growing our Customer Operations function and looking for two experienced Team Leads to join our Customer Support and Trust & Resolution teams.",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Explore AI-assisted support and automation opportunities;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 18,
|
||||||
|
"url": "https://careers.eldorado.gg/jobs/8483510-trust-resolution-team-lead",
|
||||||
|
"title": "Trust & Resolution Team Lead",
|
||||||
|
"accessed": "2026-10-02",
|
||||||
|
"quotes": [
|
||||||
|
{
|
||||||
|
"text": "Lead, coach, and grow a team of 5-10 Trust & Resolution Specialists;",
|
||||||
|
"added": "2026-10-02"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+56
-6
@@ -55,12 +55,62 @@ test('Archify is pinned, licensed and rebuilt, not a remote embed', () => {
|
|||||||
assert(wrapper.includes('sandbox="allow-scripts allow-downloads"'));
|
assert(wrapper.includes('sandbox="allow-scripts allow-downloads"'));
|
||||||
assert(!wrapper.includes('allow-same-origin'));
|
assert(!wrapper.includes('allow-same-origin'));
|
||||||
assert(wrapper.includes('useBaseUrl'));
|
assert(wrapper.includes('useBaseUrl'));
|
||||||
|
assert(wrapper.includes('showModal()') && wrapper.includes('onClose='));
|
||||||
|
assert(!wrapper.includes('target="_blank"'));
|
||||||
|
assert(wrapper.includes('Close full-screen diagram'));
|
||||||
});
|
});
|
||||||
test('example is explicitly illustrative and contains valid connected nodes', () => {
|
test('Product owns two teams and Technology owns five separate teams', () => {
|
||||||
const spec = JSON.parse(read('diagrams/organization-structure.architecture.json'));
|
const spec = JSON.parse(read('diagrams/organization-structure.architecture.json'));
|
||||||
assert(spec.meta.title.includes('Illustrative'));
|
const page = read('docs/organization/structure.mdx');
|
||||||
const ids = new Set(spec.components.map(n => n.id));
|
assert(!/shared-delivery|squad-/i.test(JSON.stringify(spec)));
|
||||||
assert.equal(ids.size, spec.components.length);
|
assert(!/shared squads|share a delivery structure|cross-functional teams/i.test(page));
|
||||||
for (const edge of spec.connections) assert(ids.has(edge.from) && ids.has(edge.to));
|
for (const [dept, count, heading, next] of [['product',2,'Product','Technology'],['technology',5,'Technology','Operations']]) {
|
||||||
assert(read('docs/organization/structure.mdx').includes('not Eldorado’s confirmed organization chart'));
|
const teams = spec.components.filter(n => n.id.startsWith(`${dept}-team-`));
|
||||||
|
assert.equal(teams.length, count);
|
||||||
|
const section = page.split(`### ${heading}\n`)[1].split(`### ${next}\n`)[0];
|
||||||
|
const rows = section.split('\n').filter(l => l.startsWith('| ')).slice(2);
|
||||||
|
assert.equal(rows.length, count);
|
||||||
|
for (const team of teams) {
|
||||||
|
const parents = spec.connections.filter(e => e.to === team.id);
|
||||||
|
assert.deepEqual(parents.map(e => e.from), [dept]);
|
||||||
|
assert(rows.some(row => row.startsWith(`| ${team.label} |`)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
test('departments share one row and each has delivery teams below it', () => {
|
||||||
|
const spec = JSON.parse(read('diagrams/organization-structure.architecture.json'));
|
||||||
|
const page = read('docs/organization/structure.mdx');
|
||||||
|
const departments = ['product', 'technology', 'operations', 'marketing', 'finance', 'people'];
|
||||||
|
const nodes = new Map(spec.components.map(n => [n.id, n]));
|
||||||
|
assert.equal(new Set(departments.map(id => nodes.get(id).pos[1])).size, 1);
|
||||||
|
for (const [i, id] of departments.entries()) {
|
||||||
|
const department = nodes.get(id);
|
||||||
|
const teams = spec.connections.filter(e => e.from === id).map(e => nodes.get(e.to));
|
||||||
|
assert.equal(teams.length, i === 0 ? 2 : i === 1 ? 5 : 1);
|
||||||
|
for (const team of teams) {
|
||||||
|
assert(team.pos[1] > department.pos[1] + department.size[1]);
|
||||||
|
assert.equal(team.pos[0], department.pos[0]);
|
||||||
|
assert.deepEqual(spec.connections.filter(e => e.to === team.id).map(e => e.from), [id]);
|
||||||
|
assert(page.includes(team.label));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const [i, a] of spec.components.entries()) for (const b of spec.components.slice(i + 1)) {
|
||||||
|
assert(!(a.pos[0] < b.pos[0] + b.size[0] && a.pos[0] + a.size[0] > b.pos[0] && a.pos[1] < b.pos[1] + b.size[1] && a.pos[1] + a.size[1] > b.pos[1]), `${a.id} overlaps ${b.id}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
test('organization page presents an operating model, not research notes', () => {
|
||||||
|
const page = read('docs/organization/structure.mdx');
|
||||||
|
assert(page.includes('operating model') && page.includes('## Departments and teams'));
|
||||||
|
const prohibited = /assum|job.advert|vacanc|publicly evidenced|research snapshot|## Sources|\[\d+\]|\b[EJA]:\s/i;
|
||||||
|
assert(!prohibited.test(page));
|
||||||
|
assert(page.includes('Vladas Jurkevičius') && page.includes('Lukas Deksnys'));
|
||||||
|
assert(existsSync('research/organization/reconstruction-snapshot.mdx'));
|
||||||
|
assert(JSON.parse(read('research/organization/sources.json')).sources.every(s => s.quotes?.length));
|
||||||
|
for (const name of ['organization-structure', 'organization-reporting']) {
|
||||||
|
const spec = JSON.parse(read(`diagrams/${name}.architecture.json`));
|
||||||
|
assert(!prohibited.test(JSON.stringify(spec)));
|
||||||
|
const ids = new Set(spec.components.map(n => n.id));
|
||||||
|
assert.equal(ids.size, spec.components.length);
|
||||||
|
for (const edge of spec.connections) assert(ids.has(edge.from) && ids.has(edge.to));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
+14
-1
@@ -21,7 +21,20 @@ if (process.argv.includes('--build')) {
|
|||||||
}
|
}
|
||||||
assert(!readdirSync('build/diagrams', {recursive: true}).some(f => f.endsWith('.delivery.json')), 'Private build receipts must not be published');
|
assert(!readdirSync('build/diagrams', {recursive: true}).some(f => f.endsWith('.delivery.json')), 'Private build receipts must not be published');
|
||||||
const diagram = read('build/diagrams/organization-structure/index.html');
|
const diagram = read('build/diagrams/organization-structure/index.html');
|
||||||
assert(diagram.includes('Example leadership') && diagram.includes('node-engineering'));
|
assert(diagram.includes('node-product-team-2') && diagram.includes('node-technology-team-5'));
|
||||||
|
assert(!diagram.includes('shared-delivery'));
|
||||||
|
assert(!/A: placement|E: careers|J: advertised/.test(diagram));
|
||||||
|
assert(!diagram.includes('Example leadership'));
|
||||||
|
for (const [dept, count] of [['product', 2], ['technology', 5]]) {
|
||||||
|
for (let i = 1; i <= count; i++) assert(diagram.includes(`node-${dept}-team-${i}`));
|
||||||
|
}
|
||||||
|
const reporting = read('build/diagrams/organization-reporting/index.html');
|
||||||
|
assert(reporting.includes('AI Architect') && reporting.includes('Leads'));
|
||||||
|
assert(!/A: assumed|J: direct/.test(reporting));
|
||||||
|
const structure = read('build/organization/structure/index.html');
|
||||||
|
assert(structure.includes('Vladas Jurkevičius') && structure.includes('operating model'));
|
||||||
|
assert(!/Research snapshot|Job-advertised|careers\.eldorado\.gg|Assumed/.test(structure));
|
||||||
|
assert(!structure.includes('Illustrative integration example'));
|
||||||
assert(!diagram.includes('/opt/data/'), 'No build paths in published diagrams');
|
assert(!diagram.includes('/opt/data/'), 'No build paths in published diagrams');
|
||||||
const home = read('build/index.html');
|
const home = read('build/index.html');
|
||||||
assert(/<title\b[^>]*>Eldorado Powered By AI<\/title>/.test(home));
|
assert(/<title\b[^>]*>Eldorado Powered By AI<\/title>/.test(home));
|
||||||
|
|||||||
@@ -1,12 +1,28 @@
|
|||||||
import React from 'react';
|
import React, {useEffect, useId, useRef, useState} from 'react';
|
||||||
import useBaseUrl from '@docusaurus/useBaseUrl';
|
import useBaseUrl from '@docusaurus/useBaseUrl';
|
||||||
|
|
||||||
export default function ArchifyDiagram({name, title}: {name: string; title: string}): React.ReactElement {
|
export default function ArchifyDiagram({name, title}: {name: string; title: string}): React.ReactElement {
|
||||||
if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)) throw new Error('Invalid diagram name');
|
if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)) throw new Error('Invalid diagram name');
|
||||||
const source = useBaseUrl(`/diagrams/${name}/`);
|
const source = useBaseUrl(`/diagrams/${name}/`);
|
||||||
const json = useBaseUrl(`/diagrams/${name}.json`);
|
const json = useBaseUrl(`/diagrams/${name}.json`);
|
||||||
|
const dialog = useRef<HTMLDialogElement>(null);
|
||||||
|
const opener = useRef<HTMLButtonElement>(null);
|
||||||
|
const headingId = useId();
|
||||||
|
const [expanded, setExpanded] = useState(false);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!expanded) return;
|
||||||
|
dialog.current?.showModal();
|
||||||
|
const previousOverflow = document.body.style.overflow;
|
||||||
|
document.body.style.overflow = 'hidden';
|
||||||
|
return () => {document.body.style.overflow = previousOverflow;};
|
||||||
|
}, [expanded]);
|
||||||
|
const close = () => {dialog.current?.close();};
|
||||||
return <section className="archify-panel" aria-label={title}>
|
return <section className="archify-panel" aria-label={title}>
|
||||||
<div className="archify-toolbar"><strong>Interactive diagram</strong><div><a href={source} target="_blank" rel="noopener noreferrer">Open full viewer ↗</a><a href={json} download>JSON source ↓</a></div></div>
|
<div className="archify-toolbar"><strong>Interactive diagram</strong><div><button ref={opener} type="button" className="archify-expand" onClick={() => setExpanded(true)}>Open full viewer ⛶</button><a href={json} download>JSON source ↓</a></div></div>
|
||||||
<iframe src={source} title={title} sandbox="allow-scripts allow-downloads" loading="lazy" referrerPolicy="no-referrer" />
|
<iframe src={source} title={title} sandbox="allow-scripts allow-downloads" loading="lazy" referrerPolicy="no-referrer" />
|
||||||
|
<dialog ref={dialog} className="archify-modal" aria-labelledby={headingId} onClose={() => {setExpanded(false); opener.current?.focus();}}>
|
||||||
|
<div className="archify-modal-toolbar"><strong id={headingId}>{title}</strong><button type="button" onClick={close} autoFocus aria-label="Close full-screen diagram">Close ×</button></div>
|
||||||
|
{expanded && <iframe src={source} title={`${title} — expanded`} sandbox="allow-scripts allow-downloads" referrerPolicy="no-referrer" />}
|
||||||
|
</dialog>
|
||||||
</section>;
|
</section>;
|
||||||
}
|
}
|
||||||
@@ -101,4 +101,12 @@ a:focus-visible, button:focus-visible {outline: 3px solid #b88719; outline-offse
|
|||||||
.archify-toolbar div {display: flex; gap: 20px; flex-wrap: wrap;}
|
.archify-toolbar div {display: flex; gap: 20px; flex-wrap: wrap;}
|
||||||
.archify-panel iframe {width: 100%; height: 720px; border: 0; display: block; background: #f6f6f6;}
|
.archify-panel iframe {width: 100%; height: 720px; border: 0; display: block; background: #f6f6f6;}
|
||||||
@media (max-width: 700px) {.archify-panel iframe {height: 650px;}}
|
@media (max-width: 700px) {.archify-panel iframe {height: 650px;}}
|
||||||
|
.archify-expand {border: 0; padding: 0; background: transparent; color: var(--ifm-link-color); font: inherit; cursor: pointer;}
|
||||||
|
.archify-expand:hover {text-decoration: underline;}
|
||||||
|
.archify-modal {position: fixed; inset: 0; margin: 0; padding: 0; width: 100vw; height: 100dvh; max-width: none; max-height: none; border: 0; background: var(--surface); color: var(--ifm-color-content);}
|
||||||
|
.archify-modal[open] {display: flex; flex-direction: column;}
|
||||||
|
.archify-modal::backdrop {background: #000b;}
|
||||||
|
.archify-modal-toolbar {display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 20px; border-bottom: 1px solid var(--line);}
|
||||||
|
.archify-modal-toolbar button {flex-shrink: 0; padding: 8px 16px; background: var(--gold); color: #14131a; font: inherit; font-weight: 700; border: 0; cursor: pointer;}
|
||||||
|
.archify-panel .archify-modal iframe {flex: 1; min-height: 0; height: 100%; width: 100%;}
|
||||||
@media (prefers-reduced-motion: reduce) {.start-card {transition: none;} .start-card:hover {transform: none;}}
|
@media (prefers-reduced-motion: reduce) {.start-card {transition: none;} .start-card:hover {transform: none;}}
|
||||||
Reference in new issue
Block a user