| # Deploy script for JobPortal | |
| # Usage: ./deploy/deploy.sh [backend|frontend|all] | |
| set -e | |
| COMPONENT=${1:-all} | |
| echo "π Deploying JobPortal ($COMPONENT)" | |
| deploy_backend() { | |
| echo "π¦ Deploying backend to Fly.io..." | |
| cd backend | |
| # Set secrets if not already set | |
| if [ -n "$DATABASE_URL" ]; then | |
| flyctl secrets set DATABASE_URL="$DATABASE_URL" --stage | |
| fi | |
| if [ -n "$REDIS_URL" ]; then | |
| flyctl secrets set REDIS_URL="$REDIS_URL" --stage | |
| fi | |
| if [ -n "$SECRET_KEY" ]; then | |
| flyctl secrets set SECRET_KEY="$SECRET_KEY" --stage | |
| fi | |
| # Deploy | |
| flyctl deploy --remote-only | |
| echo "β Backend deployed!" | |
| echo " URL: https://jobportal-api.fly.dev" | |
| echo " Docs: https://jobportal-api.fly.dev/api/v1/docs" | |
| cd .. | |
| } | |
| deploy_frontend() { | |
| echo "π¦ Deploying frontend to Vercel..." | |
| cd frontend | |
| # Deploy with Vercel CLI | |
| if command -v vercel &> /dev/null; then | |
| vercel --prod | |
| else | |
| echo "β οΈ Vercel CLI not installed. Run: npm i -g vercel" | |
| echo " Then: cd frontend && vercel --prod" | |
| fi | |
| echo "β Frontend deployed!" | |
| cd .. | |
| } | |
| deploy_worker() { | |
| echo "π¦ Deploying worker to Fly.io..." | |
| cd backend | |
| # Scale worker machine | |
| flyctl machine run . \ | |
| --app jobportal-worker \ | |
| --region sjc \ | |
| --vm-size shared-cpu-1x \ | |
| --vm-memory 512 \ | |
| --entrypoint "celery -A app.worker.celery_config.celery_app worker --loglevel=warning --concurrency=2" | |
| echo "β Worker deployed!" | |
| cd .. | |
| } | |
| case $COMPONENT in | |
| backend) | |
| deploy_backend | |
| ;; | |
| frontend) | |
| deploy_frontend | |
| ;; | |
| worker) | |
| deploy_worker | |
| ;; | |
| all) | |
| deploy_backend | |
| deploy_frontend | |
| deploy_worker | |
| ;; | |
| *) | |
| echo "Usage: ./deploy.sh [backend|frontend|worker|all]" | |
| exit 1 | |
| ;; | |
| esac | |
| echo "" | |
| echo "π Deployment complete!" | |
| echo "" | |
| echo "Useful commands:" | |
| echo " flyctl status -a jobportal-api # Backend status" | |
| echo " flyctl logs -a jobportal-api # Backend logs" | |
| echo " vercel ls # Frontend deployments" | |