Startklar

In Entwicklung Extension für mittwald mStudio

Dein Projekt
als Datei.

Eine .klar.yml im Repository beschreibt, was dein Projekt braucht: App, Datenbanken, Container, Cronjobs, Mail, Backups und Domains. Startklar richtet alles ein – und hält es laufend so.

Zur DokuBeispiel ansehen

AppsPHP & php.iniMySQLRedisContainerSecretsCronjobsSMTPBackupsRegistriesDomainsRedirectsAppsPHP & php.iniMySQLRedisContainerSecretsCronjobsSMTPBackupsRegistriesDomainsRedirects

So funktioniert's

01

Datei ins Repo

Die .klar.yml liegt neben dem Code und wird mit ihm versioniert, reviewed und deployt.

02

Deployen wie immer

Per Magallanes, Deployer oder Git nach ~/html/prod, ~/html/stage … Jeder Fundort wird eine eigene Umgebung.

03

Startklar gleicht ab

Neue Fundorte nach Freigabe, Änderungen innerhalb von 15 Sekunden. Ressourcen mit Daten werden nie ohne Bestätigung gelöscht.

Eine Datei, alles drin

Lesbar für Menschen.
Prüfbar für Maschinen.

Eine App, eine Datenbank, ein Cronjob, Domains für prod und stage samt Weiterleitung – in 33 Zeilen. Startklar legt alles an und schreibt die Zugangsdaten in deine .env.local.

Im Editor ausprobierenAlle Funktionen

.klar.ymlFahre über einen Eintrag oder tippe ihn an
# Startklar config — docs: https://startklar.cyber.house/v1/# $schema: https://startklar.cyber.house/v1/schema.jsonversionversionVersion des DateiformatsMehr in der Doku →: 1
appsappsApps an diesem Fundort, nach Name, z.B. backend und shop. Mit target pro Umgebung einschränkbarMehr in der Doku →: webapps.webName der App „web“, frei wählbar (a-z, 0-9, -). Routing und Cronjobs verweisen mit app: web darauf.Mehr in der Doku →: typeapps.web.typeArt der AppWerte: php, node, python, staticMehr in der Doku →: php versionapps.web.versionVersion der Laufzeitumgebung in Anführungszeichen, z.B. "8.3" (nicht bei static)Mehr in der Doku →: "8.3" documentRootapps.web.documentRootDocument Root relativ zur .klar.yml, z.B. public. Pflicht bei php und static, bei node und python nicht vorhandenMehr in der Doku →: public envFileapps.web.envFileDatei, in die Startklar die envValues der Ressourcen und der App schreibt (Abschnitt zwischen #startklar und #endklar), relativ zur .klar.yml, z.B. ../../shared/.env.localMehr in der Doku →: ../../shared/.env.local
databasesdatabasesMySQL- und Redis-Datenbanken, nach NameMehr in der Doku →: dbdatabases.dbName der Datenbank „db“, frei wählbar (a-z, 0-9, -). Bei shared: true verbindet dieser Name die Fundorte.Mehr in der Doku →: typedatabases.db.typeArt der Datenbank: mysql oder redisMehr in der Doku →: mysql versiondatabases.db.versionMySQL-Version, z.B. "8.4"Mehr in der Doku →: "8.4" envValuesdatabases.db.envValuesVariablen für die envFile jeder App an den targets dieser Ressource, z.B. DB_HOST: ${host}. ${…} meint ein Feld dieser Ressource: host, port, name, user, passwordMehr in der Doku →: DB_HOSTdatabases.db.envValues.DB_HOSTDB_HOST: kommt in die envFile jeder App an den targets dieser Ressource. ${…} meint ein Feld dieser Ressource, z.B. ${host}.Mehr in der Doku →: ${host} DB_NAMEdatabases.db.envValues.DB_NAMEDB_NAME: kommt in die envFile jeder App an den targets dieser Ressource. ${…} meint ein Feld dieser Ressource, z.B. ${host}.Mehr in der Doku →: ${name} DB_USERdatabases.db.envValues.DB_USERDB_USER: kommt in die envFile jeder App an den targets dieser Ressource. ${…} meint ein Feld dieser Ressource, z.B. ${host}.Mehr in der Doku →: ${user} DB_PASSWORDdatabases.db.envValues.DB_PASSWORDDB_PASSWORD: kommt in die envFile jeder App an den targets dieser Ressource. ${…} meint ein Feld dieser Ressource, z.B. ${host}.Mehr in der Doku →: ${password}
cronjobscronjobsCronjobs, nach NameMehr in der Doku →: schedulercronjobs.schedulerName des Cronjobs „scheduler“, frei wählbar.Mehr in der Doku →: schedulecronjobs.scheduler.scheduleCron-Zeitplan, z.B. "*/5 * * * *"Mehr in der Doku →: "*/5 * * * *" commandcronjobs.scheduler.commandBefehl, relativ zum Verzeichnis der AppMehr in der Doku →: vendor/bin/typo3 scheduler:run
routingroutingDomains: jeder Eintrag zeigt auf eine App (target, bei mehreren Apps mit app), einen Container oder leitet weiter (redirect)Mehr in der Doku →: - domainsrouting[0].domainsDomains, optional mit Pfad (www.acme.at/search)Mehr in der Doku →: [www.acme.at] targetrouting[0].targetGenau ein Verzeichnis, z.B. prod. Bei Apps: die App an diesem Fundort bekommt die Domains. Bei container: die Instanz des Containers an diesem Fundort (Pflicht, wenn der Container nicht shared ist).Mehr in der Doku →: prod - domainsrouting[1].domainsDomains, optional mit Pfad (www.acme.at/search)Mehr in der Doku →: [stage.acme.at] targetrouting[1].targetGenau ein Verzeichnis, z.B. prod. Bei Apps: die App an diesem Fundort bekommt die Domains. Bei container: die Instanz des Containers an diesem Fundort (Pflicht, wenn der Container nicht shared ist).Mehr in der Doku →: stage - domainsrouting[2].domainsDomains, optional mit Pfad (www.acme.at/search)Mehr in der Doku →: [acme.at] redirectrouting[2].redirectWeiterleitung auf diese URL; {domain} und {domain-without-www} werden ersetztMehr in der Doku →: https://www.{domain}

Für Menschen und Agents

Die Doku steht in jeder Datei.

Im eigenen Editor

Mit der $schema-Zeile prüfen VS Code, Cursor (YAML-Extension von Red Hat) und PhpStorm die Datei, vervollständigen Felder und erklären sie beim Hovern.

https://startklar.cyber.house/v1/schema.json

KI-Agents

Claude & Co. finden den Link im Kopf der Datei und lesen die ganze Doku als Text.

https://startklar.cyber.house/llms-full.txt

Versioniert

Die Doku gehört zu version: 1 und bleibt unter dieser Adresse, auch wenn es einmal Version 2 gibt.

https://startklar.cyber.house/v1/

# Startklar config — docs: https://startklar.cyber.house/v1/
# $schema: https://startklar.cyber.house/v1/schema.json
version: 1