- ✨ Características
- 🛠️ Stack Tecnológico
- 🚀 Instalación
- 🔧 Configuración
- 📁 Estructura del Proyecto
- 🤖 Generador de IA
- 👨💻 Autor
- ✅ Sistema completo de registro/login con verificación por email
- ✅ Perfiles de usuario personalizables con avatares
- ✅ Sistema de roles y permisos granular
- ✅ Recuperación de contraseña segura
- ✅ Protección CAPTCHA con Cloudflare Turnstile
- ✅ Editor WYSIWYG avanzado con CKEditor 5
- ✅ Sistema de etiquetas inteligente
- ✅ Cálculo automático de tiempo de lectura
- ✅ Widget personalizado para selección de imágenes de cabecera
- ✅ Galería de imágenes extraídas automáticamente
- ✅ Estados de publicación (borrador/publicado)
- ✅ Posts destacados (sticky posts)
- ✅ Gestión segura de archivos con validación
- ✅ Generador de contenido con Google Gemini 2.5-pro
- ✅ Extracción automática de contenido desde URLs
- ✅ Extracción y procesamiento automático de imágenes
- ✅ Generación automática de etiquetas
- ✅ Reescritura inteligente de contenido con formato HTML
- ✅ Selector inteligente de imágenes de cabecera desde medios existentes
- ✅ Sistema de comentarios con likes
- ✅ Sistema de "Me Gusta" en posts
- ✅ Favoritos personales
- ✅ Notificaciones en tiempo real
- ✅ Sistema de seguimiento entre usuarios
- ✅ Panel de control personalizado
- ✅ Estadísticas detalladas (vistas, likes, comentarios)
- ✅ Gráficos de actividad interactivos
- ✅ Gestión de notificaciones
- ✅ Búsqueda avanzada por título y contenido
- ✅ Filtrado por etiquetas
- ✅ Ordenamiento múltiple (fecha, popularidad, vistas)
- ✅ Paginación optimizada
- ✅ Feed RSS automático
- ✅ Diseño responsivo con Tailwind CSS
- ✅ Tema claro/oscuro automático
- ✅ Animaciones suaves con Alpine.js
- ✅ Glassmorphism y efectos modernos
- ✅ Accesibilidad WCAG 2.1 compliant
- ✅ Protección CSRF y XSS
- ✅ Headers de seguridad configurados
- ✅ Rate limiting implementado
- ✅ Consultas optimizadas (N+1 resuelto)
- ✅ Compresión de archivos estáticos
- ✅ Logging estructurado
Django==5.2.4 # Framework web principal
djangorestframework==3.16.0 # API REST
django-ckeditor-5==0.2.18 # Editor WYSIWYG
django-taggit==6.1.0 # Sistema de etiquetas
django-jazzmin==3.0.1 # Admin personalizado
channels==4.2.2 # WebSockets
google-generativeai==0.7.2 # Integración con Gemini AI
psycopg2-binary==2.9.9 # Driver PostgreSQL
whitenoise==6.9.0 # Archivos estáticos
gunicorn==23.0.0 # Servidor WSGI- Opción 1 (Docker): Docker y Docker Compose
- Opción 2 (Local): Python 3.12+, pip, Git
# 1. Clonar el repositorio
git clone https://github.com/SkuuIll/Project-Final-Informatorio-25.git
cd Project-Final-Informatorio-25
# 2. Inicio automático (detecta el entorno)
python start.py# 1. Configurar para producción
python manage_environment.py prod
# 2. Construir y levantar servicios
docker-compose up -d --build
# 3. El sistema estará disponible en:
# - Aplicación: http://localhost:8000
# - Admin: http://localhost:8000/admin
# - Flower (Monitor Celery): http://localhost:5555# Ver logs
docker-compose logs -f web
# Ejecutar comandos Django
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py shell
# Reinicializar sistema de tags
docker-compose exec web python manage.py initialize_tag_system --calculate-cooccurrence --create-history
# Parar servicios
docker-compose down# 1. Crear y activar entorno virtual
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 2. Instalar dependencias
pip install -r requirements.txt
# 3. Configurar para desarrollo
python manage_environment.py dev
# 4. Iniciar servidor (automático)
python start.py
# O manualmente:
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver# Ver entorno actual
python manage_environment.py status
# Cambiar a desarrollo (completo con IA)
python manage_environment.py dev
# Cambiar a mínimo (solo tags inteligentes, sin IA)
python manage_environment.py minimal
# Cambiar a producción (Docker)
python manage_environment.py prod
# Verificar si está en Docker
python manage_environment.py check| Configuración | Base de Datos | Caché | IA | Tags Inteligentes | Uso |
|---|---|---|---|---|---|
| Desarrollo | SQLite | Local | ✅ | ✅ | Desarrollo completo |
| Mínimo | SQLite | Local | ❌ | ✅ | Solo sistema de tags |
| Producción | PostgreSQL | Redis | ✅ | ✅ | Docker/VPS |
- Aplicación:
http://localhost:8000 - Admin:
http://localhost:8000/admin/ - Crear superusuario:
python manage.py createsuperuser
# Django Core
SECRET_KEY=tu-clave-super-secreta-aqui
DEBUG=True # False en producción
ALLOWED_HOSTS=localhost,127.0.0.1
# Base de Datos
USE_POSTGRESQL=False # True para Docker/Producción
POSTGRES_DB=devblog
POSTGRES_USER=devblog_user
POSTGRES_PASSWORD=devblog_password
POSTGRES_HOST=localhost # 'db' para Docker
POSTGRES_PORT=5432
# Redis (para Docker/Producción)
REDIS_URL=redis://localhost:6379/0 # redis://redis:6379/0 para Docker
# Servicios de IA
GOOGLE_API_KEY=tu-api-key-de-gemini-aqui
# Seguridad (Opcional)
TURNSTILE_SITE_KEY=tu-site-key
TURNSTILE_SECRET_KEY=tu-secret-key
# Email (Opcional)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=[email protected]
EMAIL_HOST_PASSWORD=tu-app-passwordPara usar Docker, asegúrate de configurar:
USE_POSTGRESQL=True
POSTGRES_HOST=db
REDIS_URL=redis://redis:6379/0
DEBUG=False # Para producción- Ve a Google AI Studio
- Inicia sesión con tu cuenta de Google
- Crea un nuevo proyecto o selecciona uno existente
- Ve a "Get API Key" y genera una nueva clave
- Copia la clave y pégala en tu archivo
.env
DevBlog/
├── 📁 accounts/ # Gestión de usuarios y autenticación
│ ├── models.py # Profile, Notification
│ ├── views.py # Auth, perfil, configuraciones
│ ├── forms.py # Formularios de usuario
│ └── admin.py # Admin personalizado
├── 📁 blog/ # Configuración principal del proyecto
│ ├── configuraciones/ # Settings modulares
│ │ ├── settings.py # Configuración principal
│ │ ├── development.py # Settings de desarrollo
│ │ └── production.py # Settings de producción
│ ├── middleware.py # Middleware personalizado
│ ├── urls.py # URLs principales
│ └── wsgi.py # Configuración WSGI
├── 📁 posts/ # Lógica principal de posts y contenido
│ ├── models.py # Post, Comment, AIModel, AIPromptTemplate
│ ├── views.py # CRUD, likes, búsqueda, AI
│ ├── admin.py # Admin personalizado con widget de imágenes
│ ├── widgets.py # Widget personalizado para selección de imágenes
│ ├── ai_generator.py # Integración con Google Gemini AI
│ ├── image_services.py # Servicios de generación de imágenes
│ ├── utils.py # Utilidades para manejo seguro de archivos
│ └── managers.py # Managers personalizados para optimización
├── 📁 templates/ # Templates HTML
│ ├── base.html # Template base con Tailwind CSS
│ ├── partials/ # Componentes reutilizables
│ ├── posts/ # Templates de posts
│ ├── accounts/ # Templates de usuarios
│ └── admin/ # Templates personalizados del admin
├── 📁 static/ # Archivos estáticos
│ ├── css/ # Estilos personalizados
│ ├── js/ # JavaScript y Alpine.js
│ └── img/ # Imágenes del sitio
├── 📁 media/ # Archivos subidos por usuarios
│ ├── post_images/ # Imágenes de posts
│ └── ai_posts/ # Imágenes extraídas por IA
├── 📁 staticfiles/ # Archivos estáticos recolectados
├── 📋 requirements.txt # Dependencias Python
├── ⚙️ .env # Variables de entorno
├── 🗃️ db.sqlite3 # Base de datos SQLite (desarrollo)
└── 🐍 manage.py # Script de gestión de Django
- 🧠 Google Gemini 2.5-pro: Integración con el modelo de IA más avanzado de Google
- 🔗 Extracción de URLs: Analiza y extrae contenido automáticamente desde cualquier URL
- 🖼️ Procesamiento de Imágenes: Descarga y procesa imágenes encontradas en el contenido
- 📝 Reescritura Inteligente: Convierte contenido en artículos únicos con formato HTML
- 🏷️ Generación de Tags: Crea etiquetas relevantes automáticamente
- 🎯 Selección de Cabecera: Widget inteligente para seleccionar imágenes de cabecera
- Accede al Admin: Ve a
/admin/posts/post/ - Generador de IA: Haz clic en "Generar Post con IA"
- Ingresa URL: Pega la URL del artículo que quieres procesar
- Configura Opciones:
- Selecciona el tipo de prompt
- Activa extracción de imágenes
- Ajusta el número máximo de imágenes
- Genera: El sistema creará automáticamente:
- Título optimizado
- Contenido reescrito en HTML
- Tags relevantes
- Imágenes extraídas y procesadas
El sistema incluye templates de prompts personalizables para diferentes tipos de contenido:
- Reescritura Simple: Para contenido básico
- Post Completo: Para artículos detallados con estructura HTML
- Generación de Tags: Para crear etiquetas específicas
- Selector visual de imágenes existentes
- Preview en tiempo real
- Validación automática de archivos
- Soporte para múltiples formatos (JPG, PNG, WebP, etc.)
- Validación segura de archivos
- Protección contra directory traversal
- Manejo robusto de errores
- Logging estructurado para debugging
- Managers personalizados para consultas optimizadas
- Caching inteligente de imágenes
- Lazy loading de contenido
- Compresión automática de archivos estáticos
Este proyecto fue desarrollado como Proyecto Final para el curso de Desarrollo Web con Python y Django del programa Informatorio Chaco 2025.
- ✅ Implementación completa de CRUD con Django
- ✅ Integración exitosa con APIs de IA (Google Gemini)
- ✅ Sistema de autenticación y autorización robusto
- ✅ UI/UX moderna y responsiva
- ✅ Optimización de rendimiento y seguridad
- ✅ Código limpio y bien documentado
- 🏫 Informatorio Chaco - Por la oportunidad de formación
- 👨🏫 Instructores - Por la guía y conocimientos compartidos
- 👥 Compañeros - Por el apoyo y colaboración
- 🌐 Comunidad Open Source - Por las herramientas increíbles