This guide explains how to deploy the unified GravityKit documentation site to gravitykit.dev.
- Domain Configuration: Ensure
gravitykit.devDNS is configured to point to your hosting provider - Repository: Push the
gravitykit.devdirectory to a Git repository (GitHub recommended) - Node.js: Version 18 or higher installed
Vercel provides excellent Docusaurus support with automatic deployments.
-
Connect Repository
- Go to vercel.com
- Click "New Project"
- Import your repository
- Select the
gravitykit.devdirectory as the root
-
Configure Build Settings
Build Command: npm run build Output Directory: build Install Command: npm install -
Add Domain
- Go to Project Settings → Domains
- Add
gravitykit.dev - Follow DNS configuration instructions
-
Environment Variables (Optional)
- Add Algolia search credentials if configured:
ALGOLIA_APP_IDALGOLIA_API_KEYALGOLIA_INDEX_NAME
- Add Algolia search credentials if configured:
- Every push to
mainbranch triggers automatic deployment - Preview deployments for pull requests
- Rollback capability from Vercel dashboard
Netlify also provides excellent Docusaurus support.
-
Connect Repository
- Go to netlify.com
- Click "Add new site" → "Import an existing project"
- Connect to your Git repository
-
Build Settings
- Base directory:
gravitykit.dev - Build command:
npm run build - Publish directory:
build
- Base directory:
-
Domain Configuration
- Go to Domain settings
- Add custom domain:
gravitykit.dev - Configure DNS (Netlify provides nameservers)
-
netlify.toml Configuration
- Already included in the repository
- Handles redirects, headers, and build settings
For GitHub Pages deployment:
-
Repository Setup
cd gravitykit.dev git init git add . git commit -m "Initial commit" git remote add origin <your-repo-url> git push -u origin main
-
Configure GitHub Pages
- Repository Settings → Pages
- Source: GitHub Actions (recommended) or Deploy from branch
- Custom domain:
gravitykit.dev
-
Deploy
GIT_USER=<your-github-username> npm run deploy
-
DNS Configuration
- Add CNAME record:
gravitykit.dev→<username>.github.io - Or use A records pointing to GitHub Pages IPs
- Add CNAME record:
For self-hosted deployment on your own server:
-
Build Site
cd gravitykit.dev npm install npm run build -
Upload Build Directory
- Upload
build/directory to your web server - Point
gravitykit.devto the server
- Upload
-
Web Server Configuration
Nginx Example:
server { listen 80; server_name gravitykit.dev; root /var/www/gravitykit.dev/build; index index.html; location / { try_files $uri $uri/ /index.html; } # Cache static assets location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; } }
Apache Example:
<VirtualHost *:80> ServerName gravitykit.dev DocumentRoot /var/www/gravitykit.dev/build <Directory /var/www/gravitykit.dev/build> Options -Indexes +FollowSymLinks AllowOverride All Require all granted # Handle client-side routing RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </Directory> </VirtualHost>
Follow the platform-specific DNS instructions provided in their dashboards.
Type: CNAME
Name: gravitykit.dev
Value: <username>.github.io
Type: A
Name: gravitykit.dev
Value: <your-server-ip>
- Vercel/Netlify: Automatic SSL via Let's Encrypt
- GitHub Pages: Automatic SSL support
- Self-Hosted: Use Certbot for Let's Encrypt certificates
# Self-hosted SSL with Certbot
sudo certbot --nginx -d gravitykit.dev-
Development Branch
- Create feature branches for changes
- Test locally with
npm start
-
Pull Requests
- Submit PR for review
- Preview deployments automatically created (Vercel/Netlify)
-
Main Branch
- Merge to main triggers production deployment
- Automatic build and deploy
Create .github/workflows/deploy.yml:
name: Deploy to Production
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: |
cd gravitykit.dev
npm install
- name: Build
run: |
cd gravitykit.dev
npm run build
- name: Deploy to Vercel
uses: amondnet/vercel-action@v20
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
vercel-project-id: ${{ secrets.PROJECT_ID }}- Site loads at
https://gravitykit.dev - Navigation works correctly
- All product documentation accessible
- Search functionality working (if configured)
- SSL certificate valid
- Mobile responsive design working
- Links to external resources working
-
CDN Configuration
- Vercel/Netlify provide global CDN automatically
- For self-hosted, consider Cloudflare
-
Build Optimization
// docusaurus.config.js { "future": { "experimental_faster": true } }
-
Image Optimization
- Use WebP format for images
- Add images to
static/imgdirectory - Optimize with tools like ImageOptim
-
Analytics (Optional)
- Add Google Analytics or Plausible in
docusaurus.config.js
- Add Google Analytics or Plausible in
-
Error Tracking (Optional)
- Integrate Sentry for error monitoring
-
Uptime Monitoring
- Use UptimeRobot or similar service
- Monitor
https://gravitykit.dev
# Clear cache and rebuild
npm run clear
npm install
npm run build- Check
docusaurus.config.jsbaseUrl setting - Ensure web server supports client-side routing
- Verify file paths in documentation
- Clear browser cache
- Check
src/css/custom.cssfor conflicts - Verify CSS imports in components
# Update Docusaurus and dependencies
npm update
npm audit fix
# Test locally
npm start
# Rebuild and deploy
npm run build
git add .
git commit -m "Update dependencies"
git pushSee main README.md for instructions on adding new products to the documentation.
For deployment issues:
- Check Docusaurus deployment documentation
- Review hosting provider documentation
- Contact GravityKit infrastructure team