Systém a vrstvy¶
Technologický rámec¶
- jazyk: PHP
- persistence: PostgreSQL
- search engine: Meilisearch
- architektura: bez ORM, bez plného frameworku, vlastní
core/
Aplikační vrstvy¶
Bootstrap a routing¶
app/bootstrap.php rozhoduje podle prefixu URL, zda se obslouží api nebo admin část.
To znamená, že už dnes je projekt připravený fungovat jako jedna aplikace se dvěma vstupy:
- public katalogové čtení,
- admin zápis a správa.
Routes¶
app/routes/api.php a app/routes/admin.php definují endpointy a middleware pipeline.
Middleware¶
Middleware jsou funkce, ne třídy. Aktuálně jde hlavně o:
- CORS,
- HTTP hlavičky,
- autentizaci pro admin část.
Controllers¶
Controller parsuje request, validuje vstup a vrací JSON response. Neměl by v sobě držet těžké SQL.
Repositories¶
Repository obsahuje přímé SQL dotazy přes DB::results(), DB::row() a DB::var().
Database¶
Datový model je rozdělený do více PostgreSQL schémat podle domén. To je důležitá architektonická hranice.
Jak chápat vztah public API vs. admin¶
V této architektuře není cílem, aby admin v první fázi používal public API jako interní write vrstvu.
Pragmatický první krok je:
- public API slouží ke čtení katalogu,
- admin API slouží k zápisu a workflow,
- obě části běží nad stejnou aplikací, stejnými doménovými pravidly a stejnou databází.
To je jednodušší a bezpečnější než stavět zvlášť public API, zvlášť admin backend a mezi nimi další integrační vrstvu ještě předtím, než je stabilní datový model.
Současný tok requestu¶
- Request přijde do
app/bootstrap.php. - Routing vybere
apineboadmin. - Pipeline aplikuje middleware.
- Controller zavolá repository.
- Repository udělá přímé SQL nad konkrétním schématem.
- Controller vrátí JSON ve formátu
dataneboerror.