Asistente Cultural es una plataforma web innovadora que combina inteligencia artificial con información cultural detallada para ofrecer a los viajeros una experiencia de viaje más rica y preparada. Desde consejos sobre etiquette local hasta frases útiles en el idioma del país, acompañamos a cada usuario en su descubrimiento cultural.
- Idea de Negocio
- Características Principales
- Arquitectura y Tecnologías
- Instalación Rápida
- Estructura del Proyecto
- Configuración
- Modelos de Datos
- Chatbot IA
- Contacto
Los viajeros frecuentemente enfrentan barreras culturales que limitan su experiencia:
- Incertidumbre ante normas sociales desconocidas
- Dificultad para comunicarse en idiomás locales
- Información fragmentada y dispersa sobre destinos
- Falta de preparación para situaciones culturales específicas
Asistente Cultural es una plataforma SaaS que proporciona:
| Servicio | Descripción | Valor para el Usuario |
|---|---|---|
| 🤖 Chatbot IA | Consultas personalizadas sobre cultura local | Respuestas instantáneas y contextualizadas |
| 📚 Biblioteca Cultural | Países, lugares, temporadas y normas detalladas | Información estructurada y confiable |
| 💬 Frases Útiles | Expresiones locales con pronunciación | Comunicación efectiva desde el primer día |
| 🎯 Tips Personalizados | Consejos según tipo de viajero | Experiencias adaptadas a cada perfil |
| ❤️ Sistema de Favoritos | Guarda y organiza información | Acceso rápido a contenido relevante |
| 📊 Historial Inteligente | Rastreo de consultas previas | Aprendizaje progresivo del usuario |
┌─────────────────────────────────────────────────────────────┐
│ MODELO DE INGRESOS │
├─────────────────────────────────────────────────────────────┤
│ Free Tier │ Premium ($9.99/mes) │ Enterprise │
│ ───────────── │ ────────────────── │ ────────── │
│ • 20 consultas/mes │ • Consultas ilimitadas│ • White-label│
│ • 3 países │ • Todos los países │ • Multi-tenant│
│ • Tips básicos │ • Tips avanzados │ • Soporte 24/7│
│ • Sin audio │ • Audio de frases │ • Personalización│
└─────────────────────────────────────────────────────────────┘
- Integración con Gemini AI: Respuestas inteligentes y contextuales
- Enfoque Personalizado: Tips según tipo de viajero (Aventurero, Cultural, Gourmet, etc.)
- Base de Datos Rica: Información estructurada y verificable
- UX Intuitiva: Interfaz diseñada para facilitar la consulta rápida
• Información detallada de países (capital, moneda, población, idioma oficial)
• Coordenadas geográficas para integración con mapas
• Descripciones cortas y completas
• Galería de imágenes por país
• Ilustraciones representativas
• Clasificación por regiones (Costa, Sierra, Amazonía, Galápagos, etc.)
• Lugares destacados y su descripción
• Imágenes representativas de cada lugar
• Calendario de temporadas por país
• Meses de inicio y fin para cada temporada
• Descripciones detalladas del clima esperado
• Reglas de etiqueta y comportamiento
• Precauciones importantes
• Prohibiciones locales
• Recomendaciones de locales
• Traducciones al idioma local
• Pronunciación fonética
• Audio de pronunciación
• Categorías por contexto (Saludos, Emergencias, Comida, etc.)
• Tours disponibles por país
• Duración, precio e idiomas disponibles
• Qué está incluido en cada tour
• Tips organizados por categoría
• Filtro por tipo de viajero
• Tips destacados y orden personalizado
• Sistema de favoritos para guardar tips
• Consultas en lenguaje natural
• Contexto del país y preferencias del usuario
• Historial de conversaciones
• Respuestas contextualizadas
• Registro y autenticación
• Perfil de tipo de viajero
• Historial de consultas
• Favoritos personalizados
┌──────────────────────────────────────────────────────────────┐
│ FRONTEND │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ HTML5 │ │ Tailwind │ │ Alpine.js │ │
│ │ + CSS3 │ │ CSS │ │ (Interactivity) │ │
│ └─────────────┘ └──────────────┘ └────────────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ BACKEND │
│ ┌─────────────────────┐ ┌────────────────────────────────┐│
│ │ Django 5.2 │ │ Django Templates ││
│ │ (Full Framework) │ │ (Server-Side Rendering) ││
│ └─────────────────────┘ └────────────────────────────────┘│
│ ┌─────────────────────┐ ┌────────────────────────────────┐│
│ │ Python 3.10+ │ │ Google Gemini AI ││
│ │ (Language) │ │ (Chatbot Engine) ││
│ └─────────────────────┘ └────────────────────────────────┘│
├──────────────────────────────────────────────────────────────┤
│ DATA LAYER │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ PostgreSQL │ │ Django ORM │ │
│ │ (Dev) │ │ (Production)│ │ (Abstraction) │ │
│ └─────────────┘ └──────────────┘ └────────────────────┘ │
├──────────────────────────────────────────────────────────────┤
│ DEPLOYMENT │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Local │ │ Prepared │ │ Ready for │ │
│ │ Dev │ │ for Cloud │ │ Vercel/Render │ │
│ └─────────────┘ └──────────────┘ └────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
| Categoría | Tecnología | Versión | Propósito |
|---|---|---|---|
| Framework | Django | 5.2.4 | Backend completo con ORM |
| AI | Google Gemini AI | 1.66.0 | Motor de chatbot inteligente |
| Frontend | Tailwind CSS | 3.x | Framework CSS utility-first |
| Interactivity | Alpine.js | 3.x | lightweight JavaScript framework |
| Images | Pillow | 11.3.0 | Procesamiento de imágenes |
| Database | PostgreSQL | - | Almacenamiento de datos |
| Security | Django Security | - | Autenticación y permisos |
📐 Patrones Implementados
├── Mixins (Reutilización de lógica de vistas)
├── Generic Views (Vistas basadas en clases)
├── Form Validators (Validación robusta)
├── Model Managers (Consultas optimizadas)
├── Database Indexes (Rendimiento de queries)
└── Context Processors (Variables globales)
✅ Python 3.10 o superior
✅ PostgreSQL 14+
✅ Git
✅ pip (gestor de paquetes Python)
git clone https://github.com/Kadir011/Asistente-Cultural.git
cd Asistente-Cultural# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCrea un archivo .env en la raíz del proyecto:
# Configuración de Django
SECRET_KEY=tu-clave-secreta-aqui
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# Base de Datos (PostgreSQL)
DB_ENGINE=django.db.backends.postgresql
DB_NAME=asistente_cultural
DB_USER=tu_usuario
DB_PASSWORD=tu_password
DB_HOST=localhost
DB_PORT=5432
# Google Gemini API (Opcional - para chatbot)
GOOGLE_API_KEY=tu_api_key_de_gemini# Aplicar migraciones
python manage.py migrate
# (Opcional) Cargar datos de ejemplo
python manage.py populate_data
# Crear superusuario para admin
python manage.py createsuperuserpython manage.py runserver¡Listo! Abre tu navegador en http://localhost:8000
Asistente-Cultural/
│
├── config/ # Configuración global de Django
│ ├── __init__.py
│ ├── settings.py # Configuración principal
│ ├── urls.py # URLs principales
│ ├── wsgi.py # Configuración WSGI
│ ├── asgi.py # Configuración ASGI
│ ├── functions.py # Funciones auxiliares
│ └── utils.py # Utilidades globales
│
├── core/ # Aplicación principal
│ ├── __init__.py
│ ├── assistant/ # Módulo de asistente cultural
│ │ ├── __init__.py
│ │ ├── admin.py # Admin de Django
│ │ ├── apps.py # Configuración de app
│ │ ├── models.py # Modelos de datos
│ │ ├── tests.py # Pruebas unitarias
│ │ ├── urls.py # URLs del módulo
│ │ ├── views.py # Vistas principales
│ │ │
│ │ ├── forms/ # Formularios
│ │ │ ├── __init__.py
│ │ │ ├── categoria.py
│ │ │ ├── contacto.py
│ │ │ ├── favoritos.py
│ │ │ ├── frase.py
│ │ │ ├── galeria.py
│ │ │ ├── historial.py
│ │ │ ├── idioma.py
│ │ │ ├── lugar.py
│ │ │ ├── norma.py
│ │ │ ├── pais.py
│ │ │ ├── temporada.py
│ │ │ ├── tip_cultural.py
│ │ │ ├── tipo_viajero.py
│ │ │ └── tour.py
│ │ │
│ │ ├── mixins/ # Mixins reutilizables
│ │ │ ├── __init__.py
│ │ │ └── superuser.py
│ │ │
│ │ ├── views/ # Vistas por funcionalidad
│ │ │ ├── __init__.py
│ │ │ ├── chatbot.py # Chatbot con Gemini
│ │ │ ├── chat.py
│ │ │ ├── favoritos.py
│ │ │ ├── frase.py
│ │ │ ├── galeria.py
│ │ │ ├── historial.py
│ │ │ ├── home.py
│ │ │ ├── idioma.py
│ │ │ ├── lugar.py
│ │ │ ├── norma.py
│ │ │ ├── pais.py
│ │ │ ├── recomendador.py
│ │ │ ├── temporada.py
│ │ │ ├── tip_cultural.py
│ │ │ ├── tipo_viajero.py
│ │ │ └── tour.py
│ │ │
│ │ └── management/ # Comandos de gestión
│ │ └── commands/
│ │ └── populate_data.py
│ │
│ └── security/ # Módulo de autenticación
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ ├── views.py
│ ├── views/
│ │ ├── __init__.py
│ │ └── user.py
│ ├── forms/
│ │ ├── __init__.py
│ │ └── user.py
│ └── urls.py
│
├── media/ # Archivos subidos por usuarios
├── static/ # Archivos estáticos (CSS, JS, imágenes)
├── templates/ # Plantillas HTML
│
├── manage.py # Script de gestión Django
├── requirements.txt # Dependencias Python
├── setup.sh # Script de configuración
├── .env # Variables de entorno (crear)
├── .gitignore # Archivos ignorados por Git
└── README.md # Este archivo
Accede a http://localhost:8000/admin con tu superusuario para:
📊 Gestión Completa desde Admin
├── 🌐 Países y Destinos
│ ├── Crear, editar, eliminar países
│ ├── Agregar idiomas oficiales
│ ├── Cargar imágenes e ilustraciones
│ └── Gestionar coordenadas GPS
│
├── 📍 Lugares y Regiones
│ ├── CRUD de lugares
│ ├── Clasificación por regiones
│ └── Marcar lugares destacados
│
├── 📅 Temporadas
│ ├── Definir temporadas por país
│ ├── Configurar meses de inicio/fin
│ └── Agregar descripciones
│
├── 📜 Normas Culturales
│ ├── Tipos: Regla, Precaución, Prohibición, Recomendación
│ ├── Organizar por país
│ └── Orden personalizado
│
├── 💬 Frases Útiles
│ ├── Traducciones completas
│ ├── Pronunciación fonética
│ └── Audio (opcional)
│
├── 🎫 Tours e Información
│ ├── Detalles de tours
│ ├── Precios y duraciones
│ └── Idiomas disponibles
│
├── 🎯 Tips Culturales
│ ├── Categorización avanzada
│ ├── Tipos de viajeros
│ ├── Tips destacados
│ └── Orden personalizado
│
├── 👤 Usuarios
│ ├── Perfiles de viajeros
│ ├── Favoritos
│ └── Historial de consultas
│
└── 📊 Dashboard
├── Estadísticas generales
├── Consultas más populares
└── Países más visitados
Para activar el chatbot IA:
- Obtén una API key en Google AI Studio
- Agrega la key a tu
.env:GOOGLE_API_KEY=tu_key - Reinicia el servidor
El chatbot utilizará Gemini para generar respuestas contextuales basadas en:
- País seleccionado por el usuario
- Tipo de viajero configurado
- Historial de consultas previas
- Base de datos cultural del sistema
┌─────────────────┐ ┌─────────────────┐
│ IdiomaOficial │ │ Pais │
├─────────────────┤ ├─────────────────┤
│ • nombre │◄──────│ • nombre │
└─────────────────┘ │ • codigo_iso │
│ • capital │
│ • moneda │
│ • poblacion │
│ • superficie │
│ • latitud │
│ • longitud │
└────────┬────────┘
│
┌───────────────────────────┼───────────────────────────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Lugares │ │ Temporadas│ │ Normas │ │ Frases │ │ Tours │
├───────────┤ ├───────────┤ ├───────────┤ ├───────────┤ ├───────────┤
│ • nombre │ │ • tipo │ │ • tipo │ │• frase_es │ │ • titulo │
│ • region │ │ • mes_ini │ │ • titulo │ │• frase_lo │ │ • duracion│
│ • descrip │ │ • mes_fin │ │ • descrip │ │• pronunci │ │ • precio │
│ • destacado│ └───────────┘ └───────────┘ └───────────┘ └───────────┘
└───────────┘
│
▼
┌───────────┐ ┌───────────┐ ┌──────────────┐
│ Galeria │ │ TipCult. │◄──────│ Categoria │
├───────────┤ ├───────────┤ ├──────────────┤
│ • imagen │ │ • titulo │ │ • nombre │
│ • titulo │ │ • contenido│ │ • descripcion│
│ • descrip │ │ • destacado│ │ • icono │
│ • orden │ │ • orden │ │ • color │
└───────────┘ └─────┬─────┘ └──────────────┘
│
▼
┌───────────────┐
│ TipoViajero │
├───────────────┤
│ • nombre │
│ • descripcion │
│ • icono │
└───────┬───────┘
│
┌────────────────┼────────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Favoritos │ │ Historial │
├─────────────┤ ├─────────────┤
│ • usuario │ │ • usuario │
│ • tip │ │ • pais │
│ • fecha │ │ • tipo_viaj │
└─────────────┘ │ • fecha │
└─────────────┘
Cada modelo incluye índices optimizados para consultas rápidas:
📈 Índices Configurados
├── Pais: nombre, codigo_iso, idioma_oficial
├── Categoria: nombre
├── TipoViajero: nombre
├── TipCultural: contenido, pais, categoria, tipo_viajero
├── Favoritos: usuario, tip
└── Historial: usuario, pais, tipo_viajero
El chatbot está diseñado para proporcionar respuestas culturalmente contextuales:
# core/assistant/views/chatbot.py
# Utiliza Google Gemini AI para generar respuestas inteligentes
# Considerando: país, tipo de viajero, historial, normas culturales| Función | Descripción |
|---|---|
| Contexto Cultural | Utiliza la base de datos del sistema para contexto |
| Tipo de Viajero | Adapta respuestas según preferencias del usuario |
| Historial | Mantiene contexto de conversaciones anteriores |
| Fallback | Respuestas predefinidas si la API no está disponible |
| Logging | Registro de todas las consultas para mejora continua |
El sistema utiliza técnicas de prompt engineering para:
- Mantener tono amigable y respetuoso
- Incluir información verificable de la base de datos
- Sugerir acciones relevantes (tours, frases, tips)
- Personalizar según perfil de viaje
Desarrollador Full Stack | Especializado en Django & AI
Si te interesa este proyecto, quieres colaborar o discutir oportunidades profesionales, no dudes en contactarme. Estoy abierto a:
💼 Oportunidades de empleo como Senior Django Developer
🤝 Proyectos colaborativos de código abierto
💡 Discusiones sobre innovación en turismo y tecnología
🏆 Contributciones a soluciones de IA aplicadas
⭐ Dale una estrella al proyecto si te resultó útil ⭐
Hecho con ❤️ y Python 🐍