- Basic metadata in
layout.tsx - Robots.txt (
robots.ts) - Dynamic sitemap (
sitemap.ts) - Open Graph tags
- Twitter Card tags
- Favicon - Currently has basic favicon, needs modern formats
- OG Image - Referenced but doesn't exist (
/og-image.jpg) - Dynamic Metadata - Poet and poem pages need individual metadata
- Google Verification - Placeholder code needs real verification
- Place in:
public/directory - Next.js will automatically serve from
public/favicon.ico
- Format: ICO (Windows icon format)
- Sizes: Multi-size ICO file containing:
- 16x16 pixels
- 32x32 pixels
- 48x48 pixels (optional, but recommended)
Place these in public/:
-
apple-touch-icon.png
- Size: 180x180 pixels
- Format: PNG
- Used by iOS devices
-
favicon-32x32.png
- Size: 32x32 pixels
- Format: PNG
-
favicon-16x16.png
- Size: 16x16 pixels
- Format: PNG
-
android-chrome-192x192.png
- Size: 192x192 pixels
- Format: PNG
- Used by Android devices
-
android-chrome-512x512.png
- Size: 512x512 pixels
- Format: PNG
- Used by Android devices
- Use your logo or a simple, recognizable icon
- Ensure it's readable at small sizes (16x16)
- Test in both light and dark backgrounds
- Consider RTL/language context (Persian text might be too small)
- Favicon.io - Generate from image or text
- RealFaviconGenerator - Complete favicon generator
- Canva - Design tool
- Place in:
public/og-image.jpg(or.png) - Currently referenced in
layout.tsxas/og-image.jpg
- Format: JPG or PNG (JPG recommended for smaller file size)
- Size: 1200x630 pixels (1.91:1 aspect ratio)
- File Size: Under 1MB (aim for 200-500KB)
- Colors: RGB color space
- Site name: "دفتر گنج" (Defter Ganj)
- Tagline/subtitle: "مجموعهای از بهترین اشعار فارسی"
- Visual elements: Persian poetry theme, calligraphy, or elegant design
- Brand colors: Match your site's color scheme
- Twitter/X
- Telegram
- Most messaging apps
- Keep text large and readable
- Use high contrast
- Include your logo/branding
- Test how it looks when cropped (some platforms crop differently)
- Consider both light and dark mode appearances
Need to add metadata export:
export async function generateMetadata({ params }): Promise<Metadata> {
// Fetch poet data
// Return dynamic title, description, OG image, etc.
}Need to add metadata export:
export async function generateMetadata({ params }): Promise<Metadata> {
// Fetch poem data
// Return dynamic title, description, OG image with poem preview
}Add structured data for:
- Organization - Site information
- WebSite - Search functionality
- BreadcrumbList - Navigation structure
- Article (for poems) - Poem content
-
Update verification code in
layout.tsx:verification: { google: 'your-actual-verification-code', },
-
Submit sitemap to Google Search Console:
https://www.ganj.directory/sitemap.xml
Consider adding:
- Alternate languages (if multi-language)
- Author tags (for poems)
- Article tags (for poems)
- Canonical URLs (already partially implemented)
-
Prepare Assets:
- Create favicon (ICO format with multiple sizes)
- Create OG image (1200x630px JPG)
-
After Assets Ready:
- I'll update the code to:
- Add favicon links to HTML head
- Add dynamic metadata for poet/poem pages
- Add structured data (JSON-LD)
- Update verification codes
- I'll update the code to:
-
Testing:
- Test OG image: Facebook Sharing Debugger
- Test Twitter card: Twitter Card Validator
- Test favicon: Favicon Checker
-
High Priority:
- OG Image (needed for social sharing)
- Favicon (basic branding)
-
Medium Priority:
- Dynamic metadata for pages
- Structured data
-
Low Priority:
- Additional favicon formats
- Google verification
Ready when you are! Just prepare the favicon and OG image, and I'll handle the code updates. 🚀