Current Production Setup
Live site: https://paintingcreatures-a11y.github.io/200mates/ Repository: https://github.com/paintingcreatures-a11y/200mates Hosting: GitHub PagesAs a vanilla JavaScript application with no build step, deployment is as simple as uploading the files to a static hosting service.
GitHub Pages Deployment
The project is currently deployed using GitHub Pages. Here’s how it’s configured:Automatic Deployment
Enable GitHub Pages
- Go to your repository on GitHub
- Navigate to Settings → Pages
- Under “Source”, select the branch to deploy (typically
mainormaster) - Select the root directory
/(not/docs) - Click Save
Wait for deployment
GitHub Actions will automatically build and deploy your site. You can monitor the progress in the Actions tab.The first deployment typically takes 1-2 minutes.
Manual Deployment
For manual updates:Alternative Hosting Options
200 Mates can be deployed to any static hosting platform:Netlify
Connect repository
- Create a Netlify account
- Click “Add new site” → “Import an existing project”
- Connect your GitHub repository
Configure build settings
Build settings:
- Build command: (leave empty)
- Publish directory:
/or./ - No build step needed!
- Automatic HTTPS
- Branch previews
- Form handling (though not needed for this project)
- Instant rollbacks
Vercel
Cloudflare Pages
Firebase Hosting
AWS S3 + CloudFront
Deployment Checklist
Before deploying to production:Environment Configuration
Environment Configuration
✅ Verify Supabase credentials in
config/constants.js✅ Ensure production Supabase project has proper RLS policies✅ Test database connection from deployed environmentAsset Optimization
Asset Optimization
✅ Confirm all CDN resources load correctly (Bootstrap, Globe.gl, etc.)✅ Check that external font loads properly✅ Verify images compress appropriately (handle this in Supabase Storage settings)
Functionality Testing
Functionality Testing
✅ Test form submission from production URL✅ Verify GPS permission prompts work on HTTPS✅ Check language switching✅ Test gallery loading and lightbox✅ Confirm globe renders on various devices
Performance
Performance
✅ Check Lighthouse scores (should be high since it’s vanilla JS)✅ Test load time on slow connections✅ Verify auto-refresh (30-second polling) doesn’t cause issues
Security
Security
✅ Ensure HTTPS is enabled✅ Verify Supabase RLS policies are active✅ Check that file uploads respect size limits✅ Test content moderation flow
CI/CD Pipeline (Optional)
For automated deployments, create a GitHub Actions workflow:.github/workflows/deploy.yml
Since 200 Mates has no build step, the CI/CD pipeline is optional. GitHub Pages already auto-deploys on push.
Post-Deployment
Monitoring
Monitor your deployment with:- Google Analytics or Plausible for traffic
- Sentry or LogRocket for error tracking
- Supabase Dashboard for database activity and API usage
- Browser Console for client-side errors
Maintenance
Regular maintenance tasks:-
Update dependencies - CDN links in
index.html:11-15 - Monitor Supabase quotas - Free tier has limits on storage and API requests
- Review submissions - Check for inappropriate content via moderation panel
- Backup data - Export mate submissions periodically from Supabase
Rollback Procedure
If you need to rollback a deployment:GitHub Pages
Netlify/Vercel
Use the dashboard to rollback to a previous deployment with one click.Domain Configuration
If using a custom domain:DNS Records
For apex domain (200mates.com):HTTPS Certificate
GitHub Pages automatically provisions Let’s Encrypt certificates for custom domains. Enable “Enforce HTTPS” in repository settings after DNS propagates.Troubleshooting
404 errors on refresh
404 errors on refresh
Problem: Refreshing pages shows 404Solution: For GitHub Pages, this shouldn’t happen since 200 Mates is a single-page app. If it does, add a custom 404.html that redirects to index.html:
404.html
Supabase connection fails
Supabase connection fails
Problem: Database requests return errorsSolution:
- Check CORS settings in Supabase
- Verify URL and anon key in
config/constants.js - Check browser console for specific error messages
Assets not loading
Assets not loading
Problem: CDN resources fail to loadSolution:
- Check CDN URLs are correct and using HTTPS
- Verify no Content Security Policy is blocking external resources
- Test CDN availability from your region
GPS not working in production
GPS not working in production
Problem: Geolocation permission deniedSolution:
- Ensure site is served over HTTPS (required for geolocation API)
- Check browser console for permission errors
- Verify GPS code in
modules/gps.jshandles errors gracefully
Back to Development Docs
Return to the development setup guide.