Productionize EventSphere platform

This commit is contained in:
Austin A
2026-04-25 21:02:19 +01:00
commit 1f1d30a9f5
171 changed files with 18682 additions and 0 deletions

53
install-prod.sh Normal file
View File

@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail
APP_DOMAIN="${APP_DOMAIN:-event.brainshare.ng}"
API_DOMAIN="${API_DOMAIN:-api.event.brainshar.ng}"
ACME_EMAIL="${ACME_EMAIL:-admin@brainshare.ng}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}"
JWT_SECRET="${JWT_SECRET:-}"
DEFAULT_SUPERADMIN_PASSWORD="${DEFAULT_SUPERADMIN_PASSWORD:-}"
if [[ -z "$POSTGRES_PASSWORD" ]]; then
echo "POSTGRES_PASSWORD is required"
exit 1
fi
if [[ -z "$JWT_SECRET" ]]; then
echo "JWT_SECRET is required"
exit 1
fi
if [[ -z "$DEFAULT_SUPERADMIN_PASSWORD" ]]; then
echo "DEFAULT_SUPERADMIN_PASSWORD is required"
exit 1
fi
if ! command -v docker >/dev/null 2>&1; then
curl -fsSL https://get.docker.com | sh
fi
if ! docker compose version >/dev/null 2>&1; then
echo "Docker Compose plugin is required (docker compose)."
exit 1
fi
cat > .env.production <<EOF
TRAEFIK_ACME_EMAIL=$ACME_EMAIL
TRAEFIK_DOMAIN_APP=$APP_DOMAIN
TRAEFIK_DOMAIN_API=$API_DOMAIN
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
DATABASE_URL=postgresql://eventsphere:$POSTGRES_PASSWORD@postgres:5432/eventsphere
REDIS_URL=redis://redis:6379
NEXT_PUBLIC_API_URL=https://$API_DOMAIN/api/v1
JWT_SECRET=$JWT_SECRET
JWT_ACCESS_TTL=15m
JWT_REFRESH_TTL=30d
AUTO_BOOTSTRAP=1
DEFAULT_TENANT_NAME=Brainshare Events
DEFAULT_TENANT_SLUG=brainshare
DEFAULT_SUPERADMIN_FULL_NAME=Super Admin
DEFAULT_SUPERADMIN_EMAIL=superadmin@brainshare.ng
DEFAULT_SUPERADMIN_PASSWORD=$DEFAULT_SUPERADMIN_PASSWORD
EOF
docker compose -f docker-compose.prod.yml --env-file .env.production up -d --build
docker compose -f docker-compose.prod.yml --env-file .env.production ps