Skip to content

Landing Page & Branding

The public home page (/) is resources/js/pages/welcome.tsx, registered in routes/web.php:

Route::inertia('/', 'welcome')->name('home');

It’s a plain Inertia page with no app layout (app.tsx returns null as the layout for welcome), so it can look completely different from the signed-in app.

  • A header with the brand mark and app name, plus Log in / Sign up buttons, or Dashboard when signed in.
  • A hero with the headline, a short description, calls to action, and a composer setup / composer dev snippet.
  • A feature grid, driven by the FEATURES array at the top of the file.
  • A “Built on…” strip, driven by the STACK array.
  • A footer.

The buttons adapt automatically. Sign up only shows when canRegister is true (see Registration), and signed-in users see Go to dashboard instead.

Edit the copy and the two arrays in welcome.tsx:

const FEATURES: Feature[] = [
{
icon: KeyRound,
title: 'Authentication',
description: 'Login, registration, email verification…',
},
// …
];

Icons come from Lucide. The page uses the app’s theme tokens (bg-background, text-muted-foreground, border…), so it follows light and dark mode and any color changes you make in app.css.

If your app has no public page, send visitors straight to sign-in (and signed-in users to the dashboard):

routes/web.php
Route::redirect('/', '/dashboard')->name('home');

Guests hitting /dashboard are redirected to the login page by the auth middleware. Keep the home route name: the auth layouts’ logo links use it (home() from @/routes).

Set APP_NAME in .env. It’s shared with every page as name and used in the sidebar, page titles (via VITE_APP_NAME), emails and the landing page header. Restart Vite after changing it, since VITE_APP_NAME is read at build time.

The logo is the 太刀 wordmark (“tachi”, the Japanese long sword). It’s text, not an image, rendered by resources/js/components/app-logo-icon.tsx. Every place that shows the logo uses this one component: the sidebar and header (through app-logo.tsx), the auth layouts, and the landing page.

<AppLogoIcon className="text-3xl text-black dark:text-white" />

Size and color it with text utilities (text-*). The typeface comes from the --font-logo stack in resources/css/app.css: a serif Japanese font already installed on the visitor’s system (Noto Serif JP/CJK, Hiragino Mincho, Yu Mincho), so nothing extra is downloaded.

To use your own brand, replace what AppLogoIcon renders, either your product name as text or an inline <svg>. Keep the className passthrough so existing call sites still size it.

Replace public/favicon.svg, public/favicon.ico and public/apple-touch-icon.png. They’re referenced in resources/views/app.blade.php. The kit’s favicon.svg draws 太刀 as SVG text over a dark rounded square, and the .ico and .png files are rasterized versions of the same mark.