This document outlines the SEO implementation for the DevMorphix website, including structure, components, and best practices.
- Location:
components/SEO.tsx - Implementation: Native React with
useEffectand DOM manipulation - Features:
- Dynamic title and description per page
- Open Graph tags for social media sharing
- Twitter Card tags
- Canonical URLs
- Keywords meta tags
- Robots meta tags
- No external dependencies required
- Location:
components/StructuredData.tsx - Implementation: Native React with
useEffectand DOM manipulation - Schema Types:
- Organization schema
- WebSite schema
- Service schema
- ContactPage schema
All pages are in the pages/ directory with dedicated SEO:
HomePage.tsx- Homepage with Organization & Website schemaAboutPage.tsx- About pageServicesPage.tsx- Services page with Service schemaPortfolioPage.tsx- Portfolio/work showcaseTemplatesPage.tsx- Templates catalogContactPage.tsx- Contact page with ContactPage schema
public/robots.txt- Search engine crawler directivespublic/sitemap.xml- XML sitemap for search enginesconfig/seoConfig.ts- Centralized SEO configuration
- Primary meta tags (title, description, keywords)
- Open Graph tags
- Twitter Card tags
- Favicon links
- Canonical URL
- Language and charset declarations
✅ Semantic HTML structure ✅ Mobile-responsive design (viewport meta tag) ✅ Fast loading times (optimized assets) ✅ Clean URLs with React Router ✅ Proper heading hierarchy (H1, H2, H3) ✅ Alt text for images (implement in components) ✅ XML sitemap ✅ Robots.txt file
✅ Unique title tags for each page ✅ Unique meta descriptions (150-160 characters) ✅ Keyword optimization ✅ Internal linking structure ✅ Canonical URLs to avoid duplicate content ✅ Structured data (JSON-LD)
✅ Open Graph tags for Facebook/LinkedIn ✅ Twitter Card tags ✅ Social share images (og:image)
- Create a new page component in
pages/:
import React from 'react';
import SEO from '../components/SEO';
import StructuredData from '../components/StructuredData';
import YourComponent from '../components/YourComponent';
const YourPage: React.FC = () => {
return (
<>
<SEO
title="Your Page Title"
description="Your page description (150-160 chars)"
keywords="keyword1, keyword2, keyword3"
canonical="/your-route"
ogImage="/og-your-page.jpg"
/>
<StructuredData type="WebPage" />
<YourComponent />
</>
);
};
export default YourPage;- Add the route to
App.tsx:
<Route path="/your-route" element={<YourPage />} />- Update
sitemap.xmlwith the new page.
Edit config/seoConfig.ts to update:
- Site URL
- Social media links
- Contact information
- Business details
- Default meta tags
Create Open Graph images for each page:
- Size: 1200x630 pixels
- Format: JPG or PNG
- Location:
public/og-[page-name].jpg - Update the
ogImageprop in the SEO component
- Update
siteUrlincomponents/SEO.tsxwith actual domain - Update
sitemap.xmlwith actual domain - Create and add all Open Graph images
- Add favicon files (favicon.ico, apple-touch-icon.png, etc.)
- Update contact information in StructuredData.tsx
- Verify all canonical URLs are correct
- Test meta tags with Meta Tags Debugger
- Submit sitemap to Google Search Console
- Submit sitemap to Bing Webmaster Tools
- Verify Google Search Console
- Set up Google Analytics (optional)
- Test structured data with Google Rich Results Test
- Monitor Core Web Vitals
- Check mobile-friendliness with Google Mobile-Friendly Test
- Update sitemap.xml when adding new pages
- Keep meta descriptions fresh and compelling
- Monitor search rankings
- Update content regularly
- Fix broken links
- Maintain fast loading speeds
- Meta Tags: https://metatags.io/
- Google Rich Results Test: https://search.google.com/test/rich-results
- Google Mobile-Friendly Test: https://search.google.com/test/mobile-friendly
- PageSpeed Insights: https://pagespeed.web.dev/
- Schema Markup Validator: https://validator.schema.org/
- Use lazy loading for images
- Implement code splitting for routes
- Minimize CSS and JavaScript
- Use CDN for static assets
- Enable compression (gzip/brotli)
- Optimize images (WebP format)
- Implement caching strategies
Note: Remember to update all placeholder URLs, images, and contact information with actual production values before deploying to production.