# 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
