first docs

This commit is contained in:
2022-11-02 06:40:25 +00:00
parent 2b19f4a153
commit 96a526ef1e
2129 changed files with 174471 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,9 @@
# collections
Die Konfiguration einer Kollektion sollte zur besseren Übersicht innerhalb einer gesonderten Datei im Unterorder "/api/collections/" erfolgen und via "!include" in die "config.yml" eingebunden werden.
Eine solche Datei (z.B. democol.yml) hat folgenden Aufbau:
```yaml
```

View File

@@ -0,0 +1,52 @@
# config.yml
Die Datei "config.yml" ist der Einstieg in die API-Konfiguration eines Projekts. Die Datei kann sich an einem beliebigen Ort befinden. Die einzige Bedingung ist, dass sie durch den tibi-server lesbar ist.
Es hat sich jedoch als günstig erwiesen bei Webprojekten die Datei und alle anderen Datein, die zur API-Konfiguration gehören, im ordner "/api/" unterhalb des eigentlichen Webprojektes anzuordnen. Die Quellen des Frontends und der API können somit in ein Mono-Repo eingecheckt werden.
## Aufbau
```yaml
# Der Namespace legt die eigentliche Projektbezeichnung und
# den Datenbankkontext fest.
# Er sollte nach Projektinitialisierung auf dem tibi-server
# nicht mehr angepasst werden.
# In den Projekteinstellungen im tibi-server kann der Namespace
# durch einen Datenbankeintrag überschrieben werden.
# Über die Bezeichnung des Namespace plus einen Prefix der in
# der globalen Server-Konfig hinterlegt ist, definiert sich der
# Datenbank-Name innerhalb der MongoDB.
namespace: demo
# Das "meta"-Objekt ist frei definierbar, wird aber vom
# tibi-admin in spezieller Form erwartet.
# Mögliche Angaben, die der tibi-admin versteht, sind hier mit
# aufgeführt.
meta:
# Pfad zu einer Bilddatei die als Projektbild in der Admin-UI
# verwendet wird
imageUrl: https://testversion.online/demo.png
# Liste möglicher Berechtigungen, die Benutzern zugeordnet
# werden können
permissions:
- # Name der Berechtigung
name: news
# Label für die Anzeige im Admin
# (kann string oder object mit Sprachen als keys sein)
label:
de: Neuigkeiten
en: News
- name: pages
label:
de: Seiten
en: Pages
# "collections" ist eine Auflistung von
# Kollektions-Konfigurationen.
# Hier bietet sich eine Auslagerung und Einbidnung via
# YAML-Tag "!include" an.
collections:
- !include collections/democol.yml
```

View File

@@ -0,0 +1 @@
# fields

View File

@@ -0,0 +1 @@
# hooks

View File

@@ -0,0 +1,65 @@
# Ordnerstruktur
Als Konvention für neue Projekte hat sich folgende Ordnerstruktur etabliert:
![Ordnerstruktur](api-ordner.png)
Die Aufteilung der YAML-Konfiguration ist durch den YAML-Tag "!include" möglich. Genaueres dazu wird auf den nachfolgenden Seiten beschrieben.
## /api
Der Einstigesordner in die Konfiguration ist frei wählbar. "/api" innerhalb des Projektrepositories hat sich jedoch bewährt.
Die Enstiegsdatei in die Gesamt-Konfiguration liegt hier und heißt `config.yml`. In dieser können Umgebungsvariablen erstetzt werden, welche in `config.yml.env` definiert sind.
Ebenso sind alle nachfolgenden Unterordner beliebig zu benennen. Da aber ein JSON-Schema und VSCode-Konfiguration zur Validierung der YAML Dateien existiert, ist folgende Struktur hilfreich.
### JSON-Schema
Das JSON-Schema ist in die package.json einzubinden via:
```json
...
"devDependencies": {
...,
"tibi-types": "https://gitbase.de/cms/tibi-types.git"
},
...
```
Die im Projekt liegende VSCode-Konfig sollte dementsprechend ergänzt werden:
```json
...
"yaml.schemas": {
"node_modules/tibi-types/schemas/api-config/config.json": "api/config.y*ml",
"node_modules/tibi-types/schemas/api-config/collection.json": "api/collections/*.y*ml",
"node_modules/tibi-types/schemas/api-config/field.json": "api/collections/fields/*.y*ml",
"node_modules/tibi-types/schemas/api-config/fieldArray.json": "api/collections/fieldLists/*.y*ml"
},
"yaml.customTags": ["!include scalar"],
...
```
Sollte Yarn2 verwendet werden ist die Verlinkung von "node_modules" nötig. Dazu ist folgendes in der `.yarnrc.yml` einzutragen:
```yaml
...
nodeLinker: node-modules
```
## /api/collections
Bei Aufteilung der Kollektionskonfigurationen in einzelne Dateien, sollten diese in diesem Ordner gespeichert werden. Für jede Kollektion sollte eine eigene Datei verwendet werden, hier im Beispiel `democol.yml`.
### /api/collections/fields
Sollten Feldkonfigurationen wieder verwendet werden, können diese im "fields" Unterordner gepeichert werden. Diese sind pro Feldkonfiguration als einzelne Datei aufzuführen.
### /api/hooks
Jede Javascript-Datei, die einen Hook bedient sollte im Unterordner benannt nach der Kollektion im Ordner "hooks" sein. Der Name der Datei sollte sich nach den Hook richten. Z.B. `get_return.js` ist zustängig für den GET-Hook nach dem Lesen der Daten, bevor diese zurück gegeben werden. Mehr dazu unter [Hooks](hooks.md).
### /api/templates
Ist es nötig im Projekt Templates zu rendern (z.B. für den Email-Versand), sind diese im Ordner "templates" gut aufgehoben.