Landing Page Reorganization by Audience Segment
For agentic workers: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan.
Goal: Reorganize the (landing) pages into three audience segments: Guests, Artists, and Venue Seekers.
Architecture: Keep all content, just reorganize URLs and navigation. Guest content stays at root, Artists at /artists, Venue Seekers at /venues. The experiences/ subdirectory is flattened into the guest segment.
Tech Stack: Next.js App Router, paraglide-js i18n
File Structure After Reorganization
(landing)/
├── page.tsx # Guests — homepage (unchanged)
├── experiences/ # Flattened under guests
│ ├── dinner-theater/page.tsx # → /experiences/dinner-theater
│ ├── private-events/page.tsx # → /experiences/private-events
│ ├── artist-performances/page.tsx # MOVED to /artists/performances
│ ├── creative-workshop/page.tsx # → /experiences/creative-workshop
│ ├── our-evening/page.tsx # → /experiences/our-evening
│ └── french-mentalist/page.tsx # → /experiences/french-mentalist
├── artists/ # NEW segment
│ ├── page.tsx # Artists landing (redirect or hero)
│ ├── performances/page.tsx # FROM experiences/artist-performances
│ └── join-us/page.tsx # FROM host-an-event/page.mdx
├── venues/ # NEW segment
│ └── page.tsx # FROM venue-rental/page.tsx
├── about/page.tsx # Keep at root (shared info)
├── contact/page.tsx # Keep at root (shared info)
├── reviews/page.tsx # Keep at root (shared social proof)
├── schedule/page.tsx # Keep at root (guest-facing schedule)
└── wall/page.tsx # Keep at root (guest gallery)Tasks
Task 1: Create /artists/ segment directory and landing page
Files:
-
Create:
apps/frontend/app/[locale]/(landing)/artists/page.tsx -
Create:
apps/frontend/components/artists/artists-client.tsx -
Step 1: Create artists landing page
// apps/frontend/app/[locale]/(landing)/artists/page.tsx
// ipsoc checked: 2026-05-08
// SoC: Static page that delegates to client
import { ArtistsClient } from "~/components/artists/artists-client";
export default function ArtistsPage() {
return <ArtistsClient />;
}- Step 2: Create artists client component
// apps/frontend/components/artists/artists-client.tsx
// ipsoc checked: 2026-05-08
// SoC: Page composition for artists segment
"use client";
import { PageHero } from "~/components/features/sections/page-hero";
import { SectionDivider } from "~/components/ui/section-divider";
import { Heading } from "~/components/ui/typography";
import { m } from "~/src/paraglide/messages";
export function ArtistsClient() {
return (
<main className="pt-[var(--header-height)]">
<PageHero
title={m.artists_heroTitle()}
subtitle={m.artists_heroSubtitle()}
backgroundImage="/images/landing-page/artist-carousel-1.jpg"
/>
<SectionDivider />
{/* Artist-specific sections to be added */}
</main>
);
}- Step 3: Add paraglide keys for artists segment
Add to messages/en.json and messages/vi.json:
{
"artists_heroTitle": "Join Our Artists",
"artists_heroSubtitle": "Perform, collaborate, and grow with House of Legends"
}- Step 4: Commit
git add apps/frontend/app/\[locale\]/\(landing\)/artists/
git commit -m "feat(landing): create /artists segment page structure"Task 2: Move artist-performances to /artists/performances
Files:
-
Create:
apps/frontend/app/[locale]/(landing)/artists/performances/page.tsx -
Create:
apps/frontend/components/artists/performances-client.tsx -
Delete:
apps/frontend/app/[locale]/(landing)/experiences/artist-performances/ -
Modify:
apps/frontend/components/homepage-client.tsx(if it links here) -
Step 1: Create performances page under artists
// apps/frontend/app/[locale]/(landing)/artists/performances/page.tsx
// ipsoc checked: 2026-05-08
import { ArtistPerformancesClient } from "~/components/artists/performances-client";
export default function ArtistPerformancesPage() {
return <ArtistPerformancesClient />;
}- Step 2: Create performances client component (move content from existing)
Move content from apps/frontend/components/features/dinner-theater/artist-performances-client.tsx to new location, updating imports.
- Step 3: Delete old artist-performances directory
rm -rf apps/frontend/app/\[locale\]/\(landing\)/experiences/artist-performances/- Step 4: Commit
git add apps/frontend/app/\[locale\]/\(landing\)/artists/performances/
git add apps/frontend/components/artists/performances-client.tsx
git rm -r apps/frontend/app/\[locale\]/\(landing\)/experiences/artist-performances/
git commit -m "feat(landing): move artist-performances to /artists/performances"Task 3: Convert host-an-event to /artists/join-us
Files:
-
Create:
apps/frontend/app/[locale]/(landing)/artists/join-us/page.tsx -
Create:
apps/frontend/components/artists/join-us-client.tsx -
Delete:
apps/frontend/app/[locale]/(landing)/host-an-event/page.mdx -
Delete:
apps/frontend/app/[locale]/(landing)/host-an-event/directory -
Step 1: Create join-us page
// apps/frontend/app/[locale]/(landing)/artists/join-us/page.tsx
// ipsoc checked: 2026-05-08
import { JoinUsClient } from "~/components/artists/join-us-client";
export default function JoinUsPage() {
return <JoinUsClient />;
}- Step 2: Create join-us client component
Convert content from apps/frontend/app/[locale]/(landing)/host-an-event/page.mdx to TSX component.
- Step 3: Delete host-an-event directory
rm -rf apps/frontend/app/\[locale\]/\(landing\)/host-an-event/- Step 4: Commit
git add apps/frontend/app/\[locale\]/\(landing\)/artists/join-us/
git rm -r apps/frontend/app/\[locale\]/\(landing\)/host-an-event/
git commit -m "feat(landing): move host-an-event to /artists/join-us"Task 4: Create /venues/ segment with venue-rental
Files:
-
Create:
apps/frontend/app/[locale]/(landing)/venues/page.tsx -
Create:
apps/frontend/components/venues/venues-client.tsx -
Delete:
apps/frontend/app/[locale]/(landing)/venue-rental/ -
Modify: Navigation components (update links)
-
Step 1: Create venues landing page
// apps/frontend/app/[locale]/(landing)/venues/page.tsx
// ipsoc checked: 2026-05-08
import { VenuesClient } from "~/components/venues/venues-client";
export default function VenuesPage() {
return <VenuesClient />;
}- Step 2: Move venue-rental content to venues
Move content from apps/frontend/components/features/venue-rental/ to apps/frontend/components/venues/.
- Step 3: Delete old venue-rental directory
rm -rf apps/frontend/app/\[locale\]/\(landing\)/venue-rental/- Step 4: Commit
git add apps/frontend/app/\[locale\]/\(landing\)/venues/
git rm -r apps/frontend/app/\[locale\]/\(landing\)/venue-rental/
git commit -m "feat(landing): move venue-rental to /venues"Task 5: Update navigation links
Files:
-
Modify:
apps/frontend/components/layout/header.tsx -
Modify:
apps/frontend/components/layout/mobile-nav.tsx(if exists) -
Modify:
apps/frontend/lib/data/nav-links.ts -
Step 1: Update nav-links.ts to reflect new structure
// apps/frontend/lib/data/nav-links.ts
// Update links to point to new segments- Step 2: Update header navigation components
Update any hardcoded links to use new /artists/ and /venues/ paths.
- Step 3: Commit
git add apps/frontend/components/layout/header.tsx
git add apps/frontend/lib/data/nav-links.ts
git commit -m "feat(landing): update nav links for new audience segment URLs"Task 6: Flatten experiences subdirectory (keep structure, no URL change)
Files:
-
No file moves needed — experiences already at
/experiences/*URLs -
Just ensure homepage and navigation correctly reference them
-
Step 1: Verify homepage links to experiences correctly
Check apps/frontend/components/homepage-client.tsx and update any hardcoded experience paths.
- Step 2: Commit
git commit -m "style(landing): verify experience links in homepage"Navigation Structure After
Homepage (Guests)
├── /experiences/dinner-theater
├── /experiences/private-events
├── /experiences/creative-workshop
├── /experiences/our-evening
├── /experiences/french-mentalist
├── /schedule
├── /reviews
├── /about
├── /contact
└── /wall
/artists (NEW)
├── /artists/performances
└── /artists/join-us
/venues (NEW)
└── (venue content)Notes
- No content changes — only URL restructuring and navigation updates
- paraglide message keys needed for new artist/venue segment pages
- Keep
experiences/URL structure (/experiences/*) — it's a good organization for guests - Consider 301 redirects from old URLs to new URLs if any pages are renamed