CPSV Editor - Visual Architecture
Layer Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PRESENTATION LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β App.js β β
β β β’ State Management β’ Navigation β’ Layout β’ Import β β
β ββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββ β
β β COMPONENTS β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β β β Service β β Org β β Legal β β Rules β β β
β β β Tab β β Tab β β Tab β β Tab β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β β ββββββββββββ ββββββββββββ βββββββββββββββββββββββββββ β β
β β βParametersβ βChangelog β β PreviewPanel β β β
β β β Tab β β Tab β β (Side Panel) β β β
β β ββββββββββββ ββββββββββββ βββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BUSINESS LOGIC LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UTILS β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β β βconstants β βttlHelpersβ βvalidatorsβ β parseTTL β β β
β β β .js β β .js β β .js β β .js β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DATA β β
β β ββββββββββββββββ ββββββββββββββββ β β
β β βchangelog.jsonβ βroadmap.json β β β
β β ββββββββββββββββ ββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Component Interaction Flow
βββββββββββββββββββ
β User Action β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Tab Component β
β (e.g., Service) β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β State Update β
β (via setXXX) β
ββββββββββ¬βββββββββ
β
ββββββββββββββββΌβββββββββββββββ
β β
ββββββββββΌβββββββββ ββββββββββΌβββββββββ
β App.js State β β PreviewPanel β
β (Updated) ββββββββββββ (Auto-update) β
ββββββββββ¬βββββββββ βββββββββββββββββββ
β
ββββββββββΌβββββββββ
β TTL Generation β
β (ttlHelpers) β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Download TTL β
βββββββββββββββββββ
State Management Flow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β App.js State β
β β
β service = { identifier, name, description, ... } β
β organization = { identifier, name, homepage } β
β legalResource = { bwbId, versionDate, title, ... } β
β temporalRules = [{ id, uri, extends, validFrom, ... }] β
β parameters = [{ id, notation, label, value, ... }] β
β β
βββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββ¬ββββββββββββ
β β β β β
ββββββΌβββββββββΌββββββββββΌββββββββββΌββββββββββΌβββββββ
βService ββ Org ββ Legal ββ Rules ββParametersβ
β Tab ββ Tab ββ Tab ββ Tab ββ Tab β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β β
βββββββββββ΄ββββββββββ΄ββββββββββ΄ββββββββββ
β
βββββββΌβββββββ
β generateTTLβ
β (Utils) β
βββββββ¬βββββββ
β
ββββββββΌββββββββ
βPreviewPanel β
β(Live Display)β
ββββββββββββββββ
Import/Export Data Flow
Import Flow
ββββββββββββββββ
β TTL File β
β (uploaded) β
ββββββββ¬ββββββββ
β
ββββββββΌβββββββββββ
β parseTTL() β
β (Utils) β
ββββββββ¬βββββββββββ
β
ββββββββΌβββββββββββ
β Extract Data: β
β β’ Service β
β β’ Organization β
β β’ Legal β
β β’ Rules β
β β’ Parameters β
ββββββββ¬βββββββββββ
β
ββββββββΌβββββββββββ
β Update App.js β
β State β
ββββββββ¬βββββββββββ
β
ββββββββΌβββββββββββ
β Populate Tabs β
β (All 6 tabs) β
βββββββββββββββββββ
Export Flow
ββββββββββββββββ
β App.js β
β State β
ββββββββ¬ββββββββ
β
ββββββββΌβββββββββββββββ
β generateTTL() β
β β’ Service TTL β
β β’ Organization TTL β
β β’ Legal TTL β
β β’ Rules TTL β
β β’ Parameters TTL β
ββββββββ¬βββββββββββββββ
β
ββββββββΌβββββββββββ
β Combine Sectionsβ
β Add Namespaces β
ββββββββ¬βββββββββββ
β
ββββββββΌβββββββββββ
β Download .ttl β
β File to Disk β
βββββββββββββββββββ
Split-Screen Layout
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HEADER β
β [ποΈ TTL Editor] [π Import] [ποΈ Show Preview] [ποΈ Clear] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β EDITOR (Left) β PREVIEW (Right - Optional) β
ββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββ€
β ββββββββββββββββββββββββββββ β βββββββββββββββββββββββββββββββββ β
β β TAB NAVIGATION β β β Live TTL Preview [Copy] β β
β β Service | Org | Legal β β βββββββββββββββββββββββββββββββββ€ β
β ββββββββββββββββββββββββββββ β β @prefix cpsv: <...> . β β
β ββββββββββββββββββββββββββββ β β @prefix cv: <...> . β β
β β β β β β β
β β TAB CONTENT β β β <service-uri> a β β
β β (Form Fields) β β β cpsv:PublicService ; β β
β β β β β dct:title "..."@nl ; β β
β β [Input fields...] β β β dct:description "..."@nl . β β
β β β β β β β
β β [More fields...] β β β [Updates automatically β β
β β β β β as you type!] β β
β β β β β β β
β ββββββββββββββββββββββββββββ β βββββββββββββββββββββββββββββββββ€ β
β β β 130 lines β β
β [β
Validate] [β¬οΈ Download] β βββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββ
β FOOTER β
β TTL Editor - Part of RONL Initiative β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
File Dependencies
App.js
βββΊ components/tabs/
β βββΊ ServiceTab
β βββΊ OrganizationTab
β βββΊ LegalTab
β βββΊ RulesTab
β βββΊ ParametersTab
β βββΊ ChangelogTab
βββΊ components/PreviewPanel
βββΊ utils/
β βββΊ constants (NAMESPACES, OPTIONS)
β βββΊ ttlHelpers (generateTTL functions)
β βββΊ validators (validation functions)
β βββΊ parseTTL (import parsing)
βββΊ lucide-react (Icons)
ChangelogTab
βββΊ data/
βββΊ changelog.json
βββΊ roadmap.json
Utils (parseTTL)
βββΊ config/vocabularies_config
Technology Stack
βββββββββββββββββββββββββββββββββββββββββββ
β React 18.3.1 β
β (Component-based UI framework) β
βββββββββββββββββ¬ββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββββββββββββ
β Tailwind CSS 3.x β
β (Utility-first styling) β
βββββββββββββββββ¬ββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββββββββββββ
β Lucide React 0.263.1 β
β (Icon library) β
βββββββββββββββββ¬ββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββββββββββββ
β Create React App (CRA) β
β (Build tooling & dev server) β
βββββββββββββββββββββββββββββββββββββββββββ
Standards & Vocabularies
CPSV-AP 3.2.0 ββββββ
β
RONL Vocabulary ββββΌβββΊ TTL Generation
β
CPRMV Vocabulary βββ€
β
ELI (Legal) ββββββββ€
β
Dublin Core ββββββββ€
β
SKOS βββββββββββββββ€
β
Schema.org βββββββββ