Centralized_Reporting_Backend/QUICK_SETUP.md
2025-10-10 12:10:33 +05:30

308 lines
6.3 KiB
Markdown

# 🚀 Quick Setup Guide
## Your n8n Webhook Configuration
Based on your webhook URL: `https://workflows.tech4bizsolutions.com/webhook-test/04e677f5-ec57-4772-bf12-96f2610d4b9c`
---
## Step 1: Create `.env` File
Create a `.env` file in your project root with these settings:
```env
# ============================================
# n8n Webhook Configuration (YOUR SETUP)
# ============================================
N8N_WEBHOOK_URL=https://workflows.tech4bizsolutions.com
N8N_WEBHOOK_PATH=webhook-test
N8N_WEBHOOK_ID=04e677f5-ec57-4772-bf12-96f2610d4b9c
# ============================================
# Database
# ============================================
DB_HOST=localhost
DB_PORT=3306
DB_NAME=centralized_reporting
DB_USER=root
DB_PASSWORD=your_password
# ============================================
# JWT & Encryption
# ============================================
JWT_SECRET=your_jwt_secret_change_this
JWT_EXPIRES_IN=1h
ENCRYPTION_KEY=changeme
# ============================================
# Server
# ============================================
PORT=3000
NODE_ENV=development
API_PREFIX=/api/v1
# ============================================
# OAuth Credentials
# ============================================
# Zoho
ZOHO_CLIENT_ID=your_zoho_client_id
ZOHO_CLIENT_SECRET=your_zoho_client_secret
ZOHO_REDIRECT_URI=centralizedreportingsystem://oauth/callback
# Salesforce
SALESFORCE_CLIENT_ID=your_salesforce_client_id
SALESFORCE_CLIENT_SECRET=your_salesforce_client_secret
SALESFORCE_REDIRECT_URI=centralizedreportingsystem://oauth/callback
SALESFORCE_INSTANCE_URL=https://login.salesforce.com
# Redis (Optional)
REDIS_HOST=localhost
REDIS_PORT=6379
```
---
## Step 2: Install Dependencies
```bash
npm install
```
---
## Step 3: Setup Database
```bash
# Create database
mysql -u root -p
CREATE DATABASE centralized_reporting;
exit
# Run migrations
node src/db/migrate.js
```
---
## Step 4: Verify n8n Webhook
Test your n8n webhook is accessible:
```bash
curl -X POST https://workflows.tech4bizsolutions.com/webhook-test/04e677f5-ec57-4772-bf12-96f2610d4b9c \
-H "Content-Type: application/json" \
-d '{
"body": {
"provider": "zoho",
"service": "crm",
"module": "leads",
"acces_token": "test_token"
},
"query": {
"per_page": 100,
"page": 1
}
}'
```
**Expected:** Should return response from n8n (or error if workflow not active)
---
## Step 5: Start Server
```bash
npm start
```
**Server will start at:** `http://localhost:3000`
---
## Step 6: Test Health Check
```bash
curl http://localhost:3000/health
```
**Expected Response:**
```json
{
"status": "success",
"message": "OK",
"data": {
"db": "up",
"env": "development"
},
"timestamp": "2025-10-09T..."
}
```
---
## Step 7: Test n8n Integration
### 7.1 Get Supported Providers
```bash
# Login first to get JWT token
curl -X POST http://localhost:3000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password"
}'
# Save the accessToken from response
TOKEN="your_jwt_token_here"
# Get supported providers
curl -X GET http://localhost:3000/api/v1/n8n/providers \
-H "Authorization: Bearer $TOKEN"
```
### 7.2 Authenticate with Provider
```bash
# For Zoho (after OAuth flow in frontend)
curl -X GET "http://localhost:3000/api/v1/users/oauth/callback?authorization_code=ABC123&user_uuid=user-id&service_name=zoho"
# For Salesforce
curl -X GET "http://localhost:3000/api/v1/users/oauth/callback?authorization_code=XYZ789&user_uuid=user-id&service_name=salesforce"
```
### 7.3 Fetch Data
```bash
# Fetch Zoho CRM Leads
curl -X GET "http://localhost:3000/api/v1/n8n/zoho/crm/leads?limit=10" \
-H "Authorization: Bearer $TOKEN"
# Fetch Salesforce Accounts
curl -X GET "http://localhost:3000/api/v1/n8n/salesforce/crm/accounts?limit=10" \
-H "Authorization: Bearer $TOKEN"
```
---
## 📊 How the Webhook URL is Constructed
### Configuration
```env
N8N_WEBHOOK_URL=https://workflows.tech4bizsolutions.com
N8N_WEBHOOK_PATH=webhook-test
N8N_WEBHOOK_ID=04e677f5-ec57-4772-bf12-96f2610d4b9c
```
### Code (src/integrations/n8n/client.js)
```javascript
const url = `${this.baseUrl}/${this.webhookPath}/${this.webhookId}`;
```
### Result
```
https://workflows.tech4bizsolutions.com/webhook-test/04e677f5-ec57-4772-bf12-96f2610d4b9c
```
---
## 🔍 Verification Checklist
- [ ] `.env` file created with correct values
- [ ] Database created and migrated
- [ ] n8n webhook accessible
- [ ] Server starts without errors
- [ ] Health check returns success
- [ ] Can login and get JWT token
- [ ] OAuth callback works
- [ ] Can fetch data via n8n
---
## 🐛 Common Issues
### Issue: "n8n workflow execution failed"
**Cause:** n8n webhook not accessible or workflow not active
**Solution:**
1. Check n8n is running
2. Verify workflow is activated
3. Test webhook URL manually:
```bash
curl https://workflows.tech4bizsolutions.com/webhook-test/04e677f5-ec57-4772-bf12-96f2610d4b9c
```
### Issue: "Cannot connect to database"
**Cause:** Database credentials incorrect
**Solution:**
1. Check DB_HOST, DB_PORT, DB_NAME in `.env`
2. Verify MySQL is running
3. Test connection:
```bash
mysql -h localhost -u root -p
```
### Issue: "JWT token invalid"
**Cause:** JWT_SECRET mismatch or expired token
**Solution:**
1. Login again to get fresh token
2. Verify JWT_SECRET in `.env`
3. Check JWT_EXPIRES_IN setting
---
## 📚 Next Steps
1. **Configure OAuth Apps**
- Set up Zoho OAuth app
- Set up Salesforce Connected App
- Update credentials in `.env`
2. **Test Full Flow**
- Register user
- Authenticate with Zoho/Salesforce
- Fetch data via n8n endpoints
3. **Frontend Integration**
- Use API endpoints in your frontend
- Implement OAuth flow
- Display fetched data
4. **Production Deployment**
- Use strong JWT_SECRET
- Use HTTPS
- Enable rate limiting
- Set up monitoring
---
## 📖 Documentation
- **Full Integration Guide**: `docs/N8N_INTEGRATION.md`
- **Environment Variables**: `docs/ENVIRONMENT_VARIABLES.md`
- **Salesforce Pagination**: `docs/SALESFORCE_PAGINATION.md`
- **Quick Reference**: `docs/N8N_QUICK_REFERENCE.md`
---
## 🆘 Need Help?
Check the logs:
```bash
# Server logs
tail -f logs/app.log
# n8n workflow execution logs
# Check in n8n UI: Executions tab
```
---
**You're all set! Happy coding! 🎉**