All diagrams //3 of 3

Open Fugro Cookie Report Script
🌙
Fugro Cookie Report Script
20 Jul, 2026
sequenceDiagram
    participant CookieReportScript
    participant Component
    participant Storyblok
    participant Editor
    CookieReportScript<<-->>Component:
    Editor->>Storyblok:
    Component->>Storyblok:
Open Fugro - Storyblok S3 Backup
Fugro - Storyblok S3 Backup
01 Jun, 2026
graph TD  
    fsb2 --> aws1
    fsb6 <--> aws1
    m2 --> aws1

subgraph s2["Fugro Storyblok (via Apps)"]
  fsb6(["Storyblok Cloudformation Backup Scheme (YML)"])

  fsb3 --> fsb4
  fsb3 --> fsb1
  fsb3["Storyblok"]
  fsb2(["SB App: S3 Backup"])
  fsb4(["trigger backup"])
  fsb1(["backup schedule"])
  fsb1 --> fsb2
  fsb4 --> fsb2
end

subgraph s1["AWS"]
  aws1["CloudFormation"]
  aws1 --> aws2
  aws2(["S3"])
  aws3["Bucket"]
  aws2 --> aws3
  aws4(["IAM"])
  aws5("Allowed Role")
  aws4 <--> aws5 <--> aws1
end

subgraph s3["Storyblok MAPI"]
  m1(["trigger"])
  m1 --> m3
  m2(["backup"])
  m3["Run backup script"]
  m3 --> m2
end
Open ROVC Architecture
🦑
ROVC Architecture
26 May, 2026
---
config:
  theme: redux
  layout: elk
---
flowchart TB
 subgraph s1["Type of Content"]
        n2["Course"]
        n3["Study"]
        n4["Exam"]
        n5["Knowledge Test"]
        n6["News"]
        n7["Discipline"]
        n8["Quiz"]
        n9["FAQ"]
        n10["Other"]
  end
 subgraph s3["Slug type"]
        subgraph s5["Aanbod"]
          n25["/aanbod"]
          n25 --> n41["[product]"] & n42["Aanbod Page"]
          n41 --> n63["[product] Page"]
        end

        subgraph s6["Bestellen Kennistest"]
          n26["/bestellen-kennistest"]
          n26 --> n58["[testSlug]"]
          n58 --> n59["[step]"]
          n59 --> n60(["Layout"]) & n85["[step] Page"]
        end
        
        subgraph s7["Inschrijven Cursus"]
          n30["/inschrijven-cursus"]
          n30 --> n65["[courseId]"]
          n65 --> n66["step"]
          n66 --> n67(["Layout"]) & n68["[step] Page"]
        end

        subgraph s13["Bevestiging"]
          n27["/bevestiging"]
          n27 --> n62["Bevestiging Page"]
        end

        subgraph s11["Inschrijven examen"]
          n31["/inschrijven-examen"]
          n31 --> n69["[examId]"]
          n69 --> n70["[step]"]
          n69 --> n73["[examId] Page"]
          n70 --> n71(["Layout"]) & n72["[step] Page"]
        end

        subgraph s14["Cursus"]
            n28["/cursus"]
            n28 --> n53["[course]"]
            n53 --> n56["[course] Page"]
        end

        subgraph s12["Opleiding"]
          n35["/opleiding"]
          n35 --> n45["[study]"]
          n45 --> n55["[study] Page"]
        end

        subgraph s15["Kennisgebied"]
            n32["/kennisgebied"]
            n32 --> n80["[discipline]"]
            n80 --> n81["[subPage]"]
            n80 --> n82["[discipline] Page"]
        end

        subgraph s4["10 Vragentest"]
          n24["/10-vragentest"]
          n24 --> n43["10 Vragentest Page"] & n44["[Quiz]"]
          n44 --> n46["[step]"] & n49["Resultaat Page"] & n50["Start Page"] & n51["Uitslag Page"]
          n46 --> n47(["Layout"]) & n48["[Step] Page"]
        end

        subgraph s16["Examen"]
          n29["/examen"]
          n29 --> n64["[exam]"]
          n64 --> n74["[examId] Page"]
        end
        
        subgraph s8["Nieuws"]
          n33["/nieuws"]
          n33 --> n77["[article]"]
          n33 --> n78["Nieuws Page"]
          n77 --> n79["[article] Page"]
        end

        subgraph s19["[...slug]"]
          n39["/[...slug]"]
          n39 --> n52["[...slug] page"]
        end

        subgraph s18["Opleidingsplan"]
          n36["/opleidingsplan"]
          n36 --> n83["[studyId]"]
          n83 --> n84["[step]"]
          n84 --> n86["[step] Page"]
        end

        subgraph s17["Offerte"]
            n34["/offerte"]
            n34 --> n57["[courseId]"]
            n57 --> n75["[step]"]
            n75 --> n76["[step] Page"]
        end

        subgraph s9["Planningsverzoek"]
          n37["/planningsverzoek"]
          n37 --> n87["Planningsverzoek Page"]
        end
        
        subgraph s10["Planningsverzoek examen"]
          n38["/planningsverzoek-examen"]
          n38 --> n61["Planningsverzoek Examen Page"]
        end
  end
    n1["Kontent AI CMS"] --> n21["Edit Content"] & s1
    s1 --> n12["Custom Elements"] & n11["Get Full Slug"]
    s1 <--> n21
    n15["Tree URL"] --> n16(["Full Slug Outcome"])
    n16 --> n17["Kontent AI SDK - Get Custom Elements"]
    n20["Display Full Slug"]
    n20 --> n21
    n12 --> n15
    n11 ---> n99
    n22["Next.JS app"] --> n23["Router"]
    n23 --> s10
    n23 --> s11
    n23 --> s12
    n23 --> s5
    n23 --> s13
    n23 --> s9
    n23 --> s8
    n23 --> s17
    n23 --> s19
    n23 --> s18
    n23 --> s14
    n23 --> s16
    n23 --> s15
    n23 --> s4
    n23 --> s7
    n23 --> s6
    n23 --> n40
    n88 --> n99
    n88 --> n101
    n88 --> n102
    n88 --> n103
    n88 --> n98
    n106 --> n20

subgraph s20["ApiLayer"]
  n40["API"]
  n40 --> n88["Auth"]
  n98["draft"]
  n99["generate-full-slug"]
  n100["kai"]
  n100 --> n104["field-editor"]
  n104 --> n105["full-slug"]
  n99 --> n106("Response: Get Full Slug")
  n101["revalidate-edge-config"]
  n102["revalidate-non-pdp"]
  n103["revalidate-pdp"]
end

    n1@{ shape: hex}
    n21@{ shape: diam}
    n12@{ shape: card}
    n22@{ shape: hex}
    n41@{ shape: trap-b}
    n44@{ shape: trap-b}
    n45@{ shape: trap-b}
    n46@{ shape: trap-b}
    n53@{ shape: trap-b}
    n57@{ shape: trap-b}
    n58@{ shape: trap-b}
    n59@{ shape: trap-b}
    n64@{ shape: trap-b}
    n65@{ shape: trap-b}
    n66@{ shape: trap-b}
    n69@{ shape: trap-b}
    n70@{ shape: trap-b}
    n75@{ shape: trap-b}
    n77@{ shape: trap-b}
    n80@{ shape: trap-b}
    n81@{ shape: trap-b}
    n83@{ shape: trap-b}
    n84@{ shape: trap-b}