ARK Infrastructure ```plantuml !include https://raw.githubusercontent.com/datadavev/C4-PlantUML/master/C4_Component.puml System_Boundary(arks, "ARKs.org"){ System(naans,"NAAN Registry","The NAAN registry") System(arkr, "ARK NAAN Resolver", "Redirect service for ARK NAANs") Person(admin,"Admin","NAAN registry administrator") } System(res, "ARK Resource Provider", "Holds resources identified by ARKs") Person(owner, "Owner", "NAAN record owner") Person(user, "User", "ARK record user") Rel(naans, arkr, "Informs") Rel(admin, naans, "Manages") Rel(admin, arkr, "Manages") Rel(arkr, res, "Redirects to") Rel(owner, naans, "Create, Edit NAAN") Rel(owner, res, "Manage resources") Rel(user, arkr, "Resolve") Rel(arkr, user, "Metadata") Rel(user, res, "Access") Rel(res, user, "Metadata") ``` Current situation ```plantuml !include https://raw.githubusercontent.com/datadavev/C4-PlantUML/master/C4_Component.puml System_Ext(n2t, "n2t.net", "N2T provides top level scheme resolution (e.g. ark:, doi:, chebi:, ...)") System_Ext(idorg, "identifiers.org", "Identifiers.org provides top level scheme resolution similar to N2T") System(arkr, "ARK NAAN Resolver", "Redirect service for ARK NAANs") System(res, "ARK Resource Provider", "Holds resources identified by ARKs") Rel(arkr, n2t, "ARK Redirect") Rel(n2t, res, "ARK Redirect") Rel(idorg, n2t, "ARK Redirect") ``` Future ```plantuml !include https://raw.githubusercontent.com/datadavev/C4-PlantUML/master/C4_Component.puml System_Ext(n2t, "n2t.net", "N2T provides top level scheme resolution (e.g. ark:, doi:, chebi:, ...)") System_Ext(idorg, "identifiers.org", "Identifiers.org provides top level scheme resolution similar to N2T") System(arkr, "arks.org NAAN Resolver", "Redirect service for ARK NAANs") System(res, "ARK Resource Provider", "Holds resources identified by ARKs") Rel(n2t, arkr, "ARK Redirect") Rel(idorg, arkr, "ARK Redirect") Rel(arkr, res, "ARK Redirect") ``` NAAN Registry ```plantuml !include https://raw.githubusercontent.com/datadavev/C4-PlantUML/master/C4_Component.puml System_Boundary(github, "GitHub"){ System(priv,"naan_reg_priv","Private NAAN repository") System(pub,"naan_reg_public","Public NAAN repository") } System(ui,"Web UI","Web interface operating on Vercel or similar") System_Ext(resolver,"ARK Prefix Resolver", "Resolve ARK records by prefix and redirect to registered service") Person(admin,"Admin","NAAN registry administrator") Person(owner, "Owner", "NAAN record owner") Rel(ui, priv, "Create, Update NAAN records") Rel(priv, pub, "Records updated by action") Rel(owner, ui, "Create or update record") Rel(admin, priv, "Review all creates or updates") Rel(priv, admin, "Notify of PR for NAAN") Rel(pub, resolver, "Notify registry updated") Rel(resolver, pub, "Pull NAAN records, update services") ``` ```plantuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml title NAANs,ARKs Container(NS, "NAAN Schema", "NAAN Record<br />formal definition") Container(NE, "NAAN Editor", "Web UI for NAAN<br/>create and update") Container(NR, "NAAN Records", "Repository of NAAN records") Container(NPR, "Public NAAN Records", "Repository of public NAAN records") Rel(NS, NE, "Informs") Rel(NS, NR, "Defines") Rel(NS, NPR, "Defines") Rel(NE, NR, "Create, Update\n[Using GH Issue]") Rel(NR, NPR, "Export\n[Using GH Action]") Container(AO,"arks.org", "ARK NAAN resolver") Rel(NPR, AO, "Configure\n[webhook]") Container_Ext(N2T, "n2t.net", "N2T Scheme Resolver") Rel(N2T, AO, "Redirect") ```