Skip to content

Aplicación web en Django para redimensionar imágenes | Django 5 · Redis · Celery · MySQL · Pillow | Procesamiento asíncrono y vista previa en tiempo real

Notifications You must be signed in to change notification settings

Jaolmos/redimensiona-django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redimensiona 🖼️

Redimensiona es una aplicación web desarrollada con Django que permite a los usuarios redimensionar imágenes de forma inteligente, manteniendo la calidad y las proporciones originales. Ideal para optimizar imágenes para web, redes sociales o cualquier uso específico.

✨ Características Principales

  • Procesamiento Inteligente

    • Redimensionamiento manteniendo proporciones
    • Vista previa en tiempo real
    • Cálculo automático de dimensiones
    • Procesamiento asíncrono
    • Múltiples formatos soportados
  • Sistema de Usuarios

    • Registro de usuarios
    • Autenticación segura
    • Perfiles personalizados
    • Historial de procesamiento
    • Gestión de sesiones
  • Planes Gratuitos

    • Plan sin registro: • 3 imágenes gratuitas • Hasta 2MB por imagen • Proceso instantáneo • Sin necesidad de cuenta
    • Plan con registro: • Imágenes ilimitadas • Hasta 20MB por imagen • Acceso permanente • Historial de imágenes

📸 Capturas de Pantalla

Vista Previa de la Aplicación

Página Principal

Página Principal Página de inicio donde los usuarios pueden subir y redimensionar imágenes

Panel de Control

Panel de Control Dashboard donde los usuarios pueden gestionar sus imágenes procesadas

Resultados

Página de Resultados Vista de resultados mostrando la imagen procesada y sus miniaturas

🛠️ Tecnologías

Backend

  • Django 5
  • Celery (procesamiento asíncrono)
  • Redis (message broker)
  • MySQL
  • Pillow (procesamiento de imágenes)

Frontend

  • HTML5
  • CSS3 (diseño personalizado)
  • JavaScript vanilla
  • Diseño responsive
  • Animaciones y transiciones

Características Técnicas

  • Procesamiento asíncrono con Celery
  • Sistema de colas con Redis
  • Base de datos MySQL
  • Almacenamiento optimizado de imágenes

📂 Estructura del Proyecto

redimensiona/
├── apps/
│   ├── core/          # Funcionalidad principal
│   ├── images/        # Procesamiento de imágenes
│   └── users/         # Gestión de usuarios
├── config/            # Configuración del proyecto
├── static/
│   ├── css/          # Estilos
│   ├── img/          # Imágenes estáticas
│   └── js/           # Scripts
│       ├── preview.js    # Vista previa de imágenes
│       └── lightbox.js   # Visualización de imágenes
├── media/            # Archivos subidos (no versionado)
├── .env              # Variables de entorno (no versionado)
├── .env.example      # Ejemplo de variables de entorno
├── .gitignore        # Configuración de Git
├── manage.py         # Script de gestión de Django
├── README.md         # Documentación del proyecto
└── requirements.txt  # Dependencias del proyecto

Nota: El directorio media/ no se incluye en el control de versiones ya que contiene archivos subidos por los usuarios.

⚙️ Instalación

1. Clonar el repositorio

git clone https://github.com/Jaolmos/redimensiona-django.git
cd redimensiona

2. Crear y activar entorno virtual

python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate
pip install -r requirements.txt

3. Configurar variables de entorno

cp .env.example .env

Editar .env con tus configuraciones:

# Configuración de Django
DEBUG=True
SECRET_KEY=tu_clave_secreta

# Configuración de la base de datos
DB_NAME=redimensiona_db
DB_USER=tu_usuario
DB_PASSWORD=tu_contraseña

# Configuración de Redis y Celery
REDIS_USERNAME=tu_usuario_redis
REDIS_PASSWORD=tu_contraseña_redis

4. Configurar la base de datos

python manage.py migrate

5. Iniciar servicios

# Terminal 1: Django
python manage.py runserver

# Terminal 2: Celery
# En Linux/Mac:
celery -A redimensiona worker -l info

# En Windows:
celery -A config worker --pool=solo -l INFO

🚀 Planes Futuros

  • Más opciones de procesamiento
  • Filtros y efectos
  • API REST
  • Integración con servicios cloud
  • Sistema de pagos para planes premium

🎨 Características de Diseño

  • Interfaz moderna y minimalista
  • Tema claro con acentos de color
  • Animaciones suaves
  • Feedback visual inmediato
  • Diseño totalmente responsive

🛠️ Requisitos del Sistema

  • Python 3.8+
  • MySQL 5.7+
  • Redis
  • Navegador moderno (Chrome, Firefox, Safari, Edge)

🔐 Características de Seguridad

  • Validación de tipos de archivo
  • Límites de tamaño configurables
  • Protección CSRF
  • Autenticación segura
  • Procesamiento aislado de archivos

📋 Buenas Prácticas y Patrones de Diseño

Arquitectura y Organización

  • Separación clara de responsabilidades (patrón MVT de Django)
  • Estructura modular por aplicaciones Django
  • Configuración separada por entornos
  • Sistema de plantillas heredables

Código Limpio

  • Nomenclatura clara y consistente
  • Documentación de funciones y clases
  • Código DRY (Don't Repeat Yourself)
  • Tipado de datos consistente

Optimización y Rendimiento

  • Procesamiento asíncrono de tareas pesadas
  • Caché de resultados frecuentes
  • Optimización de consultas a base de datos
  • Carga diferida de recursos

Control de Versiones

  • Commits semánticos
  • Ramas separadas por funcionalidad
  • Documentación de cambios
  • Archivos de configuración versionados

About

Aplicación web en Django para redimensionar imágenes | Django 5 · Redis · Celery · MySQL · Pillow | Procesamiento asíncrono y vista previa en tiempo real

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published