Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- New docs pages: `/projects/design-system/diagrams` (Mermaid examples) and `/projects/design-system/data-viz` (Chart.js, Leaflet, sparklines)
- Playground expanded with pastel swatches, pill/accent buttons, hero banner, quick-link tiles, three themed Chart.js charts, a Leaflet map with pins + heatmap, and sparklines in a table

### Added — Roboway Project
- Robot fleet management prototype for Aarhus Kommune ("Last Mile" / autonomous delivery robots)
- Single-page mock with seven views: dashboard, live Leaflet map, fleet overview, zone admin, incidents, analytics, and operator portal — DA/EN toggle, responsive

### Added — Opkrævningsoverblik Project
- Consolidated municipal charges overview prototype for Aarhus Kommune citizens
- Interactive mock with login, dashboard, status indicator, charge list, filtering, and 5-year history chart
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Taskfile.yml # Task automation (dev, build, lint
| `deltag-aarhus-timeline` | Deltag Aarhus — Projekttidslinje | No |
| `book-aarhus` | Book Aarhus | No |
| `opkraevningsoverblik` | Opkrævningsoverblik | No |
| `roboway` | Roboway | No |

## Conventions

Expand Down
11 changes: 11 additions & 0 deletions docs/.vitepress/sidebar.mts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,16 @@ const opkraevningsoverblik: DefaultTheme.SidebarItem[] = [
},
]

const roboway: DefaultTheme.SidebarItem[] = [
{
text: 'Roboway',
items: [
{ text: 'Overview', link: '/projects/roboway/' },
{ text: 'Interactive Mocks', link: '/projects/roboway/mocks' },
],
},
]

