Instellingen van de app
Thema, vertalingen, authenticatie en registratie, gebruikersaccounts, rechten en rotatie van registraties — alles wat u in een app bijstelt, sectie voor sectie.
Elke app heeft haar eigen instellingen — het thema is van deze app, de accounts zijn van deze app, de rechten zijn van deze app. Daarom reizen de instellingen met haar mee wanneer u haar in een pakket exporteert (met de uitzonderingen die de pagina "Apps importeren en exporteren" uitwerkt). Deze pagina loopt alle secties door, met bijzondere aandacht voor de zes die het meest worden gebruikt: thema, vertalingen, authenticatie, accounts, rechten en rotatie van registraties.
De instellingen openen
- Open de app in de zijbalk.
- Klik boven in de balk van de app op de tandwielknop Instellingen van de app. De navigatieboom maakt plaats voor de boom met instellingen, geordend in groepen.
- Klik op een sectie: zij opent als een tabblad van de werkruimte — net als een scherm of een script — met de naam van de app in de kop, de actieve sectie op een badge ernaast, en de knoppen van de sectie (bijvoorbeeld Opslaan) altijd rechtsboven.

De volledige kaart:
| Groep | Sectie | Wat u erin vastlegt |
|---|---|---|
| Applicatie | Algemeen | Identificatie, publicatie, exporteren en verwijderen — zie de eerste twee pagina's van dit hoofdstuk. |
| Applicatie | Authenticatie | Hoe de gebruikers de app binnenkomen, openbare registratie en herstel. |
| Applicatie | Meldingen | De meldingskanalen van de app: in de app en e-mail (eigen SMTP). |
| Applicatie | Opslag | Waar de bestanden heen gaan die de gebruikers van de app uploaden (schijf van de app, S3, SFTP, netwerkshare). |
| Gebruikers | Gebruikers van de app | De accounts van wie de gebouwde app gebruikt. |
| Gebruikers | Rechten | Rollen en regels: gegevens, schermen, menu's en acties. |
| Uiterlijk | Thema | Kleuren, vorm en typografie van de gebouwde app, met voorbeeld. |
| Lokalisatie | Vertalingen | De talen van de app en de vertaalde zinnen, in een matrix. |
| Gegevens | Rotatie van registraties | Hoeveel dagen elk soort registratie wordt bewaard voordat die wordt verwijderd. |
Nota
Dit zijn de instellingen van de app — niet te verwarren met de Instellingen van het platform (in de beheerzone van de zijbalk), die de hele installatie besturen: achtergrondprocessen, waarschuwingen, sessies en globale limieten.
Thema
De sectie Thema schildert de gebouwde app — die uw gebruikers zien — zonder ook maar één scherm aan te raken. Links staan de kleurgroepen; rechts toont het paneel Voorbeeld "Voorbeeld met de huidige tokens — wordt live bijgewerkt": elke kleur die u wijzigt, verschijnt daar op slag.

