seo update

This commit is contained in:
2026-04-08 11:01:53 +05:30
parent de7c1d5ad8
commit eefdf32aa8
16 changed files with 607 additions and 29 deletions

View File

@@ -43,7 +43,7 @@ export default function HomePage() {
const titleInputRef = useRef<HTMLInputElement>(null)
const contentTextareaRef = useRef<HTMLTextAreaElement>(null)
const { startTour } = useOnboardingTour()
const { startTour, isTourActive } = useOnboardingTour()
// Check if onboarding should be shown after login
useEffect(() => {
@@ -52,6 +52,14 @@ export default function HomePage() {
}
}, [loading, user, userId, mongoUser])
// On-demand tour triggered from Settings (no DB read/write)
useEffect(() => {
if (!loading && user && localStorage.getItem('gj-force-tour') === 'true') {
localStorage.removeItem('gj-force-tour')
setTimeout(() => startTour(), 150)
}
}, [loading, user, startTour])
async function markTutorialDone() {
if (!user || !userId) return
const token = await user.getIdToken()
@@ -78,7 +86,7 @@ export default function HomePage() {
<div className="home-page" style={{ alignItems: 'center', justifyContent: 'center', gap: '1rem' }}>
<h1 style={{ fontFamily: '"Sniglet", system-ui', color: 'var(--color-text)' }}>Grateful Journal</h1>
<p style={{ color: 'var(--color-text-muted)' }}>Sign in to start your journal.</p>
<Link to="/login" className="home-login-link">Go to login</Link>
<Link to="/" className="home-login-link">Go to login</Link>
</div>
)
}
@@ -178,7 +186,7 @@ export default function HomePage() {
onKeyDown={handleTitleKeyDown}
enterKeyHint="next"
ref={titleInputRef}
disabled={phase !== 'idle'}
disabled={phase !== 'idle' || isTourActive}
/>
<textarea
id="tour-content-textarea"
@@ -188,7 +196,7 @@ export default function HomePage() {
onChange={(e) => setEntry(e.target.value)}
enterKeyHint="enter"
ref={contentTextareaRef}
disabled={phase !== 'idle'}
disabled={phase !== 'idle' || isTourActive}
/>
</div>
@@ -227,7 +235,7 @@ export default function HomePage() {
id="tour-save-btn"
className="journal-write-btn"
onClick={handleWrite}
disabled={phase !== 'idle' || !title.trim() || !entry.trim()}
disabled={phase !== 'idle' || isTourActive || !title.trim() || !entry.trim()}
>
{phase === 'saving' ? 'Saving...' : 'Save Entry'}
</button>

View File

@@ -13,7 +13,7 @@ export default function LoginPage() {
useEffect(() => {
if (loading) return
if (user) navigate('/', { replace: true })
if (user) navigate('/write', { replace: true })
}, [user, loading, navigate])
async function handleGoogleSignIn() {

View File

@@ -71,9 +71,8 @@ export default function SettingsPage() {
}, [])
const handleSeeTutorial = () => {
localStorage.removeItem('gj-onboarding-done')
localStorage.removeItem('gj-tour-pending-step')
navigate('/')
localStorage.setItem('gj-force-tour', 'true')
navigate('/write')
}
const displayName = mongoUser?.displayName || user?.displayName || 'User'