Implement a complete investor access system for the pitch deck: - Passwordless magic link auth (jose JWT + nodemailer SMTP) - Per-investor audit logging (slide views, assumption changes, chat) - Financial model snapshot persistence (auto-save/restore per investor) - PWA support (manifest, service worker, offline caching, icons) - Security safeguards (watermark overlay, rate limiting, anti-scraping headers, content protection, single-session enforcement) - Admin API for invite/revoke/audit-log management - Integrated into docker-compose.coolify.yml for production deployment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
773 B
TypeScript
26 lines
773 B
TypeScript
'use client'
|
|
|
|
import { useState, useCallback } from 'react'
|
|
import { Language } from '@/lib/types'
|
|
import { useAuth } from '@/lib/hooks/useAuth'
|
|
import PitchDeck from '@/components/PitchDeck'
|
|
|
|
export default function Home() {
|
|
const [lang, setLang] = useState<Language>('de')
|
|
const { investor, loading, logout } = useAuth()
|
|
|
|
const toggleLanguage = useCallback(() => {
|
|
setLang(prev => prev === 'de' ? 'en' : 'de')
|
|
}, [])
|
|
|
|
if (loading) {
|
|
return (
|
|
<div className="h-screen flex items-center justify-center">
|
|
<div className="w-12 h-12 border-2 border-indigo-500 border-t-transparent rounded-full animate-spin" />
|
|
</div>
|
|
)
|
|
}
|
|
|
|
return <PitchDeck lang={lang} onToggleLanguage={toggleLanguage} investor={investor} onLogout={logout} />
|
|
}
|