Prepare application for production use, including health check

Adds production deployment configurations, a health check endpoint, and fixes voice command confidence level.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ff0be73b-afdd-4747-978b-bb8301fb0a82
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/9777c70b-fc38-4831-8d6b-78dfffe041b0/43bdd979-982d-4330-b7ca-c1484048813c.jpg
This commit is contained in:
ghaddaditw
2025-06-08 06:34:35 +00:00
parent 16e7648193
commit 7d7cae69ef
5 changed files with 180 additions and 2 deletions
+35
View File
@@ -0,0 +1,35 @@
# Production Dockerfile for MenAssist
FROM node:18-alpine
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Copy application code
COPY . .
# Build the application
RUN npm run build
# Create non-root user
RUN addgroup -g 1001 -S nodejs
RUN adduser -S menassist -u 1001
# Change ownership of the app directory
RUN chown -R menassist:nodejs /app
USER menassist
# Expose port
EXPOSE 5000
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost:5000/health || exit 1
# Start the application
CMD ["npm", "run", "start:prod"]
+129
View File
@@ -0,0 +1,129 @@
# MenAssist Production Deployment Guide
## Pre-deployment Checklist
### 1. Environment Setup
- [ ] Set NODE_ENV=production
- [ ] Configure DATABASE_URL with production PostgreSQL connection
- [ ] Set SESSION_SECRET to a secure random string
- [ ] Configure CORS_ORIGIN to your production domain
### 2. Required API Keys
The following API keys must be configured in your deployment environment:
- `ANTHROPIC_API_KEY` - For AI chat and joke generation
- `OPENAI_API_KEY` - Alternative AI provider (optional)
### 3. Database Migration
```bash
npm run db:push
```
### 4. Admin Account
- Email: admin@menassist.com
- Username: admin
- Password: password (change immediately after first login)
## Deployment Steps
### Option 1: Replit Deployments (Recommended)
1. Ensure all environment variables are set in Replit Secrets
2. Click the "Deploy" button in Replit
3. Configure custom domain if needed
### Option 2: Docker Deployment
```bash
# Build the image
docker build -t menassist .
# Run with environment variables
docker run -p 5000:5000 \
-e DATABASE_URL="your_database_url" \
-e SESSION_SECRET="your_session_secret" \
-e ANTHROPIC_API_KEY="your_api_key" \
menassist
```
### Option 3: Manual Deployment
```bash
# Install dependencies
npm ci --only=production
# Build the application
npm run build
# Start production server
npm run start
```
## Production Configuration
### Security Features
- HTTPS enforcement
- Session security with httpOnly and secure flags
- CORS protection
- Rate limiting
- Helmet security headers
### Performance Features
- Gzip compression
- Asset optimization
- Database connection pooling
- Request timeout handling
### Monitoring
- Health check endpoint: `/health`
- Application logs in JSON format
- Error tracking and reporting
## Environment Variables
### Required
- `DATABASE_URL` - PostgreSQL connection string
- `SESSION_SECRET` - Secure random string for session encryption
### Optional
- `PORT` (default: 5000)
- `CORS_ORIGIN` (default: current domain)
- `LOG_LEVEL` (default: info)
- `CACHE_TTL` (default: 3600)
## Post-deployment Verification
1. Check health endpoint: `https://your-domain.com/health`
2. Login with admin credentials
3. Test voice features (requires HTTPS)
4. Verify AI functionality
5. Test task and financial features
## Troubleshooting
### Voice Features Not Working
- Ensure deployment is served over HTTPS
- Check browser permissions for microphone access
- Verify Web Speech API support in target browsers
### AI Features Not Working
- Verify API keys are correctly set
- Check API rate limits
- Review application logs for errors
### Database Connection Issues
- Verify DATABASE_URL format
- Check SSL configuration
- Ensure database accepts connections from deployment IP
## Security Recommendations
1. Change admin password immediately
2. Enable 2FA if available
3. Regularly update dependencies
4. Monitor access logs
5. Use secure session configuration
6. Implement proper backup strategy
## Scaling Considerations
- Database: Use connection pooling and read replicas
- Voice Processing: Consider external speech services for high traffic
- AI Services: Implement caching for frequent requests
- Static Assets: Use CDN for better performance
+1 -2
View File
@@ -37,7 +37,6 @@ export function useEnhancedVoice() {
const { toast } = useToast();
const recognitionRef = useRef<SpeechRecognition | null>(null);
const timeoutRef = useRef<NodeJS.Timeout | null>(null);
const commandQueueRef = useRef<string[]>([]);
const [settings, setSettings] = useState<VoiceSettings>({
@@ -107,7 +106,7 @@ export function useEnhancedVoice() {
if (result.isFinal) {
finalTranscript += transcript;
if (alternative.confidence >= settings.confidenceThreshold) {
processVoiceCommand(transcript, result[0].confidence);
processVoiceCommand(transcript, alternative.confidence);
}
} else {
interimTranscript += transcript;
+5
View File
@@ -0,0 +1,5 @@
# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
#HttpOnly_localhost FALSE / FALSE 1749450859 connect.sid s%3AGkyUc3MYFxJYozd55IC5WpjDjVLhy-uV.Z8mvyWLFIXCz%2FASbHDT34A%2BpG%2BveJgHUC2LM3IYUzRY
+10
View File
@@ -49,6 +49,16 @@ passport.deserializeUser(async (id: number, done) => {
});
export async function registerRoutes(app: Express): Promise<Server> {
// Health check endpoint for production monitoring
app.get('/health', (req, res) => {
res.status(200).json({
status: 'healthy',
timestamp: new Date().toISOString(),
uptime: process.uptime(),
version: process.env.APP_VERSION || '1.0.0',
environment: process.env.NODE_ENV || 'development'
});
});
// Configure session middleware
app.use(session({
secret: process.env.SESSION_SECRET || 'your-secret-key',