mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-26 14:54:55 +00:00
- Created TODO files for Testing, DBAL, Frontend, Packages, Database, and Lua Scripting. - Updated README with a quick reference table for all TODO files and their priorities. - Added specific tasks for improving testing coverage, implementing DBAL features, enhancing frontend components, and refining package management. - Included documentation tasks to ensure thorough coverage and clarity across all areas. - Implemented initial unit tests for the useAuth hook and improved password generation logic. - Enhanced package loader functionality to support modular package seed data retrieval. - Updated page renderer to include public role in permission checks. - Added comments for future unit tests in workflow engine and other critical areas.
301 lines
5.6 KiB
Markdown
301 lines
5.6 KiB
Markdown
# Deployment Guide
|
|
|
|
Complete guide for deploying MetaBuilder to various environments.
|
|
|
|
## 📋 Prerequisites
|
|
|
|
- Node.js 18+
|
|
- Docker (for containerized deployment)
|
|
- npm or yarn
|
|
- Database access (SQLite for dev, PostgreSQL for production)
|
|
|
|
## 🚀 Deployment Options
|
|
|
|
### 1. Local Development
|
|
|
|
```bash
|
|
npm install
|
|
npm run db:generate
|
|
npm run db:push
|
|
npm run dev
|
|
```
|
|
|
|
Runs on `http://localhost:5173`.
|
|
|
|
### 2. Docker Development
|
|
|
|
```bash
|
|
docker-compose -f deployment/docker-compose.development.yml up
|
|
```
|
|
|
|
Features:
|
|
- Hot-reload on code changes
|
|
- Database mounted as volume
|
|
- Port 5173 mapped
|
|
|
|
### 3. Docker Production
|
|
|
|
```bash
|
|
docker-compose -f deployment/docker-compose.production.yml up -d
|
|
```
|
|
|
|
Features:
|
|
- Optimized build
|
|
- Production environment variables
|
|
- Health checks
|
|
- Auto-restart on failure
|
|
|
|
### 4. Cloud Deployment
|
|
|
|
Supports:
|
|
- **AWS** - EC2, ECS, Elastic Beanstalk
|
|
- **Google Cloud** - App Engine, Cloud Run
|
|
- **Azure** - App Service, Container Instances
|
|
- **Heroku** - Push to deploy
|
|
- **DigitalOcean** - Droplets or App Platform
|
|
|
|
## 🔧 Environment Configuration
|
|
|
|
### Development (.env.local)
|
|
|
|
```bash
|
|
VITE_API_URL=http://localhost:3000
|
|
DATABASE_URL=file:./dev.db
|
|
NODE_ENV=development
|
|
```
|
|
|
|
### Production (.env.production)
|
|
|
|
```bash
|
|
VITE_API_URL=https://api.example.com
|
|
DATABASE_URL=postgresql://user:pass@host/db
|
|
NODE_ENV=production
|
|
SECURE=true
|
|
```
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Purpose | Required |
|
|
|----------|---------|----------|
|
|
| `DATABASE_URL` | Database connection string | ✅ Yes |
|
|
| `VITE_API_URL` | API base URL | ✅ Yes |
|
|
| `NODE_ENV` | Environment (dev/prod) | ✅ Yes |
|
|
| `SECRET_KEY` | Application secret | ✅ Yes |
|
|
| `SECURE` | Enable HTTPS | ❌ No |
|
|
|
|
## 🗄️ Database Setup
|
|
|
|
### SQLite (Development)
|
|
|
|
```bash
|
|
npm run db:push
|
|
```
|
|
|
|
### PostgreSQL (Production)
|
|
|
|
```bash
|
|
# Set connection string
|
|
export DATABASE_URL="postgresql://user:password@localhost:5432/metabuilder"
|
|
|
|
# Run migrations
|
|
npm run db:push
|
|
|
|
# Verify setup
|
|
npm run db:studio
|
|
```
|
|
|
|
## 🐳 Docker Configuration
|
|
|
|
### Build Custom Image
|
|
|
|
```bash
|
|
docker build -f deployment/Dockerfile.app -t metabuilder:latest .
|
|
docker run -p 3000:3000 metabuilder:latest
|
|
```
|
|
|
|
### Docker Compose
|
|
|
|
Development:
|
|
```yaml
|
|
version: '3'
|
|
services:
|
|
app:
|
|
build:
|
|
dockerfile: Dockerfile.app.dev
|
|
ports:
|
|
- "5173:5173"
|
|
volumes:
|
|
- .:/app
|
|
- /app/node_modules
|
|
```
|
|
|
|
Production:
|
|
```yaml
|
|
version: '3'
|
|
services:
|
|
app:
|
|
image: metabuilder:latest
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
NODE_ENV: production
|
|
DATABASE_URL: postgresql://...
|
|
healthcheck:
|
|
test: curl -f http://localhost:3000/health
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
```
|
|
|
|
## 🔐 Security Checklist
|
|
|
|
Before production deployment:
|
|
|
|
- ✅ Use HTTPS (SSL/TLS certificates)
|
|
- ✅ Set strong database passwords
|
|
- ✅ Configure environment variables
|
|
- ✅ Enable database backups
|
|
- ✅ Set up monitoring & logging
|
|
- ✅ Configure firewall rules
|
|
- ✅ Enable rate limiting
|
|
- ✅ Set up admin users with strong passwords
|
|
- ✅ Review security documentation
|
|
- ✅ Test disaster recovery
|
|
|
|
## 📊 Health Monitoring
|
|
|
|
### Health Check Endpoint
|
|
|
|
```bash
|
|
curl http://localhost:3000/health
|
|
```
|
|
|
|
Returns:
|
|
```json
|
|
{
|
|
"status": "ok",
|
|
"database": "connected",
|
|
"uptime": 3600
|
|
}
|
|
```
|
|
|
|
### Logs
|
|
|
|
Docker logs:
|
|
```bash
|
|
docker logs metabuilder
|
|
docker logs -f metabuilder # Follow logs
|
|
```
|
|
|
|
## 📈 Scaling Considerations
|
|
|
|
### Horizontal Scaling
|
|
|
|
Multiple instances behind load balancer:
|
|
|
|
```
|
|
┌─────────┐
|
|
│ Nginx │ (Load Balancer)
|
|
└────┬────┘
|
|
│
|
|
┌──┴──┬──────┬──────┐
|
|
│ │ │ │
|
|
┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
|
|
│App│ │App│ │App│ │App│
|
|
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
|
|
│ │ │ │
|
|
└─────┴─────┴─────┘
|
|
│
|
|
┌───┴────┐
|
|
Database (shared)
|
|
```
|
|
|
|
### Database Optimization
|
|
|
|
- Use PostgreSQL connection pooling
|
|
- Enable query caching
|
|
- Monitor slow queries
|
|
- Regular backups
|
|
|
|
## 🔄 Continuous Deployment
|
|
|
|
### GitHub Actions Workflow
|
|
|
|
```yaml
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- run: npm install
|
|
- run: npm run lint
|
|
- run: npm run test:e2e
|
|
- run: npm run build
|
|
- run: docker push metabuilder:latest
|
|
```
|
|
|
|
## 📊 Monitoring & Logging
|
|
|
|
### Essential Metrics
|
|
|
|
- Application uptime
|
|
- Response times
|
|
- Error rates
|
|
- Database performance
|
|
- User activity
|
|
|
|
### Log Aggregation
|
|
|
|
Consider:
|
|
- CloudWatch (AWS)
|
|
- Stackdriver (Google Cloud)
|
|
- Application Insights (Azure)
|
|
- ELK Stack (self-hosted)
|
|
|
|
## 🆘 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
**Database connection fails**
|
|
```bash
|
|
# Check DATABASE_URL
|
|
echo $DATABASE_URL
|
|
|
|
# Test connection
|
|
npm run db:studio
|
|
```
|
|
|
|
**Port already in use**
|
|
```bash
|
|
# Find process on port 3000
|
|
lsof -i :3000
|
|
|
|
# Kill process
|
|
kill -9 <PID>
|
|
```
|
|
|
|
**Out of memory**
|
|
```bash
|
|
# Increase Node.js heap
|
|
export NODE_OPTIONS="--max-old-space-size=4096"
|
|
```
|
|
|
|
## 📚 Additional Resources
|
|
|
|
- [Docker Documentation](https://docs.docker.com/)
|
|
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
|
|
- [Prisma Deployment](https://www.prisma.io/docs/concepts/deployment)
|
|
- [GitHub Actions](https://github.com/features/actions)
|
|
|
|
## 🔗 Related Documentation
|
|
|
|
- [Getting Started](../guides/getting-started.md)
|
|
- [Database Architecture](./database.md)
|
|
TODO: Security guide lives at ../security/SECURITY.md; update this link.
|
|
- [Security Guidelines](../SECURITY.md)
|
|
- [Architecture Overview](./5-level-system.md)
|