ESHOP Products¶
Tato dokumentace je první kurátorovaná vrstva nad původními návrhovými materiály a nad aktuálním stavem aplikace v app/.
Její cíl je:
- vysvětlit, co systém dělá a proč je rozdělený do domén,
- popsat základní obchodní logiku pro vývojáře i editorial/projektový tým,
- zafixovat aktuální stav public i admin API a databáze,
- oddělit to, co už je implementované, od toho, co je zatím návrh nebo plán.
Není to jen reference ke kódu. Je to i ochrana proti návratu do starého chaosu, kde nebylo jasné, co se smí, co se nesmí a kde je vlastně zdroj pravdy.
Co je tento projekt¶
ESHOP/products je headless PHP API pro produktový katalog. PostgreSQL je zdroj pravdy pro produktová data a Meilisearch je read model pro vyhledávání, ne zdroj pravdy.
Systém je navržený jako SQL-first aplikace bez ORM a bez velkého frameworku. Aplikace používá vlastní core/ vrstvu pro HTTP, routing, middleware pipeline a přístup do databáze.
Co jsme si vzali z jiných projektů¶
Projekt nestaví na jednom frameworku. Vzal si osvědčené koncepty z více e-commerce systémů a přizpůsobil je vlastnímu provozu.
Vendure: rozděleníProductvs.ProductVariant, translation tabulky, kolekce a denormalizovaný search dokument.Medusa: samostatný pricing model přesprice_setaprice, oddělený inventory model, rezervace a multi-location sklad.Sylius: jasné rozlišeníOptionvs.Attribute, tedy co tvoří variantu a co je jen popisná vlastnost.Spree: resource-oriented REST API a čitelný styl endpointů.
Nejde o vendor-lock ani kopii cizího datového modelu. Jde o vlastní PostgreSQL-first architekturu, která přebírá jen to, co je pro náš provoz užitečné.
Jak dokumentaci číst¶
- Pokud potřebuješ rychle pochopit projekt, začni sekcemi
ProjektaArchitektura. - Pokud řešíš, proč je model navržený přísně a kde jsou jeho hranice, otevři
Proč to dělámeaGuardrails a zákazy. - Pokud neznáš doménu, pokračuj do
Slovník pojmůaModuly. - Pokud řešíš tabulky nebo migrace, použij sekci
Databáze. - Pokud potřebuješ původní návrhové materiály, jsou zachované v sekci
Zdrojové podklady.
Důležité upozornění¶
Tato dokumentace vědomě rozlišuje:
aktuální stav= co je dnes v migracích a v aplikaci,cílový model= kam míří návrh v původních markdown souborech.
Pokud je mezi nimi rozdíl, ber jako zdroj pravdy pro implementaci nejdřív migrace a kód v app/.