Currently Empty: $0.00
Welcome to London Learn Direct
Your Pathway to Flexible, Expert-Led Online Learning
At London Learn Direct, we believe education should be accessible, affordable, and tailored to your lifestyle. Whether you’re a student, professional, or lifelong learner, our online courses empower you to gain skills, boost your confidence, and achieve your goals—from anywhere in the world.

Top Categories

English Language & Grammar

Mathematics

Physics

Chemistry

Biology

Urdu

Geography

Education

Medical & Aesthetics

Web Development

Digital marketing

Social Media Marketing

Become an Instructor at London Learn Direct
Share Your Knowledge. Inspire Students. Teach From Anywhere.
Are you a qualified teacher, subject expert, or industry professional with a passion for education? Join London Learn Direct and become part of our growing community of instructors. Teach online, inspire learners globally, and build your reputation—all from the comfort of your home.
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
// Create deployment package
async function createDeploymentPackage() {
const output = fs.createWriteStream('pdf-word-converter-deployment.zip');
const archive = archiver('zip', { zlib: { level: 9 } });
output.on('close', function() {
console.log('Deployment package created: pdf-word-converter-deployment.zip');
console.log('Total size: ' + (archive.pointer() / 1024 / 1024).toFixed(2) + ' MB');
});
archive.on('error', function(err) {
throw err;
});
archive.pipe(output);
// Add all project files except node_modules and other unnecessary files
archive.glob('**/*', {
cwd: '.',
ignore: [
'node_modules/**',
'.git/**',
'.replit',
'replit.nix',
'*.zip',
'package-scripts/**',
'attached_assets/**',
'.pythonlibs/**',
'uploads/**',
'converted/**',
'.env*'
]
});
await archive.finalize();
}
createDeploymentPackage().catch(console.error);
# PDF ↔ Word Converter - Hostinger Deployment Guide
## Application Overview
A full-featured bidirectional file converter supporting PDF-to-Word and Word-to-PDF conversion with OCR capabilities, drag-and-drop interface, and real-time progress tracking.
## Features Included
- ✅ PDF to Word conversion (with OCR for scanned documents)
- ✅ Word to PDF conversion (with quality settings)
- ✅ Drag-and-drop file upload
- ✅ Multi-language OCR support
- ✅ Real-time progress tracking
- ✅ Dark/Light theme toggle
- ✅ Mobile-responsive design
- ✅ Bulk file processing
- ✅ Secure file handling
## Server Requirements
### Minimum System Requirements
- **Node.js**: Version 18 or higher
- **Python**: Version 3.8 or higher
- **RAM**: 2GB minimum (4GB recommended for large files)
- **Storage**: 10GB available space
- **OS**: Linux (Ubuntu 20.04+ recommended)
### Required Software Dependencies
#### Node.js Dependencies (auto-installed)
- Express.js server
- React frontend
- TypeScript support
- TailwindCSS & UI components
#### Python Dependencies (must install)
```bash
pip install pdf2docx python-docx PyMuPDF pillow pytesseract pdf2image docx2pdf fastapi uvicorn python-multipart
```
#### System Dependencies (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-spa tesseract-ocr-fra tesseract-ocr-deu
sudo apt install libreoffice --no-install-recommends
sudo apt install poppler-utils
```
## Step-by-Step Deployment Instructions
### Step 1: Upload Files to Hostinger
1. Download the `pdf-word-converter-deployment.zip` file
2. Log into your Hostinger hosting panel
3. Navigate to File Manager
4. Upload the ZIP file to your domain's public_html folder
5. Extract the ZIP file contents
### Step 2: Install Node.js (if not available)
```bash
# Check if Node.js is installed
node --version
# If not installed, use Node Version Manager
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
```
### Step 3: Install Python Dependencies
```bash
# Navigate to your project directory
cd /path/to/your/project
# Install Python dependencies
pip3 install -r requirements.txt
# If requirements.txt doesn't exist, install manually:
pip3 install pdf2docx python-docx PyMuPDF pillow pytesseract pdf2image docx2pdf fastapi uvicorn python-multipart
```
### Step 4: Install System Dependencies
```bash
# For OCR support
sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-spa tesseract-ocr-fra tesseract-ocr-deu
# For document conversion
sudo apt install libreoffice --no-install-recommends poppler-utils
```
### Step 5: Install Node.js Dependencies
```bash
# In your project directory
npm install
```
### Step 6: Build the Application
```bash
# Build the frontend
npm run build
# Or if you prefer to run in development mode
npm run dev
```
### Step 7: Configure Environment
1. Create a `.env` file in the project root:
```env
NODE_ENV=production
PORT=3000
UPLOAD_DIR=./uploads
CONVERTED_DIR=./converted
MAX_FILE_SIZE=52428800
```
2. Create necessary directories:
```bash
mkdir -p uploads converted
chmod 755 uploads converted
```
### Step 8: Configure Process Manager (PM2)
```bash
# Install PM2 globally
npm install -g pm2
# Create PM2 ecosystem file
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'pdf-word-converter',
script: 'server/index.ts',
interpreter: 'node',
interpreter_args: '--loader tsx/esm',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
PORT: 3000
}
}]
};
EOF
# Start the application
pm2 start ecosystem.config.js
pm2 startup
pm2 save
```
### Step 9: Configure Nginx (Reverse Proxy)
Create nginx configuration:
```bash
sudo nano /etc/nginx/sites-available/pdf-converter
```
Add this configuration:
```nginx
server {
listen 80;
server_name your-domain.com www.your-domain.com;
client_max_body_size 50M;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
```
Enable the site:
```bash
sudo ln -s /etc/nginx/sites-available/pdf-converter /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
### Step 10: SSL Certificate (Optional but Recommended)
```bash
# Install Certbot
sudo apt install certbot python3-certbot-nginx
# Get SSL certificate
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
```
## File Structure After Deployment
```
your-project/
├── client/ # React frontend
├── server/ # Express.js backend
├── shared/ # Shared TypeScript schemas
├── uploads/ # Uploaded files (auto-created)
├── converted/ # Converted files (auto-created)
├── package.json # Node.js dependencies
├── ecosystem.config.js # PM2 configuration
└── DEPLOYMENT-GUIDE.md # This guide
```
## Testing the Deployment
### 1. Check Application Status
```bash
pm2 status
pm2 logs pdf-word-converter
```
### 2. Test Endpoints
```bash
# Health check
curl http://localhost:3000/api/health
# Should return: {"status":"OK","timestamp":"..."}
```
### 3. Test File Upload
1. Open your domain in a browser
2. Try uploading a PDF file
3. Check if conversion works
4. Verify file download
## Troubleshooting
### Common Issues
#### 1. Python Dependencies Missing
```bash
# Install missing packages
pip3 install pdf2docx python-docx PyMuPDF pillow pytesseract
```
#### 2. OCR Not Working
```bash
# Install Tesseract
sudo apt install tesseract-ocr tesseract-ocr-eng
```
#### 3. File Upload Fails
```bash
# Check permissions
chmod 755 uploads converted
chown www-data:www-data uploads converted
```
#### 4. Large File Issues
```bash
# Increase Nginx limits
sudo nano /etc/nginx/nginx.conf
# Add: client_max_body_size 50M;
```
#### 5. Memory Issues
```bash
# Monitor memory usage
htop
# Increase server RAM or optimize file processing
```
### Log Files
- Application logs: `pm2 logs pdf-word-converter`
- Nginx logs: `/var/log/nginx/error.log`
- System logs: `journalctl -u nginx`
## Performance Optimization
### 1. Enable Compression
Add to nginx config:
```nginx
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
```
### 2. Enable Caching
```nginx
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
```
### 3. Monitor Performance
```bash
# Install monitoring tools
npm install -g clinic
clinic doctor -- node server/index.js
```
## Security Considerations
1. **File Validation**: Only allow PDF and DOCX files
2. **Size Limits**: Maximum 50MB per file
3. **Temporary Files**: Auto-cleanup after conversion
4. **Rate Limiting**: Consider implementing rate limits
5. **HTTPS**: Always use SSL in production
## Backup Strategy
### 1. Application Backup
```bash
# Create backup script
#!/bin/bash
tar -czf backup-$(date +%Y%m%d).tar.gz --exclude=node_modules --exclude=uploads --exclude=converted .
```
### 2. Database Backup (if using)
```bash
# For PostgreSQL (if implemented)
pg_dump your_database > backup-$(date +%Y%m%d).sql
```
## Support and Maintenance
### Regular Maintenance Tasks
1. **Update Dependencies**: `npm update` monthly
2. **Clear Temporary Files**: Clean uploads/converted folders weekly
3. **Monitor Logs**: Check error logs daily
4. **Security Updates**: Update system packages regularly
### Scaling Considerations
- Use load balancer for multiple instances
- Implement Redis for session storage
- Consider using cloud storage for files
- Monitor CPU and memory usage
## Contact Support
For technical issues with this deployment, check:
1. Application logs: `pm2 logs`
2. System resources: `htop`
3. Nginx status: `sudo systemctl status nginx`
4. Application health: `curl http://localhost:3000/api/health`
---
**Deployment Date**: $(date)
**Application Version**: 1.0.0
**Tested Environment**: Ubuntu 20.04 LTS, Node.js 20.x, Python 3.8+
server {
listen 80;
server_name your-domain.com www.your-domain.com;
client_max_body_size 50M;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
Our Courses
-
English Language & Grammar
-
Math & Science for All Levels
-
Biology, Chemistry & Physics
-
Medical & Aesthetic Training
-
Web Development & SEO
-
Computer & IT Basics
-
Exam Preparation (GCSE, IELTS, Entry Tests)
English Language & Grammar
English Language & IELTS Preparation
Exam Preparation
Python
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
UX Design
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
Database Design
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
Javascript
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
HTML & CSS
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
Intro to Coding
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
Apps & Games
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla.
[Download not found]
https://londonlearndirect.com/download/5928/?tmstv=1751900306

Learn by Doing
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
Himenaeos. Sed molestie, velit ut eleifend sollicitudin, neque orci tempor nulla, id sagittis nisi ante nec arcu. Fusce porta bibendum convallis. Morbi fringilla sollicitudin scelerisque. In pellentesque



Build your portfolio
[Download not found]
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
Himenaeos. Sed molestie, velit ut eleifend sollicitudin, neque orci tempor nulla, id sagittis nisi ante nec arcu. Fusce porta bibendum convallis. Morbi fringilla sollicitudin scelerisque. In pellentesque

Achieve your goals
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
Himenaeos. Sed molestie, velit ut eleifend sollicitudin, neque orci tempor nulla, id sagittis nisi ante nec arcu. Fusce porta bibendum convallis. Morbi fringilla sollicitudin scelerisque. In pellentesque

“
My entire team was prototyping by the end of the first day!
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie, velit ut eleifend sollicitudin, neque orci tempor nulla, id sagittis nisi ante nec arcu.

John Smith, Divi Design Initiative

FAQ
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
Himenaeos. Sed molestie, velit ut eleifend sollicitudin, neque orci tempor nulla, id sagittis nisi ante nec arcu. Fusce porta bibendum convallis. Morbi fringilla sollicitudin scelerisque. In pellentesque
Praesent non massa egestas?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
Quisque ante ante lobortis?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
Lorem ipsum dolor sit?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
Tis at dapibus et congue?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
At dapibus et congue?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
Sit Etiam porttitor ligula?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ornare in neque rutrum imperdiet. Quisque ante ante, lobortis at dapibus et, congue a orci.
Free Courses
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla. Quisque sed augue tincidunt, posuere dui tempor.
Premium Courses
Duis egestas aliquet aliquet. Maecenas erat eros, fringilla et leo eget, viverra pretium nulla. Quisque sed augue tincidunt, posuere dui tempor.
Ready to get started?
Get in touch, or create an account