Files
getlostguatemala.com/README.md

4.5 KiB

🌎 G Travel — Guatemala Tourism Website

A modern, responsive tourism website for Guatemala built with Flask, SQLite, and Jinja2. Features a premium glassmorphism design, an admin dashboard, and integrations with Cloudflare Turnstile, Retell AI, and Mailtrap SMTP.

Python Flask SQLite


Features

Public Website

  • 🏛️ Tours, Surf & Volcanoes — Dynamic sections loaded from the database
  • 🎬 Hero Video Background — Autoplay MP4 video with overlay
  • 🌐 Multi-language — English / Spanish toggle
  • 📱 Fully Responsive — Hamburger menu on mobile
  • 📝 Contact Form — With Cloudflare Turnstile bot protection
  • 🤖 Retell AI Opt-in — Checkbox to request an AI agent call
  • 🔍 Tour Detail Pages — Individual pages with booking forms

Admin Dashboard (/admin)

  • 🔐 HTTP Basic Auth — Username: admin / Password: admin
  • 📑 Tabbed Interface — Leads & Forms, Tours & Activities, System Settings
  • ✏️ Full CRUD for Tours — Create, Read, Update, Delete with image upload
  • 📊 Lead Management — View all submitted inquiries
  • ⚙️ System Settings — Configure all integrations from the UI:
    • Agency name, email, and logo (URL or upload)
    • Hero video (URL or upload)
    • Mailtrap SMTP credentials
    • Cloudflare Turnstile keys
    • Retell AI API key, phone number, agent ID, and enable/disable toggle

🚀 Quick Start

1. Clone the repository

git clone <your-repo-url>
cd GTravel

2. Create a virtual environment

python3 -m venv venv
source venv/bin/activate

3. Install dependencies

pip install -r requirements.txt

4. Seed the database (first run)

python seed.py

5. Run the application

python main.py

The app will be available at http://localhost:8000


🌐 Production Deployment (CloudPanel / Gunicorn)

This app is ready for deployment on CloudPanel.io or any WSGI-compatible server.

Using Gunicorn

gunicorn wsgi:application --bind 0.0.0.0:8000

CloudPanel Setup

  1. Create a new Python application in CloudPanel
  2. Point the entry file to wsgi.py
  3. Install dependencies: pip install -r requirements.txt
  4. Run python seed.py to initialize the database
  5. The wsgi.py file exposes the standard application variable

📁 Project Structure

GTravel/
├── main.py                 # Flask application (all routes)
├── database.py             # SQLAlchemy models & DB setup
├── seed.py                 # Database seeder with sample data
├── wsgi.py                 # WSGI entry point for production
├── requirements.txt        # Python dependencies
├── gtravel.db              # SQLite database (auto-created)
├── static/
│   ├── css/
│   │   └── style.css       # All styles (glassmorphism theme)
│   ├── images/             # Tour images & uploaded logos
│   └── videos/             # Uploaded hero videos
└── templates/
    ├── base.html            # Base layout (navbar, hamburger menu)
    ├── index.html           # Homepage (hero, tours, surf, volcanoes, contact)
    ├── detail.html          # Tour detail page with booking form
    └── dashboard.html       # Admin dashboard (tabbed interface)

🔧 Configuration

All configuration is managed through the Admin DashboardSystem Settings tab.

Setting Description
Agency Name Displayed in the browser title
Agency Email Used as sender/receiver for email notifications
Logo Upload an image or provide a URL
Hero Video Upload an MP4 or provide a URL for the homepage background
Mailtrap SMTP Host, Port, Username, Password for email delivery
Cloudflare Turnstile Site Key & Secret Key for bot protection
Retell AI API Key, Phone Number, Agent ID, and Enable toggle

🛡️ Security Notes

  • Change the default admin credentials in main.py before deploying to production
  • Set a strong SECRET_KEY environment variable: export SECRET_KEY="your-secret-key"
  • Configure Cloudflare Turnstile to protect public forms from bots
  • Use HTTPS in production (CloudPanel handles this automatically)

📄 License

This project is proprietary. All rights reserved.