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.

lld

Top Categories

english language & grammar

English Language & Grammar

Mathematics

Mathematics

physics

Physics

Chemistry

Chemistry

Biology

Biology

Urdu

Urdu

Geography

Geography

Education

Education

MedMedical & Aesthetics Courses

Medical & Aesthetics

Web Development

Web Development

Digital marketing

Digital marketing

Social Media Marketing

Social Media Marketing

Become an Instructor

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 & 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