diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..8aa765c --- /dev/null +++ b/src/README.md @@ -0,0 +1,159 @@ +# MultiApp + +MultiApp es una aplicación de escritorio desarrollada en Python que combina múltiples funcionalidades en una sola interfaz gráfica. Utiliza la biblioteca `customtkinter` para la creación de la interfaz de usuario y está diseñada para ser modular, integrando diferentes servicios y herramientas como un monitor del sistema, un juego de Tetris, un gestor de procesos, y un scrapper web. + +## Características principales + +- **Interfaz gráfica moderna**: Construida con `customtkinter` para una experiencia de usuario mejorada. +- **Scrapping web**: Permite extraer enlaces de páginas web y almacenarlos en una base de datos. +- **Monitor del sistema**: Muestra métricas en tiempo real como uso de CPU, RAM y red. +- **Juego de Tetris**: Incluye un juego de Tetris completamente funcional. +- **Gestión de procesos**: Abre programas, archivos o URLs directamente desde la aplicación. +- **Gestión de hilos**: Maneja múltiples tareas concurrentes de manera eficiente. + +--- + +## Estructura del proyecto + +El proyecto está organizado en diferentes módulos y clases, cada uno con una responsabilidad específica. A continuación, se describen las clases principales y sus funcionalidades. + +### 1. `CenteredWindow` (ubicada en `src/ui/centered_window.py`) + +Esta es la clase principal de la aplicación que gestiona la interfaz gráfica y la interacción del usuario. + +- **Responsabilidades**: + - Configurar la ventana principal y centrarla en la pantalla. + - Crear paneles (izquierdo, derecho, central y barra inferior) para organizar las funcionalidades. + - Manejar el inicio y cierre de la aplicación. + - Integrar los diferentes componentes como el monitor del sistema, el scrapper y el juego de Tetris. + +--- + +### 2. `ThreadsManager` (ubicada en `src/services/threads_manager.py`) + +Gestiona los hilos de ejecución para las diferentes tareas de la aplicación. + +- **Responsabilidades**: + - Iniciar y detener hilos para tareas como actualización de tiempo, temperatura, correos, monitor del sistema y el juego de Tetris. + - Coordinar la ejecución de tareas concurrentes. + - Proveer métodos para actualizar métricas del sistema, tiempo, temperatura y correos. + +--- + +### 3. `ThreadenTask` (ubicada en `src/services/threaden_task.py`) + +Clase auxiliar para manejar hilos individuales. + +- **Responsabilidades**: + - Iniciar y detener hilos de manera segura. + - Garantizar que los hilos se ejecuten en segundo plano como demonios. + +--- + +### 4. `ProcessManager` (ubicada en `src/services/processes_manager.py`) + +Permite abrir programas, archivos o URLs desde la aplicación. + +- **Responsabilidades**: + - Abrir recursos como navegadores web, programas o archivos. + - Manejar errores y proporcionar mensajes de fallback en caso de fallos. + +--- + +### 5. `Scrapper` (ubicada en `src/services/scrapper.py`) + +Clase encargada de realizar el scrapping web y almacenar los enlaces encontrados en una base de datos. + +- **Responsabilidades**: + - Extraer enlaces de páginas web utilizando `BeautifulSoup`. + - Almacenar los enlaces en una base de datos MySQL. + - Actualizar la interfaz de usuario con los enlaces encontrados. + - Manejar múltiples tareas de scrapping de manera concurrente. + +--- + +### 6. `SystemMonitor` (ubicada en `src/services/system_monitor.py`) + +Monitorea métricas del sistema en tiempo real y las muestra en gráficos. + +- **Responsabilidades**: + - Obtener métricas como uso de CPU, RAM y red utilizando `psutil`. + - Mostrar gráficos en tiempo real utilizando `matplotlib`. + - Actualizar los gráficos dinámicamente con nuevos datos. + +--- + +### 7. `TetrisGame` (ubicada en `src/services/tetris_game.py`) + +Implementa un juego de Tetris completamente funcional dentro de la aplicación. + +- **Responsabilidades**: + - Gestionar la lógica del juego, incluyendo movimiento, rotación y colocación de piezas. + - Detectar líneas completas y actualizarlas. + - Manejar eventos de teclado para controlar el juego. + +--- + +## Requisitos del sistema + +- Python 3.8 o superior. +- Bibliotecas necesarias (instalables con `pip`): + - `customtkinter` + - `psutil` + - `matplotlib` + - `requests` + - `beautifulsoup4` + - `mysql-connector-python` + +--- + +## Instalación + +1. Clona este repositorio: +``` +bash +git clone https://github.com/DennisEckerskorn/MultiAppRepo.git +cd MultiAppRepo +``` + + +2. Instala las dependencias: +bash +pip install -r requirements.txt + + + +3. Configura la base de datos MySQL: + - Crea una base de datos llamada `scrap_links_db`. + - Asegúrate de que las credenciales en `Scrapper` coincidan con tu configuración. + +4. Ejecuta la aplicación: +bash +python src/main.py + + + +--- + +## Uso + +1. **Scrapping**: + - Introduce una URL en el panel izquierdo y haz clic en "Iniciar Scrapping". + - Los enlaces encontrados se mostrarán en la pestaña "Scrapping". + +2. **Monitor del sistema**: + - Ve a la pestaña "Sistema" para ver gráficos en tiempo real de CPU, RAM y red. + +3. **Juego de Tetris**: + - Ve a la pestaña "Juego" y haz clic en "Start Game" para comenzar a jugar. + +4. **Gestión de procesos**: + - Usa los botones del panel izquierdo para abrir programas o URLs. + +--- + +## Enlace al video de demostración: + +## Autor + +Desarrollado por Dennis Eckerskorn. \ No newline at end of file