DirectoryTreeWeb es una aplicación web moderna y modular basada en Flask que genera representaciones visuales de estructuras de directorios. Los usuarios pueden ingresar una ruta local y la aplicación mostrará el árbol de directorios en una interfaz web elegante y responsive.
- Diseño responsive con TailwindCSS y paleta de colores profesional
- Layout de 3 columnas optimizado para diferentes tamaños de pantalla
- Cards organizadas para mejor separación visual de funcionalidades
- Iconos FontAwesome para mejor experiencia de usuario
- Tooltips de accesibilidad en todos los botones sin texto
- Explorador de directorios modal que permite navegar por todo el sistema
- Detección automática del SO (Windows: unidades C:, D:, etc. | Unix/Linux/Mac: desde /)
- Navegación jerárquica con botón para ir al directorio padre
- Ruta actual visible en tiempo real
- Manejo de permisos con mensajes de error apropiados
- Blacklist de carpetas para excluir directorios específicos (venv, node_modules, etc.)
- Blacklist de archivos para excluir archivos específicos (.env, config.json, etc.)
- Blacklist de extensiones para excluir tipos de archivos (.tmp, .log, .cache, etc.)
- Profundidad máxima configurable (1-20 niveles)
- Mostrar archivos ocultos opcional
- Opciones de ordenamiento (nombre, tamaño, fecha de modificación)
- Configuración global persistente en base de datos SQLite
- Generación de árbol con formato ASCII art profesional
- Copiar al portapapeles con feedback visual
- Descargar como archivo de texto
- Limpiar salida con redirección automática
- Manejo de errores con mensajes amigables
- Guardar configuraciones localmente en el navegador
- Cargar presets previamente guardados
- Reset a valores por defecto con un clic
- Persistencia de configuración entre sesiones
- Python 3.7 o superior
- Git (para clonar el repositorio)
-
Clona el repositorio:
git clone https://github.com/GeoShaPoH/DirectoryTreeWeb.git cd DirectoryTreeWeb
-
Crea y activa el entorno virtual:
python -m venv venv # En Windows: venv\Scripts\activate # En macOS/Linux: source venv/bin/activate
-
Instala las dependencias:
pip install -r requirements.txt
-
⚠️ Inicializa la base de datos (OBLIGATORIO):python init_db.py
Importante: Este paso es esencial antes de arrancar la aplicación por primera vez.
Para usuarios existentes: Si ya tienes una base de datos anterior, ejecuta:
python migrate_db.py
Esto agregará los nuevos campos de blacklist de archivos y extensiones.
-
Ejecuta la aplicación:
# Opción 1: Script automático # En Windows: run_directory_tree_web.bat # En macOS/Linux: bash run_directory_tree_web.sh # Opción 2: Manual python app.py
-
Abre tu navegador:
http://localhost:5000
-
Ingresa una ruta:
- Escribe manualmente la ruta del directorio
- O usa el botón "Browse" para navegar por el sistema
-
Configura las opciones (opcional):
- Blacklist Folders: Agrega carpetas que quieres excluir
- Blacklist Files: Agrega archivos específicos que quieres excluir
- Blacklist Extensions: Agrega extensiones de archivos que quieres excluir
- Max Depth: Define la profundidad máxima del árbol
- Show Hidden: Marca para incluir archivos ocultos
- Sort By: Elige el criterio de ordenamiento
-
Genera el árbol:
- Haz clic en "Generate Tree"
- El resultado se mostrará en el panel principal
-
Gestiona la salida:
- Copy: Copia el árbol al portapapeles
- Download: Descarga como archivo .txt
- Clear: Limpia la salida y el campo de entrada
- Save Configuration: Guarda los cambios en la base de datos
- Save Preset: Guarda la configuración actual en el navegador
- Load Preset: Carga una configuración previamente guardada
- Reset to Defaults: Restaura los valores por defecto
DirectoryTreeWeb/
├── app/ # Aplicación principal
│ ├── __init__.py # Inicialización de Flask
│ ├── config/ # Configuración
│ │ ├── __init__.py
│ │ └── config.py # Configuración de la app
│ ├── models/ # Modelos de datos
│ │ ├── __init__.py
│ │ └── user_config.py # Modelo de configuración global
│ ├── routes/ # Rutas y endpoints
│ │ ├── __init__.py
│ │ ├── main.py # Rutas principales
│ │ └── api.py # API para navegación y árboles
│ ├── services/ # Servicios de negocio
│ │ ├── __init__.py
│ │ └── tree_generator.py # Generador de árboles
│ └── utils/ # Utilidades
│ └── __init__.py
├── templates/ # Plantillas HTML
│ └── index.html # Interfaz principal
├── static/ # Archivos estáticos
│ └── favicon.svg # Icono de la aplicación
├── app.py # Punto de entrada principal
├── run.py # Script de ejecución
├── init_db.py # Inicialización de base de datos
├── requirements.txt # Dependencias de Python
├── run_directory_tree_web.bat # Script de inicio (Windows)
├── run_directory_tree_web.sh # Script de inicio (Unix/Linux)
└── README.md # Este archivo
- SQLite por defecto (configurable en
app/config/config.py
) - Tabla única:
user_config
para configuración global - Inicialización automática con
python init_db.py
- Migraciones disponibles con Flask-Migrate
# Clave secreta para Flask
SECRET_KEY=tu_clave_secreta_aqui
# URL de la base de datos (opcional)
DATABASE_URL=sqlite:///instance/app.db
- Colores: Modifica las clases de TailwindCSS en
templates/index.html
- Blacklist por defecto: Edita en
app/models/user_config.py
- Configuración de Flask: Ajusta en
app/config/config.py
¡Las contribuciones son bienvenidas! Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature
) - Commit tus cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abre un Pull Request
- Mantén el código limpio y bien documentado
- Sigue las convenciones de Python (PEP 8)
- Agrega tests para nuevas funcionalidades
- Actualiza la documentación según sea necesario
Si encuentras un bug o tienes una sugerencia:
- Busca en los issues existentes
- Crea un nuevo issue con:
- Descripción clara del problema
- Pasos para reproducir
- Información del sistema operativo
- Capturas de pantalla (si aplica)
Este proyecto está bajo la Licencia Apache 2.0. Esta licencia proporciona:
- Protección de propiedad intelectual más robusta que MIT
- Permite uso comercial y distribución
- Requiere atribución y preservación de copyright
- Protección de patentes explícita
- Contribuciones claramente definidas para evitar conflictos
Ver el archivo LICENSE para los términos completos.
La Licencia Apache 2.0 es ideal para proyectos que quieren:
- Mantener el código abierto y colaborativo
- Proteger mejor la propiedad intelectual del autor original
- Permitir uso comercial sin restricciones
- Definir claramente qué constituye una contribución
- Proporcionar protección de patentes explícita
GeoShaPoh - GitHub
- Flask por el framework web
- TailwindCSS por el sistema de diseño
- FontAwesome por los iconos
- SQLAlchemy por el ORM
- Comunidad open source por las herramientas y librerías utilizadas
⭐ Si este proyecto te es útil, considera darle una estrella en GitHub!