feat(ui): public marketing landing page at "/" for logged-out visitors
Add a LandingPage (hero + features + how-it-works + CTAs) served at "/" so visitors learn about the product before signing in — matching the JobTrack mockups (indigo/cyan, dark hero + light sections). If the visitor already has a session, LandingPage redirects into the app (/jobs); otherwise it shows the marketing page with "Sign in" CTAs. The "/" route is public (outside the auth-gated Shell), so logged-out users no longer bounce straight to /login. Verified live: renders at "/" with headline, feature grid, how-it-works steps and CTAs; no console errors; type-clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@ import JobTable from "./components/JobTable";
|
||||
import type { JobTableColumns } from "./components/JobTable";
|
||||
import { I18nProvider, useI18n } from "./i18n/I18nProvider";
|
||||
import LoginPage from "./pages/LoginPage";
|
||||
import LandingPage from "./pages/LandingPage";
|
||||
import ForgotPasswordPage from "./pages/ForgotPasswordPage";
|
||||
import ResetPasswordPage from "./pages/ResetPasswordPage";
|
||||
import RouteErrorPage from "./pages/RouteErrorPage";
|
||||
@@ -344,6 +345,7 @@ export default function App() {
|
||||
});
|
||||
|
||||
const router = useMemo(() => createBrowserRouter([
|
||||
{ path: "/", element: <LandingPage />, errorElement: <RouteErrorPage /> },
|
||||
{ path: "/login", element: <LoginPage />, errorElement: <RouteErrorPage /> },
|
||||
{ path: "/forgot-password", element: <ForgotPasswordPage />, errorElement: <RouteErrorPage /> },
|
||||
{ path: "/reset-password", element: <ResetPasswordPage />, errorElement: <RouteErrorPage /> },
|
||||
|
||||
Reference in New Issue
Block a user