| Groep | Wat die schildert |
|---|---|
| Basis | "Achtergrond en tekst van de app, randen en focus." |
| Oppervlakken | "Kaarten en popovers (menu's, dropdowns, tooltips)." |
| Kleuren | "Semantische kleuren van de componenten en de tekst op elk ervan" — primair, secundair, destructief, accent, gedempt. |
| Navigatie | "De navigatiebalken van de app (boven, zijkanten, menu's)." Standaard volgen zij de oppervlakken; wijzig ze om uw huisstijl toe te passen. |
Elke kleur heeft een visuele kiezer en een hexadecimaal veld (#rrggbb) —
typen of kiezen, het is hetzelfde. Onderaan de lijst legt Vorm en
typografie de rest vast:
- Hoekstraal — van Geen afronding (0) tot Maximum (1rem), in vijf stappen.
- Positie van de meldingen — in welke hoek de meldingen (toasts) van de app verschijnen.
- Lettertype (sans) — de lettertypestack van de app.
Om op te slaan: Opslaan; om terug te keren naar de oorspronkelijke kleuren: Standaardwaarden herstellen (dat herstelt ze in de editor — het wordt pas definitief wanneer u opslaat). Het opgeslagen thema geldt meteen voor de gebouwde app, en het reist met haar mee in elk pakket.
Vertalingen — de talen van de app
De sectie Vertalingen is een matrix: één rij per zin, één kolom per taal. Hier krijgt de app talen en worden de zinnen van de schermen vertaald zonder dat u één tabel hoeft te verlaten.

- Een zin aanmaken: schrijf op de laatste rij, die altijd leeg staat te wachten ("typ om aan te maken…"). De Sleutel van de zin "(komt uit de zin)" — het is de tekst zelf in de basistaal die haar op de schermen identificeert.
- Een taal toevoegen: klik op de + in de kop, kies bij "taal kiezen…" en bevestig met Taal toevoegen. Een nieuwe taal is een nieuwe kolom, die leeg wordt geboren.
- De basistaal wisselen of een taal verwijderen: in het menu van de kolom — Tot basistaal maken en Deze taal verwijderen ("De vertalingen van deze taal verdwijnen ermee.").
- Een zin verwijderen: in het menu van de rij, Zin verwijderen — hij verdwijnt uit alle talen zodra u opslaat.
- Vinden wat ontbreekt: de zoekfunctie "In elke taal zoeken…" en het filter Nog aan te vullen tonen alleen de zinnen met lege cellen.
Op de schermen gebruikt u de zinnen via de tekst: t("Klantenlijst") in een
TypeScript-gebeurtenis geeft de vertaling terug in de taal van wie de app
gebruikt. Voor waarden midden in de zin schrijft u ze tussen accolades —
«{n} records» geeft «3 records» — en het platform waarschuwt (gele cel)
wanneer een vertaling een accolade kwijt is die het origineel wel heeft: in
die taal zou de waarde niet verschijnen.
Dica
De tekst van een al opgeslagen zin wijzigen is haar sleutel wijzigen — en het platform wisselt haar ook op de schermen die haar gebruiken, en zegt in hoeveel schermen het heeft ingegrepen. Er blijft niets wijzen naar een zin die niet meer bestaat.
Tot slot: Opslaan: "Vertalingen opgeslagen en gecompileerd."
Authenticatie en registratie
De sectie Authenticatie legt vast hoe men de gebouwde app binnenkomt — niet het platform. Het zijn drie blokken:

Authenticatiemodus — de fundamentele keuze:
| Modus | Hoe die werkt |
|---|---|
| Gebruikersnaam en wachtwoord | "De gebruikers van de app melden zich aan met de inloggegevens die op het tabblad Gebruikers worden beheerd." Alles woont in de app; dit is de oorspronkelijke modus. |
| OAuth / OpenID Connect | "De app laat het aanmelden over aan een externe identiteitsprovider (OIDC-issuer)." Het aanmelden wordt dat van uw organisatie. |
OAuth / OpenID Connect — de velden van de provider (alleen actief in die modus): Issuer-URL en Client ID (verplicht), Client secret ("Versleuteld opgeslagen; hij komt nooit meer in beeld." — leeg laten behoudt wat er staat) en Scopes ("Gescheiden door spaties. Leeg gebruikt de standaardscopes van de provider.").
Registratie en herstel — de openbare systeemschermen van de app:
- Openbare registratie toestaan: aan, "elke bezoeker kan een account aanmaken op het scherm /register. Uitgeschakeld wordt het scherm niet geserveerd."
- Rol voor nieuwe registraties: "Rol die automatisch wordt toegekend aan wie zich registreert." Kies een rol uit de lijst met Rechten, of Geen rol — maar zonder rol komt het account binnen en ziet het geen gegevens en geen schermen.
- Bij wachtwoordherstel wordt de link verstuurd via het e-mailkanaal dat is vastgelegd in Meldingen — dat kanaal moet actief zijn en de SMTP volledig, anders zijn er geen herstelmails.
Sla op met Opslaan ("Authenticatie opgeslagen.").
Gebruikers van de app — de accounts
De sectie Gebruikers van de app beheert de accounts van wie de app gebruikt. De waarschuwing bovenaan is de gouden regel: "Deze gebruikers horen bij de gebouwde app — zij melden zich in de runtime bij de app aan en hebben geen enkele toegang tot het KEPLIN-platform."

De lijst toont elk account met de Gebruiker, de Rollen en de Laatste aanmelding ("nooit aangemeld" wanneer er nooit een aanmelding is geweest), en zij is gemaakt om vragen te beantwoorden:
- De zoekfunctie "Zoeken op naam, gebruikersnaam of e-mail…" en de filters op rol en status vinden elk account.
- De amberkleurige waarschuwing "… gebruiker(s) helemaal zonder rol — zij zien geen gegevens en geen schermen" is aanklikbaar en filtert die accounts meteen — het is oorzaak nummer één van "de app is leeg".
- Selecteer meerdere accounts om er in bulk op in te grijpen: Rol toekennen, Rol intrekken, Inschakelen, Uitschakelen — dezelfde rol aan twaalf mensen geven is één handeling, geen twaalf vensters.
Een account aanmaken of bewerken (knop Nieuwe gebruiker, of Bewerken in het menu van de rij — opent als pagina, nooit als venster):
| Veld | Opmerkingen |
|---|---|
| Gebruikersnaam | Verplicht. "Letters, cijfers, punt, koppelteken, _ en @." |
| Naam / E-mail | Optioneel; het e-mailadres is nodig voor het wachtwoordherstel. |
| Wachtwoord | Bij het aanmaken is dit het beginwachtwoord — "de gebruiker kan het in de app wijzigen." Bij het bewerken: "Alleen invullen om een nieuw wachtwoord in te stellen." |
| Actief | Uit bestaat het account wel, maar "kan het zich niet bij de app aanmelden." |
| Rollen | Per rol aangevinkt. Een nieuw account heeft de rollen die "standaard" in de Rechten zijn vastgelegd al aangevinkt. |
Een account verwijderen (menu van de rij → Verwijderen) is onomkeerbaar — de gebruiker kan zich niet meer bij de app aanmelden.
Nota
De rechten bewerkt u niet op het account. Die bewerkt u altijd in de rollen, in de sectie Rechten — een uitzondering die op één persoon wordt gezet, is een uitzondering die niemand ooit terugvindt.
Rechten
De sectie Rechten legt vast wat elke rol in de app mag doen, langs vier assen: gegevens, schermen, menu's en acties. "De rechten tellen op: wie twee rollen heeft, krijgt het beste van beide."

De lijst met Rollen toont elke rol met het aantal gebruikers en regels, en de badges "volledige toegang" en "standaard". Nieuwe rol maakt er een aan en opent meteen haar pagina, met vijf tabbladen:
Algemeen — de Naam, de Beschrijving en twee schakelaars:
- Volledige toegang: "Alles, zonder uitzonderingen — en het blijft kloppen wanneer de app groeit." Dit is de beheerdersrol van de app; met deze schakelaar aan zijn de andere tabbladen niet eens van toepassing.
- Standaard toegekend: "Toegekend aan wie zich registreert of nieuw wordt aangemaakt."
Gegevens — één rij per tabel-API, met vier vinkjes — Bekijken, Aanmaken, Wijzigen, Verwijderen — en een Bereik dat zegt tot welke records men komt:
| Bereik | Betekenis |
|---|---|
| Alle records | Zonder beperking op rijen. |
| Alleen de mijne | Alleen de records waarvan het "Veld dat aangeeft van wie het is" de aangemelde gebruiker is. |
| Met voorwaarde… | Alleen de records die voldoen aan een filter dat u samenstelt — met vaste waarden of waarden uit de sessie. |
"Het bereik wordt op de server toegepast, bij elke lees- en schrijfbewerking — in de schermen, in de code, in de rapporten en in de workflows. Zonder ook maar één regel ziet deze rol niets van deze API."
Schermen — voor elk scherm en elk apparaat (Web, Tablet, Telefoon) een niveau: Verborgen ("verschijnt niet in de menu's, en een met de hand ingetypte route wordt geweigerd"), Bekijken (alleen-lezen) ("opent alleen-lezen — velden en knoppen die schrijven, staan uit") of Bewerken. De snelkoppelingen "alles bekijken" / "alles verbergen" vullen een hele kolom. Het «bekijken» is een visuele hulp; wat het schrijven echt tegenhoudt, zijn de rechten van Gegevens, op de server.
Menu's — anders dan bij schermen is een menu standaard zichtbaar: de deur is het scherm, en die is al gesloten. Hier verbergt u de rest — een hele groep, de bel van de meldingen — per apparaat. Een groep uitvinken neemt de kinderen mee.
Acties — de werkwoorden die alleen in deze app bestaan: goedkeuren,
afsluiten, exporteren. Zij worden gedeclareerd in het paneel Acties van de
rollenlijst (een Sleutel als uitgave-goedkeuren en een Naam, knop
Nieuwe actie) en elke rol vinkt aan welke zij geeft. Op de schermen heeft
elke widget de eigenschap «Toegang» om een actie te vereisen; in
TypeScript-code vraagt u keplin.session.can("uitgave-goedkeuren").
Alles wordt in één keer opgeslagen met Opslaan ("Rechten opgeslagen."). Een rol verwijderen waarschuwt hoeveel gebruikers haar kwijtraken — "wie helemaal geen rol overhoudt, ziet geen gegevens meer."
Rotatie van registraties
Een app met verkeer schrijft onophoudelijk geschiedenis — aanroepen, uitvoeringen, kliks. De sectie Rotatie van registraties bepaalt "hoeveel dagen elk soort registratie wordt bewaard voordat die wordt verwijderd. Nul dagen betekent voor altijd bewaren."

Het is een raster met één rij per soort Registratie en de termijn in Bewaren (het veld toont "Voor altijd bewaard" wanneer het op nul staat):
| Registratie | Wat het is | Van huis uit |
|---|---|---|
| Aanroepen van de API's | "Eén rij per GraphQL-verzoek. Dit groeit het snelst in een app met verkeer." | Voor altijd bewaren |
| Uitvoeringen van scripts | "De geschiedenis achter de knop «Uitvoeringen» van de scripteditor." | Voor altijd bewaren |
| Fouten van de apps | "De voorvallen achter de problemen die de Radar toont. Ze verwijderen laat het probleem niet verdwijnen, alleen de geschiedenis ervan." | Voor altijd bewaren |
| Navigatie en klikken | "Groot volume en korte waarde: het dient om te onderzoeken wat er zojuist is gebeurd, niet als geschiedenis." | 2 dagen |
| Planningen | "De geplande tijden en wat er niet is gebeurd. Wat is mislukt, wordt twee keer zo lang bewaard." | 30 dagen |
| Workflow-instanties | "Alleen de instanties die al zijn afgerond. Instanties die nog draaien of op iemand wachten, worden nooit verwijderd. Mislukte instanties blijven twee keer zo lang staan." | Voor altijd bewaren |
| Audit | "Wie wat heeft gedaan. Hij wordt door alle apps gedeeld, dus geldt altijd de langste termijn van allemaal." | Voor altijd bewaren |
Opslaan past het beleid toe ("Rotatie opgeslagen.") en de opschoning gaat voortaan elke dag op de achtergrond draaien.
Dica
Leg in een productie-app vanaf de eerste dag echte termijnen vast — 30 tot 90 dagen voor de aanroepen van de API's is een gezond vertrekpunt. "Voor altijd bewaren" is prima tijdens de ontwikkeling en een schijffactuur in productie.
Limieten om rekening mee te houden
De limieten die u in de instellingen en de handelingen van dit hoofdstuk tegenkomt:
| Wat | Limiet |
|---|---|
| Naam van de app | 2 tot 120 tekens |
| Beschrijving van de app | Tot 500 tekens |
| Gebruikersnaam van een gebruiker van de app | 2 tot 120 tekens (letters, cijfers, punt, koppelteken, _ en @) |
| Passphrase van de export | Minimaal 8 tekens |
| Pakket voor het importeren | Maximaal 200 MB |
| Rotatie van registraties | 0 tot 3650 dagen per soort (0 = voor altijd bewaren) |
De globale limieten — de duur van de sessies en de maximale grootte van de geüploade bestanden — zijn niet per app: die wonen in de Instellingen van het platform, in het paneel "Sessies en limieten", en gelden voor de hele installatie.