Motyw
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
| Obszar | Gdzie szukać | Rola |
|---|---|---|
| Moduły domenowe i API | Modules/* | 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. |
| Motyw | routes/web.php, Modules/*/Http/Controllers/Web, resources/js/site | Laravel wybiera trasę i dane strony; Vue/Inertia renderuje interfejs. |
| Panel CMS | źródła w resources/js/cms, build w public/cms | Panel 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 modelPanel 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
- Pierwsze kroki — wymagania, nowy projekt, instalacja,
.env, testy. - Praca lokalna — codzienne komendy.
- Motyw (Vue + Inertia) — jak URL trafia do komponentu, propsy, przekierowania.
- Wielojęzyczne adresy URL — prefiksy języków, hreflang, dodawanie języka.
- Treści i API — typy stron, sekcje współdzielone.
- Wdrożenie — build produkcyjny, phploy, sprzątanie assetów.
- SSR i scheduler — renderowanie serwerowe, cron, diagnostyka.