Files
CompanySite/DOMAIN-MIGRATION-CHECKLIST.md
T
Clintchiz d402256547
Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
First Init
2026-03-21 16:46:46 +05:30

501 lines
14 KiB
Markdown

# 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.in` A record to server IP: `[YOUR_SERVER_IP]`
- [ ] Point `www.workroot.in` A record to server IP: `[YOUR_SERVER_IP]`
- [ ] Verify DNS propagation (allow 24-48 hours)
- [ ] **DNS Verification**
```bash
# 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)**
```bash
# 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 certificates
```
**Option 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**
```nginx
# /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`):
```nginx
# 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**
```bash
sudo nginx -t
sudo systemctl reload nginx
```
### Phase 4: Application Deployment
- [ ] **Pull Latest Code**
```bash
cd /path/to/workroot-website
git pull origin main
```
- [ ] **Install Dependencies**
```bash
npm ci --only=production
```
- [ ] **Run Build**
```bash
npm run build
```
- [ ] **Verify Build Output**
```bash
# 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**
```bash
# 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`:
```nginx
# 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:
```bash
sudo ln -s /etc/nginx/sites-available/workroot-redirect /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
**Option B: CloudFlare Page Rules**
- [ ] Log into CloudFlare
- [ ] Go to workroot.com → Page Rules
- [ ] Create rule: `*workroot.com/*` → Forward to `https://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**
```bash
# 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
- [ ] **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**
```bash
# 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:
1. **Immediate Rollback**
```bash
# 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
```
2. **Partial Rollback**
- Keep new domain live but fix specific issues
- Use feature flags to disable problematic features
- Monitor and iterate
3. **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
```bash
# 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