Skip to content

SkuuIll/Project-Final-Informatorio-25

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 DevBlog - Plataforma de Blogging con IA

Una plataforma de blogging moderna con generación de contenido por IA construida con Django

Python Django License

🌐 Demo en Vivo🐛 Reportar Bug


📋 Tabla de Contenidos


✨ Características

🔐 Autenticación y Usuarios

  • ✅ 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

📝 Gestión de Contenido

  • ✅ 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

🤖 Inteligencia Artificial

  • ✅ 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

💬 Interacción Social

  • ✅ Sistema de comentarios con likes
  • ✅ Sistema de "Me Gusta" en posts
  • ✅ Favoritos personales
  • ✅ Notificaciones en tiempo real
  • ✅ Sistema de seguimiento entre usuarios

📊 Dashboard y Analytics

  • ✅ Panel de control personalizado
  • ✅ Estadísticas detalladas (vistas, likes, comentarios)
  • ✅ Gráficos de actividad interactivos
  • ✅ Gestión de notificaciones

🔍 Búsqueda y Navegación

  • ✅ Búsqueda avanzada por título y contenido
  • ✅ Filtrado por etiquetas
  • ✅ Ordenamiento múltiple (fecha, popularidad, vistas)
  • ✅ Paginación optimizada
  • ✅ Feed RSS automático

🎨 UI/UX Moderna

  • ✅ 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

🔒 Seguridad y Rendimiento

  • ✅ 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

🛠️ Stack Tecnológico

Backend

Python Django PostgreSQL Redis

Frontend

HTML5 CSS3 TailwindCSS Alpine.js

DevOps & Tools

Docker Nginx GitHub Actions

📦 Dependencias Principales

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

🚀 Instalación

📋 Requisitos Previos

  • Opción 1 (Docker): Docker y Docker Compose
  • Opción 2 (Local): Python 3.12+, pip, Git

Inicio Rápido

# 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

🐳 Opción 1: Docker (Recomendado para Producción)

# 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

🛠️ Comandos Docker Útiles

# 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

💻 Opción 2: Desarrollo Local

# 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

🔧 Gestión de Entornos

# 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

📦 Configuraciones Disponibles

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

🔑 Acceso por Defecto

  • Aplicación: http://localhost:8000
  • Admin: http://localhost:8000/admin/
  • Crear superusuario: python manage.py createsuperuser

🔧 Configuración

Variables de Entorno Principales

# 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-password

🐳 Configuración para Docker

Para usar Docker, asegúrate de configurar:

USE_POSTGRESQL=True
POSTGRES_HOST=db
REDIS_URL=redis://redis:6379/0
DEBUG=False  # Para producción

🔑 Obtener API Key de Google Gemini

  1. Ve a Google AI Studio
  2. Inicia sesión con tu cuenta de Google
  3. Crea un nuevo proyecto o selecciona uno existente
  4. Ve a "Get API Key" y genera una nueva clave
  5. Copia la clave y pégala en tu archivo .env

📁 Estructura del Proyecto

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

🤖 Generador de IA

Características Principales

  • 🧠 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

🚀 Cómo Usar el Generador

  1. Accede al Admin: Ve a /admin/posts/post/
  2. Generador de IA: Haz clic en "Generar Post con IA"
  3. Ingresa URL: Pega la URL del artículo que quieres procesar
  4. Configura Opciones:
    • Selecciona el tipo de prompt
    • Activa extracción de imágenes
    • Ajusta el número máximo de imágenes
  5. Genera: El sistema creará automáticamente:
    • Título optimizado
    • Contenido reescrito en HTML
    • Tags relevantes
    • Imágenes extraídas y procesadas

🛠️ Configuración Avanzada

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


� Funcionralidades Destacadas

🎨 Widget Personalizado de Imágenes

  • 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.)

🔒 Seguridad Avanzada

  • Validación segura de archivos
  • Protección contra directory traversal
  • Manejo robusto de errores
  • Logging estructurado para debugging

Optimización de Rendimiento

  • Managers personalizados para consultas optimizadas
  • Caching inteligente de imágenes
  • Lazy loading de contenido
  • Compresión automática de archivos estáticos

👨‍💻 Autor

SkuuIll

GitHub


🎓 Proyecto Final - Informatorio Chaco 2025

Este proyecto fue desarrollado como Proyecto Final para el curso de Desarrollo Web con Python y Django del programa Informatorio Chaco 2025.

🏆 Logros del Proyecto

  • ✅ 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

🙏 Agradecimientos

  • 🏫 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

⭐ ¡Si te gusta este proyecto, dale una estrella!

Hecho con ❤️ en Chaco, Argentina 🇦🇷

Proyecto Final - Informatorio 2025

About

Proyecto Final: Blog con Django (Informatorio Chaco)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published