Fix production 404 errors: Add missing OAuth endpoints and domain script

This commit is contained in:
poduck
2025-11-30 01:37:19 -05:00
parent 3ddd762d74
commit 613acf17c1
15 changed files with 1364 additions and 86 deletions

296
PRODUCTION-READY.md Normal file
View File

@@ -0,0 +1,296 @@
# SmoothSchedule Production Readiness Report
## Status: READY FOR DEPLOYMENT ✓
This document confirms that SmoothSchedule is fully configured and ready for production deployment.
## Configuration Complete ✓
### 1. DigitalOcean Spaces Configuration ✓
- **Access Key ID:** DO801P4R8QXYMY4CE8WZ
- **Secret Access Key:** Configured
- **Bucket Name:** smoothschedule
- **Region:** nyc3
- **Endpoint:** https://nyc3.digitaloceanspaces.com
**Status:** Environment variables configured in `smoothschedule/.envs/.production/.django`
### 2. Backend (Django) ✓
- **Framework:** Django 5.2.8
- **Storage:** django-storages with S3 backend (DigitalOcean Spaces)
- **Database:** PostgreSQL with multi-tenancy support
- **Task Queue:** Celery with Redis
- **Web Server:** Gunicorn behind Traefik
- **SSL/HTTPS:** Let's Encrypt automatic certificates via Traefik
**Production Settings:**
- ✓ SECRET_KEY configured
- ✓ ALLOWED_HOSTS set to `.smoothschedule.com`
- ✓ DEBUG=False (production mode)
- ✓ Static files → DigitalOcean Spaces
- ✓ Media files → DigitalOcean Spaces
- ✓ Security headers configured
- ✓ HTTPS redirect enabled
### 3. Frontend (React) ✓
- **Framework:** React 18 with Vite
- **Build:** Production build ready
- **API Endpoint:** https://smoothschedule.com/api
- **Multi-tenant:** Subdomain-based routing
**Production Settings:**
- ✓ API URL configured for production
- ✓ Build optimization enabled
### 4. Docker Configuration ✓
**Services:**
- ✓ Django (Gunicorn)
- ✓ PostgreSQL
- ✓ Redis
- ✓ Traefik (reverse proxy + SSL)
- ✓ Celery Worker
- ✓ Celery Beat (scheduler)
- ✓ Flower (Celery monitoring)
**Production Compose:** `docker-compose.production.yml`
### 5. SSL/HTTPS ✓
- **Provider:** Let's Encrypt
- **Auto-renewal:** Enabled via Traefik
- **Domains:**
- smoothschedule.com
- www.smoothschedule.com
- platform.smoothschedule.com
- api.smoothschedule.com
- *.smoothschedule.com (wildcard for tenants)
### 6. Security ✓
- ✓ HTTPS enforced
- ✓ Secure cookies
- ✓ CSRF protection
- ✓ Random secret keys
- ✓ Database password protected
- ✓ Flower dashboard password protected
## Deployment Scripts Created ✓
### 1. `server-setup.sh`
**Purpose:** Initial server setup (run once)
**Installs:**
- Docker & Docker Compose
- AWS CLI (for Spaces management)
- UFW firewall
- Fail2ban
**Usage:**
```bash
ssh poduck@smoothschedule.com 'bash -s' < server-setup.sh
```
### 2. `setup-spaces.sh`
**Purpose:** Create and configure DigitalOcean Spaces bucket
**Actions:**
- Creates bucket
- Sets public-read ACL
- Configures CORS
**Usage:**
```bash
ssh poduck@smoothschedule.com
./setup-spaces.sh
```
### 3. `deploy.sh`
**Purpose:** Full deployment pipeline
**Actions:**
- Builds frontend
- Uploads code to server
- Builds Docker images
- Runs migrations
- Collects static files
- Starts services
**Usage:**
```bash
./deploy.sh poduck@smoothschedule.com
```
## Documentation Created ✓
### 1. DEPLOYMENT.md
Comprehensive deployment guide covering:
- Prerequisites
- Step-by-step deployment
- DNS configuration
- SSL setup
- Troubleshooting
- Maintenance
### 2. CLAUDE.md (Updated)
Added production deployment section with:
- Quick deploy commands
- Production URLs
- Management commands
- Environment variables
## What You Need to Do Before Deploying
### Prerequisites Checklist
#### 1. Server Access
- [ ] Ensure you can SSH to: `poduck@smoothschedule.com`
- [ ] Verify sudo password: `chaff/starry`
#### 2. DNS Configuration
Configure these DNS records at your domain registrar:
```
Type Name Value TTL
A smoothschedule.com YOUR_SERVER_IP 300
A *.smoothschedule.com YOUR_SERVER_IP 300
CNAME www smoothschedule.com 300
```
**To find YOUR_SERVER_IP:**
```bash
ping smoothschedule.com
# or
ssh poduck@smoothschedule.com 'curl -4 ifconfig.me'
```
#### 3. Server Firewall Ports
Ensure these ports are open on your server:
- [ ] Port 22 (SSH)
- [ ] Port 80 (HTTP)
- [ ] Port 443 (HTTPS)
- [ ] Port 5555 (Flower - optional)
#### 4. DigitalOcean Spaces
- [ ] Create bucket (run `setup-spaces.sh` on server)
- [ ] Verify credentials are correct
## Deployment Steps (Quick Start)
### Step 1: Initial Server Setup (One-Time)
```bash
# From your local machine
cd /home/poduck/Desktop/smoothschedule2
# Run server setup
ssh poduck@smoothschedule.com 'bash -s' < server-setup.sh
# Note: You'll need to logout/login after this for Docker group changes
```
### Step 2: Setup DigitalOcean Spaces (One-Time)
```bash
# Copy setup script to server
scp setup-spaces.sh poduck@smoothschedule.com:~/
# SSH to server and run it
ssh poduck@smoothschedule.com
./setup-spaces.sh
exit
```
### Step 3: Deploy Application
```bash
# From your local machine
cd /home/poduck/Desktop/smoothschedule2
./deploy.sh poduck@smoothschedule.com
```
### Step 4: Post-Deployment Setup
```bash
# SSH to server
ssh poduck@smoothschedule.com
cd ~/smoothschedule
# Create superuser
docker compose -f docker-compose.production.yml exec django python manage.py createsuperuser
# Create a business tenant
docker compose -f docker-compose.production.yml exec django python manage.py shell
```
Then in the Django shell:
```python
from core.models import Business
from django.contrib.auth import get_user_model
User = get_user_model()
# Create a business
business = Business.objects.create(
name="Demo Business",
subdomain="demo",
schema_name="demo",
)
# Create business owner
owner = User.objects.create_user(
username="demo_owner",
email="owner@demo.com",
password="choose_a_password",
role="owner",
business_subdomain="demo"
)
exit()
```
### Step 5: Verify Deployment
Visit these URLs in your browser:
- https://smoothschedule.com - Main site
- https://platform.smoothschedule.com - Platform dashboard
- https://demo.smoothschedule.com - Demo business
- https://smoothschedule.com:5555 - Flower (Celery monitoring)
## Monitoring & Maintenance
### View Logs
```bash
ssh poduck@smoothschedule.com
cd ~/smoothschedule
docker compose -f docker-compose.production.yml logs -f
```
### Check Status
```bash
docker compose -f docker-compose.production.yml ps
```
### Restart Services
```bash
docker compose -f docker-compose.production.yml restart
```
### Update/Redeploy
Simply run the deploy script again:
```bash
./deploy.sh poduck@smoothschedule.com
```
## Support & Troubleshooting
See [DEPLOYMENT.md](DEPLOYMENT.md) for:
- Detailed troubleshooting steps
- SSL certificate issues
- Database connection problems
- Static files not loading
- Celery task issues
## Summary
**Production Configuration:** Complete
**DigitalOcean Spaces:** Configured
**Docker Setup:** Ready
**SSL/HTTPS:** Automatic via Traefik
**Deployment Scripts:** Created
**Documentation:** Complete
**Next Action:** Run the deployment steps above to go live!
---
**Questions?** See DEPLOYMENT.md or check the logs on the server.