first docs
This commit is contained in:
BIN
docs/projektkonfig/api-ordner.png
Normal file
BIN
docs/projektkonfig/api-ordner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
9
docs/projektkonfig/collections.md
Normal file
9
docs/projektkonfig/collections.md
Normal 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
|
||||
|
||||
```
|
||||
52
docs/projektkonfig/config.yml.md
Normal file
52
docs/projektkonfig/config.yml.md
Normal 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
|
||||
```
|
||||
1
docs/projektkonfig/fields.md
Normal file
1
docs/projektkonfig/fields.md
Normal file
@@ -0,0 +1 @@
|
||||
# fields
|
||||
1
docs/projektkonfig/hooks.md
Normal file
1
docs/projektkonfig/hooks.md
Normal file
@@ -0,0 +1 @@
|
||||
# hooks
|
||||
65
docs/projektkonfig/ordnerstruktur.md
Normal file
65
docs/projektkonfig/ordnerstruktur.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Ordnerstruktur
|
||||
|
||||
Als Konvention für neue Projekte hat sich folgende Ordnerstruktur etabliert:
|
||||
|
||||

|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user