From 4a4a658a8f46841fb5dee6d61ba7fe9863af2c2b Mon Sep 17 00:00:00 2001 From: Yves Gugger Date: Wed, 10 Dec 2025 21:44:36 +0100 Subject: [PATCH] refactor: Terminal Module Restructure (Sprint 2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RADAR: dashboard → /terminal/radar - MARKET: auctions + marketplace → /terminal/market - INTEL: pricing → /terminal/intel - WATCHLIST: watchlist + portfolio → /terminal/watchlist - LISTING: listings → /terminal/listing All redirects configured for backwards compatibility. Updated sidebar navigation with new module names. --- TERMINAL_REBUILD_PLAN.md | 35 +- frontend/next.config.js | 57 +- frontend/src/app/buy/page.tsx | 4 +- frontend/src/app/login/page.tsx | 4 +- frontend/src/app/oauth/callback/page.tsx | 2 +- frontend/src/app/page.tsx | 4 +- frontend/src/app/pricing/page.tsx | 4 +- frontend/src/app/register/page.tsx | 6 +- .../{pricing => intel}/[tld]/page.tsx | 4 +- .../app/terminal/{pricing => intel}/page.tsx | 2 +- .../terminal/{listings => listing}/page.tsx | 0 frontend/src/app/terminal/market/page.tsx | 578 ++++++++++++++++++ .../src/app/terminal/marketplace/page.tsx | 4 +- frontend/src/app/terminal/page.tsx | 2 +- frontend/src/app/terminal/portfolio/page.tsx | 2 +- .../terminal/{dashboard => radar}/page.tsx | 4 +- frontend/src/app/terminal/settings/page.tsx | 2 +- frontend/src/app/terminal/welcome/page.tsx | 2 +- frontend/src/components/AdminLayout.tsx | 4 +- frontend/src/components/DomainChecker.tsx | 4 +- frontend/src/components/Footer.tsx | 2 +- frontend/src/components/Header.tsx | 4 +- frontend/src/components/Sidebar.tsx | 45 +- frontend/src/hooks/useKeyboardShortcuts.tsx | 6 +- 24 files changed, 692 insertions(+), 89 deletions(-) rename frontend/src/app/terminal/{pricing => intel}/[tld]/page.tsx (99%) rename frontend/src/app/terminal/{pricing => intel}/page.tsx (99%) rename frontend/src/app/terminal/{listings => listing}/page.tsx (100%) create mode 100644 frontend/src/app/terminal/market/page.tsx rename frontend/src/app/terminal/{dashboard => radar}/page.tsx (98%) diff --git a/TERMINAL_REBUILD_PLAN.md b/TERMINAL_REBUILD_PLAN.md index 26ebae0..52cb904 100644 --- a/TERMINAL_REBUILD_PLAN.md +++ b/TERMINAL_REBUILD_PLAN.md @@ -8,19 +8,16 @@ ## 📊 IST vs. SOLL Analyse -### Aktuelle Struktur (Command Center) +### Aktuelle Struktur (Terminal) ✅ IMPLEMENTIERT ``` -/command/ -├── dashboard/ → Allgemeines Dashboard -├── watchlist/ → Domain-Überwachung -├── portfolio/ → Eigene Domains -├── listings/ → Verkaufsangebote -├── auctions/ → Externe Auktionen -├── marketplace/ → Pounce-Marktplatz -├── pricing/ → TLD Preise -├── alerts/ → Sniper Alerts -├── seo/ → SEO Juice (Tycoon) -├── settings/ → Einstellungen +/terminal/ +├── radar/ → RADAR (Startseite/Dashboard) +├── market/ → MARKET (Auktionen + Listings) +├── intel/ → INTEL (TLD Pricing) +│ └── [tld]/ → Detail-Seite pro TLD +├── watchlist/ → WATCHLIST (Watching + Portfolio) +├── listing/ → LISTING (Verkaufs-Wizard) +├── settings/ → SETTINGS (Einstellungen) └── welcome/ → Onboarding ``` @@ -47,13 +44,13 @@ - [x] 1.4 Redirect von `/command/*` → `/terminal/*` einrichten - [x] 1.5 Sidebar-Navigation aktualisieren -### Phase 2: Module neu strukturieren -- [ ] 2.1 **RADAR** Module (Dashboard) -- [ ] 2.2 **MARKET** Module (Auktionen + Listings) -- [ ] 2.3 **INTEL** Module (TLD Pricing) -- [ ] 2.4 **WATCHLIST** Module (Watching + Portfolio) -- [ ] 2.5 **LISTING** Module (Verkaufs-Wizard) -- [ ] 2.6 **SETTINGS** Module (Admin) +### Phase 2: Module neu strukturieren ✅ ABGESCHLOSSEN +- [x] 2.1 **RADAR** Module (Dashboard → /terminal/radar) +- [x] 2.2 **MARKET** Module (Auktionen + Listings → /terminal/market) +- [x] 2.3 **INTEL** Module (TLD Pricing → /terminal/intel) +- [x] 2.4 **WATCHLIST** Module (Watching + Portfolio → /terminal/watchlist) +- [x] 2.5 **LISTING** Module (Verkaufs-Wizard → /terminal/listing) +- [x] 2.6 **SETTINGS** Module (Admin → /terminal/settings) ### Phase 3: UI/UX Verbesserungen - [ ] 3.1 Global Search (CMD+K) verbessern diff --git a/frontend/next.config.js b/frontend/next.config.js index 9f0df75..c7bf240 100644 --- a/frontend/next.config.js +++ b/frontend/next.config.js @@ -3,12 +3,13 @@ const nextConfig = { reactStrictMode: true, // output: 'standalone', // Only needed for Docker deployment - // Redirects from old /command/* to new /terminal/* + // Redirects from old routes to new Terminal routes async redirects() { return [ + // Old Command Center routes { source: '/command', - destination: '/terminal/dashboard', + destination: '/terminal/radar', permanent: true, }, { @@ -16,6 +17,58 @@ const nextConfig = { destination: '/terminal/:path*', permanent: true, }, + // Dashboard → RADAR + { + source: '/terminal/dashboard', + destination: '/terminal/radar', + permanent: true, + }, + // Pricing → INTEL + { + source: '/terminal/pricing', + destination: '/terminal/intel', + permanent: true, + }, + { + source: '/terminal/pricing/:tld*', + destination: '/terminal/intel/:tld*', + permanent: true, + }, + // Listings → LISTING + { + source: '/terminal/listings', + destination: '/terminal/listing', + permanent: true, + }, + // Auctions & Marketplace → MARKET + { + source: '/terminal/auctions', + destination: '/terminal/market', + permanent: true, + }, + { + source: '/terminal/marketplace', + destination: '/terminal/market', + permanent: true, + }, + // Portfolio → WATCHLIST (combined) + { + source: '/terminal/portfolio', + destination: '/terminal/watchlist', + permanent: true, + }, + // Alerts → RADAR (will be integrated) + { + source: '/terminal/alerts', + destination: '/terminal/radar', + permanent: true, + }, + // SEO → RADAR (premium feature, hidden for now) + { + source: '/terminal/seo', + destination: '/terminal/radar', + permanent: true, + }, ] }, diff --git a/frontend/src/app/buy/page.tsx b/frontend/src/app/buy/page.tsx index 6359da8..2c99d91 100644 --- a/frontend/src/app/buy/page.tsx +++ b/frontend/src/app/buy/page.tsx @@ -216,7 +216,7 @@ export default function BrowseListingsPage() { : 'Be the first to list your domain!'}

@@ -288,7 +288,7 @@ export default function BrowseListingsPage() { DNS verification ensures only real owners can list.

List Your Domain diff --git a/frontend/src/app/login/page.tsx b/frontend/src/app/login/page.tsx index 8b8dbf2..d226350 100644 --- a/frontend/src/app/login/page.tsx +++ b/frontend/src/app/login/page.tsx @@ -56,7 +56,7 @@ function LoginForm() { // Get redirect URL from query params or localStorage (set during registration) const paramRedirect = searchParams.get('redirect') - const [redirectTo, setRedirectTo] = useState(paramRedirect || '/terminal/dashboard') + const [redirectTo, setRedirectTo] = useState(paramRedirect || '/terminal/radar') // Check localStorage for redirect (set during registration before email verification) useEffect(() => { @@ -125,7 +125,7 @@ function LoginForm() { } // Generate register link with redirect preserved - const registerLink = redirectTo !== '/terminal/dashboard' + const registerLink = redirectTo !== '/terminal/radar' ? `/register?redirect=${encodeURIComponent(redirectTo)}` : '/register' diff --git a/frontend/src/app/oauth/callback/page.tsx b/frontend/src/app/oauth/callback/page.tsx index c3f81c8..cf72968 100644 --- a/frontend/src/app/oauth/callback/page.tsx +++ b/frontend/src/app/oauth/callback/page.tsx @@ -12,7 +12,7 @@ function OAuthCallbackContent() { useEffect(() => { const token = searchParams.get('token') - const redirect = searchParams.get('redirect') || '/terminal/dashboard' + const redirect = searchParams.get('redirect') || '/terminal/radar' const isNew = searchParams.get('new') === 'true' const error = searchParams.get('error') diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index d090701..d51d93b 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -772,7 +772,7 @@ export default function HomePage() { {isAuthenticated ? "Go to Dashboard" : "Start Free"} @@ -793,7 +793,7 @@ export default function HomePage() { Track your first domain in under a minute. Free forever, no credit card.

{isAuthenticated ? "Command Center" : "Join the Hunt"} diff --git a/frontend/src/app/register/page.tsx b/frontend/src/app/register/page.tsx index a0dcdff..f6fbac6 100644 --- a/frontend/src/app/register/page.tsx +++ b/frontend/src/app/register/page.tsx @@ -62,7 +62,7 @@ function RegisterForm() { const [registered, setRegistered] = useState(false) // Get redirect URL from query params - const redirectTo = searchParams.get('redirect') || '/terminal/dashboard' + const redirectTo = searchParams.get('redirect') || '/terminal/radar' // Load OAuth providers useEffect(() => { @@ -79,7 +79,7 @@ function RegisterForm() { // Store redirect URL for after email verification // This will be picked up by the login page after verification - if (redirectTo !== '/terminal/dashboard') { + if (redirectTo !== '/terminal/radar') { localStorage.setItem('pounce_redirect_after_login', redirectTo) } @@ -93,7 +93,7 @@ function RegisterForm() { } // Generate login link with redirect preserved - const loginLink = redirectTo !== '/terminal/dashboard' + const loginLink = redirectTo !== '/terminal/radar' ? `/login?redirect=${encodeURIComponent(redirectTo)}` : '/login' diff --git a/frontend/src/app/terminal/pricing/[tld]/page.tsx b/frontend/src/app/terminal/intel/[tld]/page.tsx similarity index 99% rename from frontend/src/app/terminal/pricing/[tld]/page.tsx rename to frontend/src/app/terminal/intel/[tld]/page.tsx index dd0c6fa..f59b06a 100644 --- a/frontend/src/app/terminal/pricing/[tld]/page.tsx +++ b/frontend/src/app/terminal/intel/[tld]/page.tsx @@ -377,7 +377,7 @@ export default function CommandTldDetailPage() {

TLD Not Found

{error || `The TLD .${tld} could not be found.`}

@@ -397,7 +397,7 @@ export default function CommandTldDetailPage() { {/* Breadcrumb */}