const designSystem: DefaultTheme.SidebarItem[] = [
{
text: 'Design System',
Expand All @@ -112,6 +122,7 @@ export function sidebar(): DefaultTheme.Sidebar {
'/projects/deltag-aarhus-timeline/': deltagAarhusTimeline,
'/projects/book-aarhus/': bookAarhus,
'/projects/opkraevningsoverblik/': opkraevningsoverblik,
'/projects/roboway/': roboway,
'/projects/design-system/': designSystem,
}
}
Expand Down
4 changes: 4 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,8 @@ features:
details: Samlet overblik over kommunale opkrævninger med statusindikator, opkrævningsliste, filtrering og 5-års historisk udvikling.
link: /projects/opkraevningsoverblik/
linkText: View project
- title: Roboway
details: Kommunal platform til styring og overvågning af autonome robotflåder i Aarhus — med livekort, zoneadministration, hændelseshåndtering og operatørportal.
link: /projects/roboway/
linkText: View project
---
101 changes: 101 additions & 0 deletions docs/projects/roboway/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<small>**Project:** Roboway · **Status:** Prototype · **Date:** April 2026</small>

# Roboway — Robotflådestyring

**Digital platform til styring og overvågning af autonome robotflåder i Aarhus Kommune.**

---

## Baggrund

Aarhus Kommune undersøger muligheden for at integrere autonome leveringsrobotter i byens infrastruktur som en del af "Last Mile"-projektet. Når flere private operatører potentielt skal operere robotflåder i kommunen, opstår et behov for en central platform, der kan give kommunen overblik over og kontrol med robottrafikken — på tværs af operatører, zoner og byforhold.

Prototypen er udviklet som grundlag for et afprovnings- og læringsforløb, og fungerer som visuelt udgangspunkt for diskussion ved projektopstart.

## Formål

Prototypen skal besvare spørgsmålet: **Hvordan kan en central kommunal platform til robotflådestyring se ud og fungere i praksis?**

Konkret skal den:

- Vise hvordan kommunen kan få realtidsoverblik over samtlige robotflåder på tværs af operatører
- Demonstrere zonekontrol, hændelseshåndtering og compliance-overvågning
- Illustrere en operatørportal, hvor operatører modtager byforhold og optimerer ruter derefter
- Fungere som visuelt diskussionsgrundlag for interessenter ved projektopstart

## Hvad prototypen viser

Prototypen er en single-page application med syv sider, navigeret via en sidebar i venstre side. Hele brugerfladen understøtter dansk og engelsk via en sprogvælger (DA/EN) i headeren og er responsiv til mobilvisning.

### Overblik (Dashboard)

Forsiden viser seks KPI-kort øverst: aktive robotter (24/35), aktive zoner (6), hændelser i dag (10), leveringer i dag (147), gennemsnitlig leveringstid (18 min) og CO₂-besparelse (2,4 ton). Nedenunder vises et donut-diagram over robotstatus-fordeling (aktiv, inaktiv, oplader, fejl, offline) samt et linjediagram over aktivitet de seneste 7 dage. Nederst ses en operatørstatus-liste med forbindelsesstatus og en tabel over seneste hændelser.

### Livekort

Et interaktivt Leaflet-kort centreret over Aarhus viser alle 35 robotter som farvekodede cirkelmarkører (farve pr. operatør). Zoner er vist som farvede polygoner: orange (fodgænger), rød (begrænset), grøn (levering) og gul (vejarbejde). Aktive ruter tegnes som stiplede polylines. Robotter med aktive ruter animeres langs deres ruteforløb i realtid. Klik på en robot viser popup med navn, status, batteri (med progress-bar) og hastighed. Fire KPI-kort flyder øverst, og en signaturforklaring vises nederst til venstre.

### Flådeoversigt

Viser alle fem operatører som individuelle kort med forbindelsesstatus, API-sundhed (latenstid, oppetid), antal robotter og kontaktoplysninger. Under hver operatør vises robotchips med ID, status-badge og batteriniveau for hver enkelt robot.

### Zoneadministration

Fire opsummeringskort (zoner i alt, aktive, planlagte, begrænsede) efterfulgt af en detaljeret tabel over alle syv zoner med ikon, type-badge, status, hastighedsgrænse, robotkapacitet, aktive timer og seneste ændringsdato.

### Hændelser

Tre KPI-kort (kritiske, uløste, løste hændelser) og filterfaner (Alle/Kritisk/Advarsel/Info) over en fuld hændelsestabel med 15 hændelser. Tabellen viser tidspunkt, alvorlighed, type, robot-ID, operatør, beskrivelse og løst/åben-status.

### Analyse & Data

Fire KPI-kort for 30-dages perioden. Et linjediagram viser leveringer, aktive robotter og hændelser over tid. Et søjlediagram sammenligner operatørers leveringer og hændelser. Et donut-diagram visualiserer CO₂-besparelse, og tre nøgletal viser elektrisk kørsel, CO₂ sparet og erstattede bilture. En tabel viser de otte mest populære ruter med antal og gennemsnitstid.

### Operatørportal

Simulerer en operatørs visning (NordBots ApS) med et teal-farvet identitetsbanner med compliance-score, forbindelsesstatus, robotantal og API-sundhed. Fem KPI-kort viser compliance, leveringer, leveringstid, sparet forsinkelse og manuelle indgreb.

En "Byforhold — Live Feed" viser otte bykonditioner (restriktioner, vejarbejde, arrangementer, krydsninger, vejr, midlertidige zoner) med alvorlighedsindikator, tidspunkt, type-tag og kvitteringsknap. Kvitteringsfunktionen er interaktiv.

Et compliance-dashboard viser en gauge-chart med score, seks gældende regler (med overholdelsesindikator) og seneste hændelser for operatøren.

En ruteoptimerings-tabel viser seks aktive ruter med oprindelig vs. optimeret tid, besparelse og undgåede byforhold. Et linjediagram sammenligner leveringstid med og uden bydata-optimering over 14 dage.

---

## Krav

- Platformen skal give kommunen realtidsoverblik over alle robotflåder på tværs af operatører, herunder position, status og batteriniveau
- Et interaktivt kort skal visualisere robotpositioner, zoner og aktive ruter med løbende opdatering
- Kommunen skal kunne definere og administrere zoner med differentierede regler for hastighed, adgang og kapacitet
- Hændelser (hastighedsovertrædelser, zonebrud, nærved-sammenstød, forbindelsestab m.fl.) skal logges og kunne filtreres efter alvorlighed
- Operatører skal have en dedikeret portal med adgang til byforhold, compliance-status og ruteoptimering baseret på aktuelle bykonditioner
- Platformen skal understøtte compliance-overvågning, så kommunen kan følge operatørers overholdelse af gældende regler
- Analyse og nøgletal skal give indsigt i leveringsperformance, operatørsammenligning og bæredygtighedseffekt (CO₂-besparelse, erstattede bilture)

---

## Uafklarede spørgsmål

Prototypen er et visuelt diskussionsgrundlag — ikke en implementeringsklar løsning. Inden et reelt system kan bygges, skal en række afhængigheder, ubekendte og forudsætninger afklares.

Punkterne nedenfor er tænkt som udgangspunkt for samtalen og er på ingen måde udtømmende.

### Robotterne og operatørerne

- **Robotternes kapabilitet er ukendt.** Prototypen antager realtidstelemetri (position, batteri, status, hastighed) og fjernkommandoer (stop, omdirigering). Hvilke robotter taler vi reelt om, og hvad kan de levere? Hvilke API'er, protokoller og opdateringsfrekvenser understøtter de?
- **Standard for operatørintegration findes ikke.** Skal kommunen definere en fælles snitflade (datamodel, autentifikation, fejlhåndtering), eller skal platformen oversætte fra hver enkelt operatørs format?
- **Kommandoveje og overstyring.** Kan kommunen reelt stoppe eller omdirigere en robot via platformen, eller går al kontrol gennem operatøren? Hvad er svartider og fallback ved forbindelsestab?
- **Sikkerhed og ansvar.** Hvem hæfter ved hændelser — operatøren, kommunen, robotproducenten? Hvilken rolle spiller platformens data ved efterforskning?

### Datagrundlag

- **Geodata og zoner.** Hvor kommer zonedefinitioner fra? Hvem opdaterer dem, og hvordan distribueres ændringer til operatørerne?
- **Byforhold (live feed).** Vejarbejde, arrangementer, vejr, midlertidige restriktioner — hvilke kilder leverer disse, og er datakvalitet og opdateringsfrekvens tilstrækkelig til ruteoptimering?
- **Compliance-regler.** Hvad er det juridiske grundlag for hastighedsgrænser, zonekrav m.v.? Hvem definerer reglerne, og hvordan håndhæves de teknisk?

---

## Interaktiv prototype

<a href="/research-projects/projects/roboway/mocks/index.html" class="mock-button" target="_blank">Åbn prototypen ↗</a>
8 changes: 8 additions & 0 deletions docs/projects/roboway/mocks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<small>**Project:** Roboway</small>

# Interaktive Mocks

---

**<a href="/research-projects/projects/roboway/mocks/index.html" target="_blank">Roboway — Robotflådestyring ↗</a>**
Single-page prototype med syv sider: dashboard, livekort over Aarhus, flådeoversigt, zoneadministration, hændelser, analyse og operatørportal. Understøtter dansk/engelsk og er responsiv.
28 changes: 28 additions & 0 deletions docs/public/projects/roboway/mocks/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="da">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AarhusWay — Robotflådestyring</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css">
</head>
<body>
<div id="app" class="app-shell">
<div class="sidebar-overlay" id="sidebarOverlay"></div>
<!-- Sidebar -->
<aside class="sidebar" id="sidebar"></aside>

<!-- Main area -->
<div class="main-area">
<header class="header" id="header"></header>
<main class="content" id="content"></main>
</div>
</div>

<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4"></script>
<script src="https://cdn.jsdelivr.net/npm/lucide@0.460.0/dist/umd/lucide.min.js"></script>
<script src="script.js"></script>
</body>
</html>
Loading
Loading