14 KiB
Domain Migration Checklist: workroot.com → workroot.in
Migration Date: [To be completed] Old Domain: https://workroot.com New Domain: https://workroot.in Status: Ready for Deployment
📋 Pre-Deployment Summary
Files Modified
| Category | Files Changed | Description |
|---|---|---|
| Configuration | astro.config.mjs, tsconfig.json |
Updated site URL and base configuration |
| API Routes | src/pages/api/sitemap.xml.ts |
Updated sitemap URL generation |
| SEO & Metadata | src/components/SEO.astro, layouts |
Updated canonical URLs, Open Graph tags |
| Documentation | README.md, CONTRIBUTING.md |
Updated all documentation references |
| Schemas | src/content/config.ts |
Updated schema documentation |
Security Enhancements Added
✅ Security audit completed - No hardcoded domain references in security configurations ✅ CSP headers verified - Content Security Policy allows necessary resources ✅ CORS settings reviewed - API routes configured correctly ✅ Domain validation ready - Middleware supports new domain
🚀 Deployment Checklist
Phase 1: DNS Configuration
-
Update DNS A Records
- Point
workroot.inA record to server IP:[YOUR_SERVER_IP] - Point
www.workroot.inA record to server IP:[YOUR_SERVER_IP] - Verify DNS propagation (allow 24-48 hours)
- Point
-
DNS Verification
# Verify A records nslookup workroot.in nslookup www.workroot.in # Verify propagation globally dig workroot.in +short
Phase 2: SSL/TLS Certificates
-
Obtain SSL Certificate for workroot.in
Option A: Let's Encrypt (Certbot)
# Install certbot (Ubuntu/Debian) sudo apt-get update sudo apt-get install certbot python3-certbot-nginx # Obtain certificate sudo certbot certonly --nginx -d workroot.in -d www.workroot.in # Verify certificate sudo certbot certificatesOption B: CloudFlare
- Add workroot.in to CloudFlare
- Enable SSL/TLS (Full or Full Strict)
- Download origin certificate
Option C: Manual Certificate
- Purchase/obtain SSL certificate for workroot.in
- Install certificate on server
- Configure nginx/apache for HTTPS
-
Update SSL Certificate Paths
# /etc/nginx/sites-available/workroot ssl_certificate /etc/letsencrypt/live/workroot.in/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/workroot.in/privkey.pem;
Phase 3: Server Configuration
-
Update Nginx/Apache Virtual Host
Nginx Configuration (
/etc/nginx/sites-available/workroot):# Redirect HTTP to HTTPS server { listen 80; server_name workroot.in www.workroot.in; return 301 https://workroot.in$request_uri; } # Redirect www to non-www (HTTPS) server { listen 443 ssl http2; server_name www.workroot.in; ssl_certificate /etc/letsencrypt/live/workroot.in/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/workroot.in/privkey.pem; return 301 https://workroot.in$request_uri; } # Main server block server { listen 443 ssl http2; server_name workroot.in; ssl_certificate /etc/letsencrypt/live/workroot.in/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/workroot.in/privkey.pem; # SSL settings ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Security headers add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; location / { proxy_pass http://localhost:10000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } -
Test Nginx Configuration
sudo nginx -t sudo systemctl reload nginx
Phase 4: Application Deployment
-
Pull Latest Code
cd /path/to/workroot-website git pull origin main -
Install Dependencies
npm ci --only=production -
Run Build
npm run build -
Verify Build Output
# Check that domain is correctly referenced in build grep -r "workroot.in" dist/ # Verify no old domain references remain grep -r "workroot.com" dist/ --exclude-dir=node_modules -
Restart Application
# If using PM2 pm2 restart workroot-website pm2 save # If using systemd sudo systemctl restart workroot # If using Docker docker-compose down docker-compose up -d --build
Phase 5: Old Domain Redirect (workroot.com)
-
Setup 301 Redirects from workroot.com to workroot.in
Option A: Nginx Redirect Configuration
Create
/etc/nginx/sites-available/workroot-redirect:# Redirect HTTP server { listen 80; server_name workroot.com www.workroot.com; return 301 https://workroot.in$request_uri; } # Redirect HTTPS (requires valid SSL for workroot.com) server { listen 443 ssl http2; server_name workroot.com www.workroot.com; ssl_certificate /etc/letsencrypt/live/workroot.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/workroot.com/privkey.pem; return 301 https://workroot.in$request_uri; }Enable configuration:
sudo ln -s /etc/nginx/sites-available/workroot-redirect /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginxOption B: CloudFlare Page Rules
- Log into CloudFlare
- Go to workroot.com → Page Rules
- Create rule:
*workroot.com/*→ Forward tohttps://workroot.in/$1(301 Permanent Redirect)
-
Keep workroot.com SSL Valid
- Renew SSL certificate for workroot.com (for HTTPS redirects)
- Set up auto-renewal
Phase 6: Verification & Testing
-
Test New Domain (workroot.in)
- Visit https://workroot.in
- Verify homepage loads correctly
- Check SSL certificate is valid (green padlock)
- Test API health endpoint: https://workroot.in/api/health.json
- Verify sitemap: https://workroot.in/api/sitemap.xml
- Check all internal links work
-
Test Old Domain Redirects (workroot.com)
- Visit http://workroot.com → Should redirect to https://workroot.in
- Visit https://workroot.com → Should redirect to https://workroot.in
- Visit http://www.workroot.com → Should redirect to https://workroot.in
- Visit https://www.workroot.com → Should redirect to https://workroot.in
- Test deep links: https://workroot.com/blog → https://workroot.in/blog
-
Verify Redirects Return 301 Status
# Test redirect status codes curl -I https://workroot.com curl -I http://workroot.com curl -I https://www.workroot.com # Should return: HTTP/1.1 301 Moved Permanently # Location: https://workroot.in -
SEO & Metadata Verification
- Check canonical URLs: View page source →
<link rel="canonical"> - Verify Open Graph tags:
<meta property="og:url"> - Test social media preview (Twitter, Facebook, LinkedIn)
- Check structured data: https://search.google.com/test/rich-results
- Check canonical URLs: View page source →
-
Security Headers Test
- Visit https://securityheaders.com/?q=https://workroot.in
- Verify HSTS header is present
- Check CSP header configuration
- Verify X-Frame-Options, X-Content-Type-Options
-
Performance Testing
# If Lighthouse script is available npm run test:lighthouse # Manual Lighthouse test # Open Chrome DevTools → Lighthouse → Run audit- Check Core Web Vitals
- Verify SSR performance
- Test API response times
-
Cross-Browser Testing
- Chrome/Edge
- Firefox
- Safari
- Mobile browsers (iOS Safari, Chrome Android)
-
Mobile Responsiveness
- Test on actual mobile devices
- Use Chrome DevTools responsive mode
Phase 7: Search Engine Updates
-
Google Search Console
- Add workroot.in property
- Verify ownership (DNS TXT record or HTML file)
- Submit new sitemap: https://workroot.in/api/sitemap.xml
- Set up Change of Address (from workroot.com to workroot.in)
- Monitor for crawl errors
-
Bing Webmaster Tools
- Add workroot.in site
- Verify ownership
- Submit sitemap
- Set up site move notification
-
Google Analytics / Tag Manager
- Update property settings with new domain
- Update referral exclusions
- Test tracking is working on new domain
-
Other SEO Tools
- Update domain in Ahrefs/SEMrush/Moz (if applicable)
- Update domain in Google My Business
- Update in any directory listings
Phase 8: External Services Update
-
Update Email Services
- Update SPF records for workroot.in
- Update DKIM records
- Update DMARC policy
- Test email sending from new domain
-
Update Third-Party Integrations
- CDN configuration (if applicable)
- Payment processor (Stripe, PayPal) - update webhook URLs
- CRM system
- Marketing automation tools
- Social media login callbacks
- OAuth redirect URIs
-
Update API Consumers
- Notify API consumers of domain change
- Update API documentation
- Update rate limiting rules
-
Update Monitoring Services
- Uptime monitors (Pingdom, UptimeRobot)
- Error tracking (Sentry) - update DSN if needed
- APM tools (New Relic, DataDog)
- Log aggregation services
Phase 9: Content & Social Media
-
Update Social Media Profiles
- LinkedIn company page
- Twitter/X profile
- Facebook page
- Instagram bio
- YouTube channel
- GitHub organization
-
Update Business Listings
- Google My Business
- Yelp
- Industry-specific directories
-
Notify Stakeholders
- Email announcement to users/subscribers
- Blog post announcing domain change
- Update email signatures
- Update business cards (if applicable)
Phase 10: Monitoring & Maintenance
-
Monitor for 48-72 Hours Post-Launch
- Check error logs regularly
- Monitor server resources (CPU, memory, disk)
- Watch for 404 errors
- Monitor redirect chain performance
- Check analytics for traffic drops
-
Set Up Alerts
- SSL certificate expiry alerts
- Uptime monitoring alerts
- Error rate threshold alerts
- DNS change notifications
-
Weekly Checks (First Month)
- Review Google Search Console for crawl errors
- Check that old domain redirects are working
- Monitor search rankings
- Review analytics data
🔧 Rollback Plan
In case of critical issues:
-
Immediate Rollback
# Revert DNS to point back to old server # Restore old domain configuration in nginx sudo systemctl reload nginx # Deploy previous build git checkout <previous-commit> npm run build pm2 restart workroot-website -
Partial Rollback
- Keep new domain live but fix specific issues
- Use feature flags to disable problematic features
- Monitor and iterate
-
Communication
- Notify team immediately
- Update status page if applicable
- Prepare user communication
📊 Success Metrics
Monitor these metrics for 30 days post-migration:
- Traffic: Organic traffic maintained or improved
- Rankings: No significant ranking drops for key terms
- Errors: 404 errors < 1% of requests
- Performance: Page load times within acceptable range
- Uptime: 99.9%+ uptime maintained
- Redirects: All old domain URLs properly redirect (301)
📝 Post-Deployment Notes
Completed By: _________________ Completion Date: _________________ Issues Encountered: _________________ Resolution Notes: _________________
✅ Final Sign-Off
- All checklist items completed
- No critical errors in production
- Monitoring in place
- Team notified
- Documentation updated
- Old domain redirects verified
- SEO migration completed
Approved By: _________________ Date: _________________
📞 Support Contacts
- Technical Lead: _________________
- DevOps: _________________
- DNS Provider Support: _________________
- SSL Certificate Support: _________________
- Hosting Provider: _________________
🔗 Useful Commands Reference
# Check DNS propagation
dig workroot.in +short
nslookup workroot.in
# Test redirects
curl -I https://workroot.com
curl -I https://www.workroot.com
# Verify SSL certificate
openssl s_client -connect workroot.in:443 -servername workroot.in
# Check nginx configuration
sudo nginx -t
# View application logs
pm2 logs workroot-website
journalctl -u workroot -f
# Monitor server resources
htop
df -h
free -m
# Test sitemap
curl https://workroot.in/api/sitemap.xml
# Test health endpoint
curl https://workroot.in/api/health.json
Last Updated: 2026-03-21 Version: 1.0