Kehittäjille
Näin dokumentaatio pysyy ajan tasalla
Docs-as-code: missä sivut sijaitsevat, miten ne rakennetaan, miksi jokaisen PR:n on koskettava niitä ja miten 'päivitetty viimeksi' lasketaan.
Missä sivut sijaitsevat
apps/docs/content/<kieli>/<osio>/<sivu>.md, yksi puu kieltä kohti: sv (oletus ja täydellinen), en, no, da, fi. Samat kansiot ja tiedostonimet kaikilla kielillä. Kieleltä puuttuva sivu näytetään sv-versiona huomautuksella "ei vielä käännetty", joten linkki ei ole koskaan rikki ja uusi kieli voi kasvaa sivu kerrallaan. sections.json kieltä kohti antaa osioiden nimet.
Frontmatter:
---
title: "Sivun otsikko"
description: "Yksi lause, joka näkyy haussa ja korteissa."
order: 2
updated: 2026-09-05
keywords: [sanat, jotka, auttavat, hakua]
---
Osiot ja niiden järjestys ovat tiedostossa apps/docs/content/<kieli>/sections.json. Uusi kansio ilman merkintää päätyy navigaation loppuun kansion nimellä.
Kieli osoitteessa
Ruotsi on juuressa (/frakt/sendify), muilla kielillä on etuliite (/en/frakt/sendify, /fi/...). Ylätunnisteen kielenvalitsin vaihtaa kielen samalla sivulla, ja jokainen sivu ilmoittaa hreflang-tiedon kaikille kielille, jotta hakukoneet näyttävät oikean version.
Build
apps/docs/scripts/build-content.mjs ajetaan ennen next build -komentoa, ja se tuottaa navigaation, sivukohtaisen HTML:n, sisällysluettelon, hakuindeksin ja muutoslokin. Markdown renderöidään marked-kirjastolla; taulukot, koodilohkot ja lainaukset (huomautuksina) ovat tuettuja.
Päivitetty viimeksi
Sivua kohti: viimeisin tiedostoa koskenut git-commit. Julkaisutyönkulku hakee koko historian, joten päivämäärä on tarkka. Ympäristöissä, joissa historia on matala (Vercel Preview), käytetään frontmatterin updated:-arvoa ja sen jälkeen build-aikaa. Etusivu ja alatunniste näyttävät koko dokumentaation viimeisimmän päivityksen.
Muutosloki
/changelog rakennetaan main-haaran merge-commiteista: PR-numero, otsikko (tyypillä kuten Uutta, Korjattu) ja alue commit-etuliitteestä.
Sääntö: ei tuotemuutosta ilman dokumentaatiota
Työnkulku Docs required pysäyttää pull requestin, joka muuttaa hallintaa, kauppaa, suunnittelutyökalua, alustakomponentteja, migraatioita tai edge-funktioita koskematta polkuun apps/docs/content/**. Se ehdottaa, mitkä sivut todennäköisesti koskevat muutosta. PR:n tunniste docs-not-needed tai otsikon [no-docs] päästää puhtaat refaktoroinnit läpi.
Julkaisu
Docs deploy ajetaan jokaisessa main-pushissa: se rakentaa sisällön koko git-historialla ja julkaisee Vercel-projektiin bunstack-docs (docs.bunstack.co). Jos salaisuudet VERCEL_TOKEN ja VERCEL_DOCS_PROJECT_ID puuttuvat, sivusto rakennetaan mutta ei julkaista, ja työssä näkyy huomautus.