Implement comprehensive homepage improvements and SEO optimization
Major homepage and SEO enhancements based on optimization document: **Homepage Content Updates:** - Updated H1 titles with SEO-optimized text for both RO/EN - Enhanced hero descriptions with targeted keywords - Improved feature descriptions for better clarity - Updated daily verse section with keyword-rich titles - Added new footer description with SEO focus **SEO Implementation:** - Added dynamic metadata generation with locale-specific SEO - Implemented Open Graph tags for social media sharing - Added Twitter Card metadata for enhanced sharing - Integrated Schema.org JSON-LD structured data - Set up hreflang tags for international SEO - Added canonical URLs to prevent duplicate content - Included targeted keywords for both languages **Technical Improvements:** - Migrated from Docker to PM2 deployment - Removed Docker files and updated deployment scripts - Updated README with PM2 instructions - Fixed console log cleanup for production - Added proper favicon with Next.js app directory - Increased memory limit to 4GB for better performance - Updated port configuration to 0.0.0.0:3010 - Set Romanian (/ro) as default locale with proper redirects **Translation Updates:** - Enhanced Romanian translations with SEO-optimized content - Updated English translations with matching SEO improvements - Added new 'seo' namespace for metadata translations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -2,16 +2,13 @@ export function isTokenExpired(token: string): boolean {
|
||||
try {
|
||||
const payload = JSON.parse(atob(token.split('.')[1])) as { exp?: number }
|
||||
if (!payload || !payload.exp) {
|
||||
console.log('Token has no expiration data')
|
||||
return true
|
||||
return true
|
||||
}
|
||||
|
||||
const currentTime = Math.floor(Date.now() / 1000)
|
||||
const isExpired = payload.exp < currentTime
|
||||
console.log(`Token expiration check: exp=${payload.exp}, now=${currentTime}, expired=${isExpired}`)
|
||||
return isExpired
|
||||
} catch (error) {
|
||||
console.log('Token validation error:', error)
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -19,11 +16,8 @@ export function isTokenExpired(token: string): boolean {
|
||||
export function clearExpiredToken(): void {
|
||||
const token = localStorage.getItem('authToken')
|
||||
if (token && isTokenExpired(token)) {
|
||||
console.log('Clearing expired token from localStorage')
|
||||
localStorage.removeItem('authToken')
|
||||
} else if (token) {
|
||||
console.log('Token exists and is valid')
|
||||
} else {
|
||||
console.log('No token in localStorage')
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user