- Node.js 18+
- npm
- A Supabase project (see supabase-setup.md)
npm install
npm run buildThis produces a dist/ directory with static files.
- Build the project
- Push
dist/contents to agh-pagesbranch, or use GitHub Actions:
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run build
env:
VITE_SUPABASE_URL: ${{ secrets.VITE_SUPABASE_URL }}
VITE_SUPABASE_ANON_KEY: ${{ secrets.VITE_SUPABASE_ANON_KEY }}
VITE_SITE_URL: ${{ secrets.VITE_SITE_URL }}
- uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./distSet secrets in your GitHub repo settings.
- Connect your GitHub repo to Vercel
- Vercel auto-detects Vite — no config needed
- Add environment variables in Vercel dashboard:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYVITE_SITE_URL
- Connect your GitHub repo
- Build command:
npm run build - Publish directory:
dist - Add environment variables in Netlify dashboard
After deploying, configure your custom domain with your hosting provider. Update VITE_SITE_URL to match.
If using the email notification system:
supabase functions deploy send_team_email
supabase secrets set SMTP_HOST=smtp.example.com
supabase secrets set SMTP_PORT=465
supabase secrets set SMTP_USER=hackathon@example.com
supabase secrets set SMTP_PASS=your-smtp-password
supabase secrets set SITE_URL=https://your-hackathon.example.com