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:
Claude Assistant
2025-09-22 18:40:21 +00:00
parent b24251eb2d
commit d4b0062521
18 changed files with 256 additions and 249 deletions

View File

@@ -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')
}
}