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
501 lines
14 KiB
Markdown
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
|