Devportalen
Katalogen
Allt i ekosystemet med sin källa och sina relationer. Sök här innan du skapar något nytt – det är katalogens enda syfte.
Skal
Appen som komponerar allt.
Paket
Delade paket i monorepot.
- @startsidan/tokens
tokensDesigntokens som Tailwind-tema (@theme) plus basregler. Porterade 1:1 ur prototypens :root. Enda stället där en färg får definieras.ByggtGemensam - @startsidan/ui
uiPrimitiverna. Egna komponenter med V3:s mått, byggda ovanpå shadcn/ui så att Radix bär tillgängligheten. Modulerna känner bara till det här API:et.Byggt – shadcn som grund (ADR-008)Gemensam - @startsidan/dokumentation
dokumentationDokumentationsmodellen för båda applikationerna (ADR-011, ADR-040): Katalogpost, Dok, Block och dokumentationskontraktet, textvyerna för agenter och Blockvy för människor. Devportalen och projektportalens /teknik dokumenterar sina delar i samma form och efter samma kontrakt.ByggtGemensam - @startsidan/gemensamt
gemensamtDet som båda applikationerna behöver och som inte är design eller AI (ADR-040): beslutsregistret, kommunens avsändare i toppraden, spärren mot gissningar, kontrollen av ?vidare= och innehållsversionen för agentfilerna. Varje del har en egen exportväg, så att en app bara drar in det den använder.ByggtGemensam - @startsidan/module-sdk
module-sdkKontraktet mellan skalet och modulerna: ModuleManifest, UserContext, slots, routes, sidor (PageManifest) och flödestyperna. Ett nytt fält här måste bäras av minst två moduler innan det blir permanent.ByggtStartsideportalen - @startsidan/flow-engine
flow-engineSamtalsflödesmotorn. Lyfts ur modulen felanmalan när ett andra flöde kan definieras deklarativt på under en timme utan ny UI-kod. Klarar den inte det testet är den inte redo att lyftas.Planerad – två flöden finns nu, underlaget för M4 är komplettStartsideportalen
Modul
Fristående funktioner med manifest mot skalet.
- oversikt
oversiktNyckeltalsraden: rekryteringar och ledighetsansökningar för chef – chefens budget och sjukfrånvaro kommer ur dialogstod – och saldo och flex för medarbetare.ByggdStartsideportalen - agera
ageraUppgifterna från alla tjänster: kortet "Att agera på" med det som väntar, och sidan Mina uppgifter med allt – öppet och hanterat, med källa och frist. Äger ingen egen data utan läser det modulerna bidrar med (ADR-007), i samma stund, så listan växer av sig själv när fler moduler byggs och visar alltid tjänsternas läge. Samma lista läser Min AI när användaren frågar om sina uppgifter.ByggdStartsideportalen - arenden
arendenÄrendetabellen, plus actions för de ärenden som kräver något av användaren.ByggdStartsideportalen - kalender
kalender"Idag"-kortet och återkommande händelser i högerspalten.ByggdStartsideportalen - ledighet
ledighetLedighetskortet och attestraden för chef när något är klart att godkänna.ByggdStartsideportalen - kompetens
kompetensKompetensregistret (ADR-030): vad en person har, vad rollen kräver och när det går ut. Kurserna bor kvar i Lärplattformen (Moodle); registret är eget och delar id med personalakten. Chefen ser det som behöver åtgärdas, täckning per område, andelsmål, professionsprogrammet och planer att bekräfta, och en matris för ett urval av område eller roll; medarbetaren sin egen kompetens och plan. Planen tas fram ur utvecklingssamtalet med ett AI-utkast som chefen justerar och servern prövar. Ersätter modulen utveckling.Prototyp med fiktiv data – inför mötet 4 novemberStartsideportalen - felanmalan
felanmalanDet första samtalsflödet: chatt plus formulärspegel i fokusläge. Samtalet är inmatningen, formuläret är kvittot, och ärendet skapas aldrig utan uttrycklig bekräftelse.Byggd t.o.m. M2 – M3 och M4 återstårStartsideportalen - utvecklingsarende
utvecklingsarendeBeslutsunderlag för utvecklingsinitiativ enligt kommunens mall: fjorton avsnitt där fyra är typade radlistor med summeringar. Assistenten skriver utkastet, användaren granskar rubrik för rubrik, och servern avgör att allt obligatoriskt finns innan ärendet lämnas för beslut.Byggd – M3, ärendeadaptern, återstårStartsideportalen - webbsidor
webbsidorSektionen Sitevision under "Sidor": en ingång som beskriver integrationssätten, och ett levande exempel för vart och ett. Kureringen bestämmer placering, snabbvägar och AI-förslag; Sitevisions headless-API levererar texten, som översätts till block. Första prövningen av PageManifest mot verkligt innehåll (ADR-016).Spik – sundsvall.se och utveckling.sundsvall.seStartsideportalen - nyheter
nyheterDe fem senaste nyheterna från sundsvall.se i högerspalten på startsidan. Flödet är Sitevisions RSS; varje nyhet öppnas på sundsvall.se. Samma källa, cache och reservordning som webbsidor (ADR-016).Byggd – läser sundsvall.se:s nyhetsflödeStartsideportalen - dialogstod
dialogstodDialogstöd för chef, ombyggt ur Dialogstödet (bbb): nyckeltalen för nivån under chefens egen – kommundirektören ser förvaltningarna, förvaltningschefen avdelningarna, avdelningschefen sektionerna – och uppföljningsdialogen om varje enhet i sex områden: ekonomi, HME och sjukfrånvaro med diagram, och verksamhet, digital transformation och kommunikativt ledarskap med frågor och manuell status. Aktiviteter, status och anteckningar sparas, och en aktivitet hamnar hos den ansvariga chefen i Att agera på och som en notis. Startsidans budget och sjukfrånvaro kommer härifrån, för chefens egen enhet. Förvaltningarna har sina riktiga namn; allt annat är fiktivt.Byggd med fiktiv dataStartsideportalen - personal
personalChefens överblick över personalen, med sök och filter, och en personalakt per medarbetare: notiser, ärenden, anställning och vägen in till senaste utvecklingssamtalets dokumentation. Datat är fiktivt men har personalsystemets form.Byggd med fiktiv dataStartsideportalen - fokusnyhet
fokusnyhetIntranätets fokusnyhet: en nyhet om nya startsidan, med bild och en artikel bakom där rollens avsnitt kommer först. Skalet visar den under AI-fältet tills användaren stänger den (ADR-021).Byggd med mockad nyhetStartsideportalen - itsupport
itsupportDen första sidan under Sidor: IT-supportens ingång enligt it-support-prototyp.html, med snabbvägar, vanliga frågor, driftstatus, kontakt och användarens IT-ärenden, och artikeln Prioriteringsordning för IT-ärenden enligt innehallssida-prototyp.html (ADR-003, ADR-022).Byggd med mockad driftstatus och mockade ärendenStartsideportalen - verktygslada
verktygsladaMålgruppsingången för Digitalisering, IT och AI: Verktygslådan, porterad från den fristående verktygslådan, med snabbvägar, vägen från idé till nytta, vanliga frågor, verktygskatalogen, verksamhetsområdena, omvärlden och kontakt – och en artikel per tillgängligt verktyg (ADR-027).Byggd med mockad verktygskatalog och omvärldStartsideportalen - min-ai
min-aiMedarbetarens personliga AI-assistent – en egen ChatGPT där samtalen i drift hanteras i Eneo. Skiljer sig från AI-fältet, som är startsidans assistent för startsidans funktioner. Kontraktet är Eneos: { question, session_id } in, svaret strömmat och samtalets id i ett svarshuvud (ADR-023).Byggd – demo mot Anthropic API, Eneo planeradStartsideportalen
API
Serverändarna.
- POST /api/flows/felanmalan
api-felanmalanFlödets enda serverända. Prompt, profil och beslutet att skapa ärendet bor här. Klienten skickar bara text; servern kontrollerar själv att allt obligatoriskt finns.Byggd (M2)Startsideportalen - POST /api/flows/utvecklingsarende/*
api-utvecklingsarendeDokumentflödets två serverändar: /utkast skriver hela underlaget ur uppladdat material, /tur ändrar ett avsnitt i samtalet. Samma beslutsordning som felanmälans handler, och samma regel: att modellen säger lamna räcker aldrig.ByggdStartsideportalen - POST /api/min-ai
api-min-aiMin AI:s serverända. Tar { question, session_id? } som Eneos sessions-API, strömmar svaret som text och lämnar samtalets id i X-Session-Id. Prompten, historiken och samtalen bor här; klienten skickar bara frågan. DELETE /api/min-ai/samtal/:id raderar ett av användarens samtal.ByggdStartsideportalen - POST /api/assistant
api-assistantAI-fältets serverände: frågan in, ett kort svar med knappar ut – inget samtal. En moduls kända fråga (ai.intents) leder till sitt flöde utan modell. Annars svarar modellen med structured outputs och användarens uppgifter, lästa i samma stund, och knapparna väljs ur de mål användaren når. En allmän fråga lämnas över till Min AI med frågan ifylld.ByggdStartsideportalen - AI-adaptern
ai-adapterAnthropic-anropet bakom AI_PROVIDER. Turkontraktet garanteras med structured outputs, inte med en instruktion om att svara med JSON. Nyckeln bor på servern. Den strukturerade kärnan är paketet @startsidan/ai, som båda applikationerna använder – projektstödet också (ADR-040); chatten och flödenas adapter bor i startsideportalen.ByggdGemensam - GET /api/mock/*
api-mockMockdata per modul med samma form som kommunens mikrotjänst-API:er skulle ge. Byts mot riktiga källor i fas 4 – en adapterfråga, inte en omskrivning.Byggd – fas 1–3Startsideportalen
Yta
Ytor som inte är moduler.
- Designsystemet
designsystemTokens, primitiver, mönster, regler och felindex som data. Renderas som sida, JSON och plattext ur samma källa.Byggt (ADR-009)Gemensam - Åtkomstspärren
atkomstMiddleware som låser demon bakom ACCESS_CODE. Projektets yta på roten (utom ritningen och ändringsloggen), prototypens ingång /portal, visionssidan, /dev, healthchecken och upplåsningssidan är öppna; /start, /flode, /verktyg, /sidor och API:erna bakom dem är låsta. En demospärr, inte autentisering – den säger ingenting om vem användaren är.ByggdStartsideportalen - Prototypens ingång
introDemons ingång på /portal (ADR-029). Rollvalet står först och startar demon; introduktionen till startsidan och ekosystemet ligger under. Startsidan själv ligger på /start.ByggdStartsideportalen - Devportalen
devportalDen här ytan. En ingång för den som ska bygga i ekosystemet – människa eller agent. Miniatyr av dev.sundsvall.se, med startsidans ekosystem som innehåll.ByggdStartsideportalen - Grindar och bygge
byggeLint, test och typecheck över hela repot från roten, plus standalone-imagen Dokploy bygger. Ett nytt paket täcks utan att något skript läggs till.ByggtGemensam
Extern
System och tjänster utanför repot.
- Anthropic API
anthropicModellen bakom samtalsflödena. Anropas med @anthropic-ai/sdk och structured outputs. Modellvalet styrs av AI_MODELL så det kan bytas utan kodändring.I bruk bakom AI_PROVIDER=anthropicGemensam - Eneo via WSO2
eneoKommunens egen AI-plattform bakom Sundsvalls API-gateway. Ett tredje värde på AI_PROVIDER när prototypen ska köra på kommunens plattform i stället för direkt mot Anthropic.Framtida alternativStartsideportalen - Sitevision (sundsvall.se)
sitevisionKommunens CMS, både för sundsvall.se och intranätet. Model REST API:s headless-endpoint ger sidans egenskaper, undersidor och innehållsmoduler som JSON. Publicerat innehåll på sundsvall.se svarar anonymt; offline-modellen (/1/0/) och utveckling.sundsvall.se svarar 401/403. Inga CORS-headers – allt hämtas på servern.sundsvall.se och utveckling.sundsvall.se läses anonymt; intranätet kräver fas 4Startsideportalen - Dokploy
dokployDeployplattformen. Pekar på docker-compose.yml i repot; Git-push ger deploy. Hemligheter läggs som Environment i Dokploy, aldrig i repot.I brukGemensam