Files
scriptshare-cursor/DEPLOYMENT.md

261 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# 🚀 ScriptShare - Platform Deployment Guide
## Overview
ScriptShare is a modern React application with a Node.js API backend, designed to work seamlessly with any deployment platform including **Vercel**, **Coolify**, **DigitalOcean App Platform**, **Railway**, **Render**, and others.
## 📦 Application Structure
### Frontend (React + Vite)
- **Dockerfile**: `Dockerfile`
- **Build**: Vite-based React application
- **Output**: Static files served by Nginx
- **Port**: 80
### Backend API (Node.js + Express)
- **Dockerfile**: `Dockerfile.api`
- **Runtime**: Node.js 18 with TypeScript
- **Port**: 3000
- **Health Check**: `/api/health`
## 🔧 Deployment Options
### Option 1: Vercel (Recommended for Frontend)
**Frontend Deployment:**
1. Connect your repository to Vercel
2. Set build command: `npm run build`
3. Set output directory: `dist`
4. Configure environment variables:
```
VITE_APP_NAME=ScriptShare
VITE_APP_URL=https://your-domain.vercel.app
VITE_ANALYTICS_ENABLED=true
```
**API Deployment:**
- Deploy API separately to platforms like Railway, Render, or DigitalOcean
- Or use Vercel Functions (requires code modification)
### Option 2: Coolify (Full Stack)
**Deploy both frontend and API:**
1. Create application from Git repository
2. **Frontend**:
- Use `Dockerfile`
- Port: 80
3. **API**:
- Use `Dockerfile.api`
- Port: 3000
4. Configure environment variables
### Option 3: DigitalOcean App Platform
Create `app.yaml`:
```yaml
name: scriptshare
services:
- name: frontend
source_dir: /
dockerfile_path: Dockerfile
github:
repo: your-username/scriptshare-cursor
branch: main
http_port: 80
routes:
- path: /
- name: api
source_dir: /
dockerfile_path: Dockerfile.api
github:
repo: your-username/scriptshare-cursor
branch: main
http_port: 3000
routes:
- path: /api
envs:
- key: NODE_ENV
value: production
- key: DATABASE_URL
value: ${DATABASE_URL}
databases:
- name: scriptshare-db
engine: MYSQL
version: "8"
```
### Option 4: Railway
1. **Frontend**: Connect repo, Railway auto-detects Dockerfile
2. **API**: Deploy from same repo using `Dockerfile.api`
3. **Database**: Add MySQL service
4. Configure environment variables
### Option 5: Render
1. **Frontend**:
- Static Site
- Build Command: `npm run build`
- Publish Directory: `dist`
2. **API**:
- Web Service
- Docker build using `Dockerfile.api`
3. **Database**: Add MySQL database
## 🏗️ Build Commands
### Frontend
```bash
# Install dependencies
npm install
# Build for production
npm run build
# Preview build
npm run preview
```
### API
```bash
# Install dependencies
npm install
# Build TypeScript
npm run build:api
# Start API server
npm run start:api
```
## 🔐 Environment Variables
### Frontend (Build-time)
- `VITE_APP_NAME` - Application name
- `VITE_APP_URL` - Frontend URL
- `VITE_ANALYTICS_ENABLED` - Enable analytics (true/false)
### API (Runtime)
- `NODE_ENV` - Environment (production/development)
- `PORT` - Server port (default: 3000)
- `DATABASE_URL` - MySQL connection string
- `JWT_SECRET` - JWT secret key
- `CORS_ORIGIN` - Allowed CORS origins
## 🗄️ Database Setup
### MySQL Connection String Format:
```
DATABASE_URL=mysql://username:password@host:port/database
```
### Required Tables:
The application uses Drizzle ORM. Run migrations after deployment:
```bash
npm run db:migrate
```
## 🔍 Health Checks
### Frontend Health Check:
```
GET /health
```
### API Health Check:
```
GET /api/health
```
## 📝 Platform-Specific Notes
### Vercel
- Frontend deploys automatically
- Use Vercel Functions for API (requires modification)
- Environment variables in Vercel dashboard
### Coolify
- Supports full Docker deployment
- Easy environment variable management
- Built-in SSL and domain management
### DigitalOcean App Platform
- Use `app.yaml` for configuration
- Automatic HTTPS
- Managed database available
### Railway
- Auto-deployment from Git
- Environment variables in dashboard
- Add-on database services
### Render
- Separate frontend (static) and backend (web service)
- Auto-deployment from Git
- Environment variables in dashboard
## 🐳 Docker Commands
### Build Frontend:
```bash
docker build -t scriptshare-frontend .
docker run -p 3000:80 scriptshare-frontend
```
### Build API:
```bash
docker build -f Dockerfile.api -t scriptshare-api .
docker run -p 3001:3000 scriptshare-api
```
### Local Development:
```bash
docker-compose up
```
## 🔧 Local Development
### Frontend:
```bash
npm run dev
```
### API:
```bash
npm run build:api
npm run start:api
```
### Database:
```bash
npm run db:studio # Drizzle Studio
npm run db:migrate # Run migrations
```
## 🚀 Quick Deploy Examples
### Deploy to Vercel (Frontend):
```bash
vercel --prod
```
### Deploy to Railway:
```bash
railway deploy
```
### Deploy to Render:
Connect GitHub repository in Render dashboard
## 📞 Support
- **Documentation**: Check platform-specific documentation
- **Environment**: Ensure all required environment variables are set
- **Health Checks**: Monitor `/health` and `/api/health` endpoints
- **Logs**: Check platform logs for deployment issues
---
**Your ScriptShare application is ready for deployment on any modern platform! 🎉**
Choose the platform that best fits your needs - from simple static hosting to full-stack container deployments.