Projektets yta
YtaVisar projektets läge – beslut, riktningar, öppna frågor och nästa steg – så att teamet och verksamheten ser samma bild efter varje samtal.
källa: apps/projekt/src/app/(projekt), apps/projekt/src/projektytauppdaterad:
Ansvar
- Bära resultatet av samtalen ordagrant, som typad data. Läget på / skrivs över när läget ändras och räknar fram sina datum och antal ur tidslinjen; historiken läggs till som händelser. En ny anteckning läggs i samtal.anteckningar och kopplas till sin händelse; äldre anteckningar ändras inte. Hålla isär läget: beslutat är grönt (klart), riktning blått, öppet gult (väntar), krock och risk rött – alltid som kantlinje eller chip, aldrig som hel yta.
- Visa samma innehåll på fyra nivåer under /ritning: korta meningar, ett ritningsblad, en interaktiv modell och en förklarfilm. Visa planen för start.sundsvall.dev under /material/plan – externt, internt och kanske – med status för varje punkt: inte påbörjad, påbörjad, att godkänna eller godkänd, och vad som finns i dag.
- Ordna projektet efter typ, inte tillfälle (ADR-031, ADR-032, ADR-033): en topprad på alla projektets sidor med en huvudmeny efter header A som visar alla delar av tjänsten – Start, Vision, Status, Tidslinje, Händelser, Vägval, Att göra och Funktioner i en rad under avsändaren, Dokument och Teknik som utfällbara grupper, under md en Meny-knapp med samma lista. Menyn följer WCAG 2.2 AA: disclosure-mönstret med aria-expanded och aria-current, Escape stänger, ingen rullning i sidled, en hopplänk till <main id="innehall"> och klistrad bara från lg. Ett tillfälle blir aldrig en menypost; en ny sorts innehåll blir en sida i meny.ts. Under /beslut-och-fragor står varje beslut, riktning och öppen fråga med ett fast ankare och mötet där den togs upp, och arkitekturbesluten sist; mötets sida visar posterna åt andra hållet. Toppraden bär kommunens logotyp, en lodrät linje och produktnamnet enligt kommunikationsguidens mall.
- Visa projektets tidslinje under /tidslinje som ingången till allt som hänt – varje möte, workshop, leverans, milstolpe och ADR på sitt datum från det första samtalet 18 september, lodrät så att den håller hur länge projektet än pågår: överst slutpunkten 31 december 2026, sedan tomma månader och det som väntar, markören för i dag och allt som hänt senast först. Linjen står längst till vänster och alla kort till höger om den, vart och ett med en egen prick på linjen och en stump fram till kortet; datumet står i kortet. Linjen är hel bakåt från i dag och streckad framåt, så att den fylls på uppåt mot slutpunkten; en händelse med datum efter i dag visas som planerad i sin månad. Ett klick på ett slag eller spår visar bara det, Allt och Alla spår visar allt igen, och en rad säger vad som visas och hur många; filtret bor i adressen (?slag=mote,workshop&spar=verksamhet) och ett ankare per händelse. Arkitekturbesluten fälls ihop till en rad per dag, eftersom sidan skrivs för vem som helst. Varje slag har en ritad SVG-symbol i en rund bricka – talbubblor, tavla, flagga, paket, dokument med bock och klocka för det kommande – och den hopfällda panelen Så läser du tidslinjen överst säger med en mening vad linjen och varje symbol betyder. Ge varje möte och workshop med eget material en sida under /handelser/<datum>-<namn>: samtalsanteckningen på standardsidan, eller en egen mapp med samma id. Id ändras aldrig. Gamla adresser – allt under /projekt, /projekt/workshop och /projekt#anteckning-<datum> – leds dit.
- Visa workshopen 8 oktober under /handelser/2026-10-08-workshop: varje post-it-lapp ordagrant, sorterad i ämnen under kluster och riskområden, vad den andra fotoserien tillförde, vad prickröstningen efteråt gav och citat ur samtalet – med hela samtalsrapporten under /handelser/2026-10-08-workshop/samtalet.
- Visa roller, inte namn. Hassan och Hanna är personas; all data i skisser och modell är syntetisk. Allt är öppet utom ritningen. Mötenas anteckningar under /handelser granskades 15 oktober 2026 och är öppna.
Filer
| Sökväg | Roll |
|---|---|
| app/(projekt)/innehall.ts | Allt bokens innehåll: de fyra frågorna, lagerbilden, idén i fem delar, beslut, öppna frågor, nästa steg, samtalen och källorna. |
| app/(projekt)/layout.tsx | Projektets layout: toppraden över varje sida. Ingen indexering. |
| projektyta/Topprad.tsx | Toppraden på alla projektportalens sidor, också visionen och rösten: hopplänken, kommunens avsändare, kontomenyn för den inloggade och huvudmenyn. Läser kontokakan, så sidorna renderas vid varje anrop. |
| projektyta/Kontomeny.tsx | Kontot i övre högra hörnet: blå identitetsikon med initialer och namn, som fäller ut Mitt konto, Byt lösenord, Konton (admin) och Logga ut. Disclosure-mönstret som huvudmenyn. Utan inloggning står Logga in på samma plats. |
| projektyta/Hero.tsx | Sidans hero: rubrik och ingress på --color-page-deep under toppraden, samma på alla projektets sidor. Den aktiva menyfliken har samma färg och blöder in i den (ADR-033). |
| projektyta/meny.ts | Huvudmenyn som data: raden, grupperna, vilka vägar som hör till varje sida och vilken sida man är på. Med tester. |
| projektyta/Huvudmeny.tsx | Huvudmenyn enligt WCAG 2.2 AA (ADR-033): raden under avsändaren efter header A, med utfällbara grupper, och Meny-knappen med samma lista under md, och --topprad-hojd för det som klistrar under raden. |
| app/(projekt)/page.tsx | Första sidan med läget – se dok för projektets första sida. Leder gamla ankare till samtalens sidor. |
| apps/projekt/next.config.ts | Omledningarna från /projekt: /projekt till /, /projekt/workshop/* till workshopsidan och /projekt/* till samma väg på roten. Permanenta. |
| app/(projekt)/lage.ts | Läget räknat ur tidslinjen: det senaste mötet, datumet och antalen på frågekorten. Med tester. |
| app/(projekt)/register.ts | Registret: beslut, riktningar och öppna frågor som typade poster med fast ankare och sina möten, plus arkitekturbesluten. Med tester. |
| app/(projekt)/beslut-och-fragor/page.tsx | Fliken Vägval (registret för beslut och frågor, vägen /beslut-och-fragor): de tre lägena förklarade överst, en post per beslut och fråga, arkitekturbesluten sist. |
| app/(projekt)/material/plan/plan.ts | Planen för start.sundsvall.dev som data: grupperna, punkterna, status och vad som finns i dag. Med tester. |
| app/(projekt)/material/plan/page.tsx | Planens sida: en stapel per status överst, sedan en lista per grupp på Radlista, samma som att göra-listan – punkten och statusen på en rad, och ett klick fäller ut beskrivningen, vad som finns i dag och länken. |
| app/(projekt)/_delar/Brodsmula.tsx | Var sidan ligger, på alla sidor under en flik. |
| app/(projekt)/_delar/GamlaAnkare.tsx | Leder /projekt#anteckning-<datum> och #samtal vidare i klienten, där ankaret finns. |
| app/(projekt)/handelser/page.tsx | Händelser i huvudmenyn, bredvid Tidslinje: mötena och workshopparna med egen sida, med material och antalet uppgifter. Här bor händelserna; tidslinjen visar dem på sitt datum. Öppen, som mötenas sidor. |
| app/(projekt)/handelser/[id]/page.tsx | Standardsidan för en händelse: rubrik, spår, beslut, samtalsanteckningen, samma dag och föregående och nästa. Brödsmulan leder till Händelser. |
| app/(projekt)/material/page.tsx | Det som inte hör till ett datum: ritningen, lagerbilden, visionen, källorna och devportalen. |
| varumarke/Varumarke.tsx | Kommunens avsändare i toppraden: logotyp, lodrät linje och produktnamn. |
| app/(projekt)/_delar/Byggstenar.tsx | Kapitel, rubriker, notiser, kodblock och lägeschip som båda sidorna delar. |
| app/(projekt)/_delar/Iden.tsx | Idén i fem delar: påståendena som utfällbara rader, var och en med sitt bevis. |
| app/(projekt)/_delar/Skisser.tsx | Skisserna av tänkta ytor, byggda med primitiverna. Exempeldata. |
| app/(projekt)/_delar/Flodesbild.tsx | Flöden ritade som SVG ur ett rutnät i datan. |
| app/(projekt)/_delar/Samtal.tsx | Temadiagrammet och en samtalsanteckning, för händelsens sida. |
| app/(projekt)/ritning/innehall.ts | Ritningens fyra nivåer som data, inklusive filmens scener. |
| app/(projekt)/ritning/adapter.ts | Modellen bakom Kör en adapter: hämta, översätt, kontrollera. Ren logik med tester. |
| app/(projekt)/ritning/Labb.tsx | Den interaktiva nivån: kör en adapter, slå av en modul, dela en adapter. |
| app/(projekt)/tidslinje/Markor.tsx | Händelsens symbol: en ritad SVG på 24-rutnät i en rund bricka, i tre storlekar. Samma symbol överallt där slaget visas. |
| app/(projekt)/tidslinje/slag.ts | Händelsens typ – id, slag, spår, anteckning, egen sida – och hjälparna för adresser och datum, utan data så att klienten kan använda dem. |
| app/(projekt)/tidslinje/handelser.ts | Tidslinjens starthändelser (händelserna bor i databasen, se tidslinje-och-vagval), slutpunkten och det som kommer. Besluten hämtas ur beslutsregistret med datum ur adrDatum; ett test fäller bygget när en ADR saknas. |
| app/(projekt)/tidslinje/page.tsx | Tidslinjen: heron med dagar sedan start och kvar till slutpunkten, och i dag räknat i svensk tid vid varje visning. |
| app/(projekt)/organisation/organisation.ts | Projektets organisation som data: personerna en gång var, grupperna som pekar på dem och roller som skiljer sig från titeln. Med tester på id, grupper och att sidan är dold. |
| app/(projekt)/organisation/page.tsx | Den dolda sidan /organisation: grupperna från styrgrupp till utvecklingsteam, ett kort per person med titel, arbetsplats, e-post och de andra grupper personen är med i. |
| app/(projekt)/tidslinje/Handelselista.tsx | Den lodräta tidslinjen från slutpunkten till starten: linjen till vänster med en prick och en stump per kort, i dag, det som väntar och händelserna dag för dag, med filter på slag och spår som bor i adressen. |
| app/(projekt)/handelser/2026-10-08-workshop/innehall.ts | Workshopens lappar som data: önskemål och risker med tavla, färg, roll och ämne – varje ämne hör till ett kluster eller riskområde – plus budskapen, speglingen och frågorna att ta vidare. |
| app/(projekt)/handelser/2026-10-08-workshop/page.tsx | Sammanställningen: önskebilden, riskerna, spegeln, hela tavlan, prioriteringen, samtalet och att ta vidare. |
| app/(projekt)/handelser/2026-10-20-ux-och-design/page.tsx | Uppstarten med UX och design: deltagarna, anteckningarna avsnitt för avsnitt ur sammanfattningen (innehall.ts, mötet spelades inte in), nästa steg, riktningarna i Vägval och uppgifterna från mötet. |
| app/(projekt)/handelser/2026-10-23-utbildning-personlig-assistent/page.tsx | Utbildningen i Personlig assistent i Eneo: de inbjudna, demon med skärmdumpen (bilder/demo.png, fiktiva demouppgifter), huvudbudskapet, notisen om de enskilda utbildningarna och nästa steg, ur sammanfattningen (innehall.ts). |
| app/(projekt)/handelser/2026-10-08-workshop/prioritering.ts | Prickröstningens sedlar som data, avskrivna ur röstfilen, och rangordningen per lapp, ämne, kluster och spår räknad ur dem. |
| apps/projekt/scripts/uppdatera-prioritering.ts | Skriver om sedlarna, datumet, antalet koder och om röstningen var öppen ur en hämtad röstfil. |
| app/(projekt)/handelser/2026-10-08-workshop/citat.ts | Citaten ur maskintranskriberingen: ordagranna utdrag med femminutersblocket som källa, utan talarnamn. |
| app/(projekt)/handelser/2026-10-08-workshop/samtal.ts | Vad samtalet tillför utöver lapparna, med citat och rapportens poster, och åtagandena från samtalet. |
| app/(projekt)/handelser/2026-10-08-workshop/samtalsrapport.ts | Samtalsrapporten som data, ordagrant ur rapporten: elva avsnitt, posterna B01–B29 och R01–R24, listor och tabeller. |
| app/(projekt)/handelser/2026-10-08-workshop/Citat.tsx | Citatkortet, citatraden, noten om återgivningen och flikarna mellan sammanställningen och rapporten. |
| app/(projekt)/handelser/2026-10-08-workshop/samtalet/page.tsx | Samtalsrapporten som helhet, med innehållsförteckning, ankare per post och AI-märkning. |
| app/(projekt)/handelser/2026-10-08-workshop/Prioritering.tsx | Kapitlet om prioriteringen: läget, budskapen, spåren, staplarna och lapparna i topp. |
| app/(projekt)/handelser/2026-10-08-workshop/Lapp.tsx | En post-it-lapp. Lappfärgerna och handstilen är ett medvetet brott mot profilen och bor bara här. |
| app/(projekt)/handelser/2026-10-08-workshop/Lappvagg.tsx | Alla lappar i ämnesblock under sitt kluster eller riskområde, med filter på pass, roll, riskområde och det den andra fotoserien tillförde. |
| app/(projekt)/ritning/Film.tsx | Förklarfilmen: sju scener i SVG, med uppläsning som tillval och utan rörelse vid minskad rörelse. |
API
| Namn | Signatur | Beskrivning |
|---|---|---|
| korAdapter | (id: SystemId, { installerad, trasig }: { installerad: boolean; trasig: boolean }) => Korning | Kör den syntetiska adaptern. Saknas ett fält som uppgift@1 kräver stoppas uppgiften i kontrollsteget. |
Kontrakt
- Källan är projektboken efter workshopen om arkitektur och teknik, uppdaterad 7 oktober 2026, byggd på maskintranskriberingar av samtalen 18 september och 6 oktober. De två designskisserna i originalet tas inte med som bilder; det som ska tas med och det som var fel i dem står som text.
- Skisserna i boken är bilder av en tänkt yta, inte startsidan. De följer designsystemet men är ingen modul och ska inte återanvändas som komponenter.
- Uppgift@1, person@1 och appmanifestet i boken är skisser från samtalen, inte kontrakt i module-sdk. Ett kontrakt blir verkligt först genom ett beslut i docs/beslut/.
- Inget inlägg utan godkännande (ADR-035): varje händelse och varje rad i adrDatum godkänns av Jari Koponen innan den skrivs in, och blir sedan ett kort i teamschatten. Tidslinjen växer i samma commit som arbetet: ett möte, en workshop, en leverans eller en milstolpe blir en post i handelser.ts med ett id <datum>-<namn>. Har den eget material får den en sida – anteckning för en samtalsanteckning, egenSida och en mapp handelser/<id>/ för något större. Menyn och Läget ändras inte. En ny ADR får sin punkt genom en rad i adrDatum – utan den fäller testet bygget.
- Workshopsidan bygger på fotona av tavlorna från 8 oktober 2026 i två serier. Lapparnas text är ordagrann; det som inte går att läsa står med …. Klustren, budskapen och spegeln är sammanställningens tolkning, inte beslut. Lappfärgerna (gul, orange, blå, rosa, grön) och handstilen Caveat är ett medvetet undantag från tokens och betyder varken status eller AI.
- Prioriteringen bygger på en avskrift av röstfilen (rostning.json) den dag den hämtades – inte på röstningen live. Sedlarna är anonyma, utan kod och nummer. Siffrorna räknas ur sedlarna; spåren och budskapen är sammanställningens tolkning. Ett test fäller bygget om en prick pekar på en lapp vars text har rättats.
- Samtalet bygger på maskintranskriberingen av workshopen (0:00–110:39) och den AI-granskade samtalsrapporten ur den, båda daterade 8 oktober och inlästa 13 oktober 2026. Transkriberingen återges inte: den har namn, en känslig rekryteringshändelse och eftermötesprat. Citaten är ordagranna utdrag – … är utelämnat, [ ] är ett rättat transkriberingsfel eller ett ord för sammanhanget – och ingen talare namnges. Samtalsrapporten återges ordagrant och märks ✦ AI-genererat; dess AI-analyser och AI-förslag tonas som AI. Läsningen av vad samtalet tillför är sammanställningens, inte rapportens.
- Prioriteringen uppdateras så här, till exempel när röstningen stängs: läs /app/data/rostning.json ur containern (Dokploys läsning av containerfiler ger base64, som skriptet tar direkt), kör node apps/projekt/scripts/uppdatera-prioritering.ts <fil> och sedan testerna. Siffror och påståenden om utfallet räknas om av sig själva. För hand läses spåren i prioritering.ts, rubrikerna på budskapen och tidslinjens händelse om prioriteringen om, eftersom de är tolkning.
- De öppna frågorna är formulär med förslaget förvalt. Valet sparas inte – det är ett sätt att tänka igenom frågan, inte en omröstning.
Beroenden och beslut
Beslut: ADR-012, ADR-026, ADR-031, ADR-032
Levererar: /tidslinje, /handelser, /handelser/:id, /beslut-och-fragor, /material, /material/plan, /ritning, /organisation (dold), Topprad, Huvudmeny och Hero, omledningar från /projekt, lagerbilden, beslut och riktningar, öppna frågor med förslag, adaptermodellen korAdapter
Kvarstår
- Fliken Spåren finns inte än (ADR-031, steg 5). Spåren är data på händelserna men har inga egna sidor.
- Temadiagrammet jämför de två första samtalen och växer inte med fler.
- Innehållet förs in för hand. En ny samtalsanteckning skrivs i innehall.ts tills det finns ett flöde som sammanställer samtal.
15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui