Skip to content

Architektura monolitu ​

Nowe projekty domyślnie powstają na monolicie. Układ z osobnym backendem i frontem wybiera zespół, gdy wymagają tego potrzeby projektu.

mooncms-monolit łączy backend MoonCMS, publiczną witrynę i panel CMS w jednej aplikacji Laravel. Repozytorium jest osobne od mooncms-backend, ale korzysta z niego jako upstreamu, więc moduły, API i konfigurację modeli opisuje sekcja Backend, a panel — sekcja Panel. Ta sekcja opisuje tylko to, co monolit dodaje lub robi inaczej.

Motyw to nie Theme

Kod publicznej witryny (resources/js/site) nazywa się w repozytorium motywem. To aplikacja Vue 3 + Inertia renderowana przez Laravel. Nie ma nic wspólnego z sekcją Theme, która opisuje osobny frontend w Nuxcie.

Granice aplikacji ​

ObszarGdzie szukaćRola
Moduły domenowe i APIModules/*Modele, walidacja, uprawnienia, logika treści oraz API dla panelu. Trasy API rejestrują wyłącznie moduły (Modules/*/Providers/RouteServiceProvider.php, pliki w Modules/*/Http/Routes); pliku routes/api.php nie ma.
Motywroutes/web.php, Modules/*/Http/Controllers/Web, resources/js/siteLaravel wybiera trasę i dane strony; Vue/Inertia renderuje interfejs.
Panel CMSźródła w resources/js/cms, build w public/cmsPanel Quasar z repozytorium mooncms-frontend, korzystający z API monolitu.

Kontrolery web nie tworzą drugiego modelu danych dla witryny. Dla publicznych danych korzystają z tych samych Resources co API, a następnie przekazują ich wynik jako propsy Inertia.

Główne przepływy ​

text
Żądanie strony
  → routes/web.php
  → kontroler Web lub SlugController
  → moduł, model i publiczny Resource
  → Inertia::render(komponent, propsy)
  → resources/views/site.blade.php (dokument HTML i metadane SEO)
  → komponent z resources/js/site/pages (opcjonalnie wyrenderowany przez SSR)

Panel pod /cms
  → API modułów
  → moduł i model

Panel CMS ​

Panel /cms jest osobną aplikacją Quasar z repozytorium mooncms-frontend. php artisan mb:install-cms pobiera jego źródła do resources/js/cms, a build trafia do public/cms. W bazowym repozytorium katalog źródeł jest w .gitignore, więc w świeżym klonie go nie ma; w projekcie instalator robi z niego zwykły, śledzony katalog.

Zbudowany panel serwuje trasa /cms/{any?} w routes/web.php: każdy adres pod /cms zwraca public/cms/index.html, a dalszą nawigację obsługuje router panelu. Motyw nie korzysta z panelu ani z Nuxta.

Strony tej sekcji ​

Made by Moonbite