Skip to content

Add end-to-end demo documentation and presentation#182

Merged
rbardaji merged 67 commits into
mainfrom
feature/179-demo-documentation
Jun 1, 2026
Merged

Add end-to-end demo documentation and presentation#182
rbardaji merged 67 commits into
mainfrom
feature/179-demo-documentation

Conversation

@rbardaji

@rbardaji rbardaji commented Jun 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a Marp-based, self-guided presentation/tutorial under docs/demo/ covering the full NDP journey for end users and administrators:

  • Installation (NDP-EP common case + full local stack with Compose profiles)
  • Identity and permissions (AAI, access-requests workflow, role tiers)
  • The Endpoint in action (Search + options, the "+ New" creation flows in detail, S3 Management)
  • Automating with the Python library
  • Federation (and the exact metrics payload the EP reports)
  • NetBird bonus (one-pager linking to netbird.io)
  • Appendix covering EP_UUID, Keycloak user creation, AAI API role assignment

Also includes:

  • docs/configuration.md — full reference of every .env variable (purpose + where to get the value).
  • example.env — adds the missing ENABLE_ACCESS_REQUESTS / ACCESS_REQUESTS_COLLECTION.
  • .github/workflows/demo-deck.yml — builds the deck with Marp and publishes it to GitHub Pages on every push to docs/demo/**.

The original brand PowerPoint is committed under docs/ndp ep - presentation.pptx; the header/footer brand images live under docs/demo/assets/.

Test plan

  • marp renders the deck without errors (HTML + PDF), verified by the new GitHub Actions workflow.
  • Pages site is live and navigable: https://national-data-platform.github.io/ep-api/
  • Backwards compatibility: documentation-only change, no API behavior, models, routes or version touched.

Closes #179

Raul Bardaji added 30 commits May 27, 2026 11:30
Add docs/demo with a Marp presentation that doubles as a self-guided
tutorial, covering the full NDP journey for end users and admins:
installation from scratch, identity and permissions (AAI + Affinities),
using the Endpoint from the web, automating with the Python library,
federation, and the secure network (NetBird) as a bonus.

Includes a README with rendering instructions and a screenshot checklist.
Content will be refined incrementally.

Refs #179
Reuse the NDP logo (header) and partner-logo band (footer) from
'ndp ep - presentation.pptx' as layered slide backgrounds via CSS, so
every slide carries the official branding. Document the assets and the
--allow-local-files flag needed when exporting.

Refs #179
Hand-crafted minimal SVG icons (NDP navy) for AAI, Affinities, NDP-EP,
Federation, Python library and NetBird; shown next to each component in
the 'pieces' slide. Removes the component-logos screenshot placeholder.

Refs #179
Redraw the Component interactions slide as a clean navy SVG faithful to
the C4 System Landscape view in ep-diagrams: single entry point routing
to each service, with NDP-EP as the hub talking to AAI, CKAN, Affinities
and Federation.

Refs #179
Refined SVG: soft drop shadows, per-component icon badges, grouped
'Platform services' container, curved connectors with white-halo labels,
and an emphasized NDP-EP hub.

Refs #179
Switch from an NDP-EP-centric hub to the original left-to-right/top-down
flow: Data User -> AAI (+Affinities for role) -> NDP-EP (with CKAN/S3
backends) -> Federation, plus a NetBird footnote. Keeps the polished
styling (shadows, icon badges, halo labels) without making the EP the
center everything radiates from.

Refs #179
…roles

Roles live entirely in AAI (Keycloak): the token carries ndp_writer/
ndp_admin/group:{uuid}:tier. Affinities is a non-blocking relationship
registry the EP writes datasets/services/endpoints into. Correct the
interactions diagram (Affinities is a write target of the EP, not between
AAI and the EP), the pieces table, startup order, the Act 2 'grant role'
slide (now AAI), captions and the summary.

Refs #179
Top row: Data User -> AAI -> NDP-EP; bottom row spread full width: CKAN/S3,
Affinities, Federation (the EP writes to them). Wider aspect fills the slide
and fixes the footnote overflowing off the bottom.

Refs #179
The paragraph overflowed the slide below the wide diagram. The diagram's
own labels already tell the story, so keep the slide clean and move the
narration into the speaker notes.

Refs #179
Make the deck self-explanatory: keep the diagram slide clean and add a
following slide that narrates the flow as numbered steps (sign in -> use
the EP -> register relationships -> federate -> secure transport).

Refs #179
- Remove the 'Ana' persona; use generic 'the user'.
- Installation now leads with the common case (install only the NDP-EP and
  connect to the central NDP, which already runs AAI/Affinities/Federation);
  the full local stack is clearly marked as development/testing only.
- Rename the 'Demo walkthrough' slide to 'Overview'.

Refs #179
The common case runs the all-in-one Docker Hub image (API + UI) via
'docker run --env-file .env' — no git clone needed. The image does not
include the data backends (catalog DB / object storage); AAI, Affinities
and Federation are the platform's shared services. Compose with a profile
is offered as the alternative that also starts a local database.

Refs #179
Use the git clone + docker compose path (not the Docker Hub image) and add
a prominent 'for system administrators' warning to the install slide.

Refs #179
- Add docs/configuration.md: a complete reference of every .env variable
  (grouped: general, AAI/access, catalog/CKAN/MongoDB, S3, Kafka, Affinities,
  Federation, Pelican, Rexec, access requests, OpenTelemetry).
- Demo: move 'what you run vs. what's shared' to its own slide and link the
  configuration reference; fix the template filename (example.env).

Refs #179
…all slide

- Convert all [📸 ...] markers to hidden HTML comments so they no longer
  render as literal text on slides (they remain as a guide; the README keeps
  the capture checklist).
- Add a visible pointer to docs/configuration.md on the install slide.
- Restore blank lines before slide separators after the conversion.

Refs #179
…lues)

Rewrite docs/configuration.md so each variable explains what it is, what it
controls, where to obtain its value, and whether it is required — grouped by
area and covering every variable the app reads (verified against the settings
classes, incl. env-prefixed AFFINITIES_/REXEC_/OTEL_ and the os.getenv-based
PELICAN_*). Add a 'minimum to get started' section. Also add the missing
ENABLE_ACCESS_REQUESTS / ACCESS_REQUESTS_COLLECTION to example.env.

Refs #179
…ndary table

Replace the two bland bullets with a two-column comparison — what you operate
(EP + catalog DB + optional object storage) vs. what the platform provides
(AAI, Affinities, Federation) — which is a real takeaway for admins.

Refs #179
The AAI repo uses .env_template (not .env.example) and needs a TLS cert step;
add the git clone and --build per its README.

Refs #179
AAI uses the -old repo and .env_template; Affinities and Federation use
.env.example. Add the git clone step to each (verified against their repos
and READMEs).

Refs #179
Reference the common-case install and only show the difference (point .env at
local services; bring up backends with a Compose profile).

Refs #179
Clarify that 'docker compose up -d' starts only the Endpoint, and that
optional local backends (mongodb, s3, kafka, jupyter, full) are added via
Compose profiles — so users can run only the EP or the full set.

Refs #179
New slide tabulates each profile and the exact services it brings up (none =
EP only; mongodb, s3, kafka, jupyter, pelican, full), so users can run only
the Endpoint or any subset of local backends. Install slide points to it.

Refs #179
…token

On the NDP-EP install slide, clarify that choosing CKAN as the local catalog
requires a running/accessible CKAN and an admin API token (CKAN_API_KEY),
whereas MongoDB needs none.

Refs #179
Raul Bardaji added 28 commits May 28, 2026 09:32
Use a consistent '<action> — <system>' title style across appendix slides and
split the AAI API group/role assignment across two slides so it fits.

Refs #179
…ack)

Common case: the first admin is provisioned via the NDP platform onboarding
(register the Endpoint). Full stack: assign ndp_admin directly in your own
Keycloak. Note the historical onboarding (federation config_id + setup script,
sci-ndp/NDP-EP) as a presenter note pending confirmation of the current portal.

Refs #179
…d Keycloak)

Common case: users are existing nationaldataplatform.com accounts (no creation
needed). Full stack: create them in your own Keycloak (see appendix). Drop the
duplicate create-user screenshot in favour of the appendix.

Refs #179
Replace the 'Grant the role' slide with the real UI flow: a no-role user
submits a Request access form; an admin approves it on the Access Requests
page with a tier (Viewer/Writer/Admin). Add UI screenshot placeholders
(22-request-access, 23-access-requests-approve).

Refs #179
Split the request/approve slides so the UI screenshots sit on their own
centered, larger (h:500) image slides instead of being shrunk next to text.

Refs #179
Reorder Step 3 so Search (available to everyone) comes first, expanded into a
landing-page slide and an options slide (category, Local/Global catalog,
organization + Yours filters, publish/delete on owned items). Move the
create/publish writer flow after it.

Refs #179
Identity/login is already covered in Step 2; Step 3 starts directly with
Search.

Refs #179
…ides

Replace the per-item create slides (organization/dataset/resource) with three
'+ New' slides: an overview listing the six creation flows (Organization,
Dataset, Service, URL, S3, Kafka) with what each is, followed by two slides
listing the required and optional fields for each, grouped by catalog
containers (Organization/Dataset/Service) and data resources (URL/S3/Kafka).

Refs #179
…nings

Replace the two grouped field slides with six detail slides — Organization,
Dataset, Service, URL resource, S3 resource, Kafka topic — each defining
exactly what every required and optional field means (sourced from the
backend request models).

Refs #179
The header logo, footer partner-logos band and the canonical layout used by
the demo presentation are extracted from this deck (see docs/demo/assets/).
Keep it in the repo so the brand assets can be re-extracted/updated.

Refs #179
Per-field 'what it's for' descriptions plus a realistic example value (all
values pass the backend validators: slug format, http(s):// URLs, owner_org
= services for services, kafka_port 1-65535). Split heavier slides into
required/optional so they fit; use a coherent atmospheric/research narrative.

Refs #179
S3 resource: identification (3 fields) + S3 details (3 fields).
Kafka topic: broker (3 fields) + options (3 fields).

Refs #179
Already covered by 'The three roles' in Step 2; remove the duplicate slide
from Step 3 and its 35-viewer-vs-writer screenshot placeholder.

Refs #179
…t actions)

Three slides: overview with prerequisites (S3_ENABLED + S3_* env vars and the
writer role), bucket actions (create, list, search, info, delete, refresh),
and object actions (upload, list, search by prefix, download, metadata,
presigned URLs, delete) — verified against the UI source.

Refs #179
Two new slides under 'Health and metrics' enumerate every field the Endpoint
posts to METRICS_ENDPOINT — identity & version, catalog activity, host load,
and infrastructure flags — gated by IS_PUBLIC=True. Sourced from
api/tasks/metrics_task.py.

Refs #179
When the Endpoint is installed via nationaldataplatform.com registration, the
onboarding process provisions the CKAN sysadmin token, Pre-CKAN API key, etc.
on the host so the EP can use them without manual setup.

Refs #179
Mirror the Access Requests pattern: keep the text slides clean and put the
NetBird dashboard + access-proof screenshots on their own centered, larger
image slides.

Refs #179
…d.io)

Replace the six-slide NetBird section with a single slide that defines NetBird,
links to https://netbird.io, and notes why it matters for NDP (one private
overlay connecting components across machines, no per-service public ports).
Drop the now-unused NetBird screenshot placeholders from the checklist.

Refs #179
On every push touching docs/demo/** (and on workflow_dispatch), build the
deck with Marp CLI (HTML + PDF) and publish the site to GitHub Pages so the
slides are navigable from a public URL.

Refs #179
@rbardaji rbardaji merged commit 47479d9 into main Jun 1, 2026
5 of 7 checks passed
@rbardaji rbardaji deleted the feature/179-demo-documentation branch June 1, 2026 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add end-to-end demo documentation and presentation

1 participant