Build your application
Application code lives in app/src/. Routes, views and tests sit alongside it in app/.
Add a route
Declare routes in app/routes/. The root route is in app/routes/web.php.
Create a view
Templates live in app/resources/views/ and end in .view.php. Keep them thin; schemas own forms and actions.
Localization
Inline view labels use __t(['en' => 'Home', 'fr' => 'Accueil']). Catalog-owned messages use lang().
Server for trust
Persistence, permissions and validation stay on the server. Visual state stays in the browser.
Front-end stack
Tailwind + Vite
Utility-first styling with per-module build isolation.
HTMX
Server-driven HTML swaps, forms, SSE and WebSockets. Self-hosted.
Alpine.js
Local declarative state: modals, tabs, dropdowns.
Vanilla JavaScript
Canvas, drag and drop, and native browser APIs.
PWA, offline sync and native packaging are scoped features added only when a module needs them.
