{"id":21094433,"url":"https://github.com/domicoder/java-recogida-paquetes","last_synced_at":"2026-04-27T15:36:59.518Z","repository":{"id":126509275,"uuid":"161610165","full_name":"domicoder/java-recogida-paquetes","owner":"domicoder","description":"📦⚡️ Sistema de gestión de recogida de paquetes desarrollado en Java Swing. Permite llevar el control de paquetes de clientes, gestionar entregas y generar reportes administrativos.","archived":false,"fork":false,"pushed_at":"2025-12-06T16:48:44.000Z","size":2809,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-01T14:28:54.954Z","etag":null,"topics":["courier","courier-management","couriers","java","java-8","java-swing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/domicoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-13T08:49:38.000Z","updated_at":"2025-12-06T16:51:40.000Z","dependencies_parsed_at":"2023-06-17T01:30:21.539Z","dependency_job_id":null,"html_url":"https://github.com/domicoder/java-recogida-paquetes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/domicoder/java-recogida-paquetes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domicoder%2Fjava-recogida-paquetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domicoder%2Fjava-recogida-paquetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domicoder%2Fjava-recogida-paquetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domicoder%2Fjava-recogida-paquetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/domicoder","download_url":"https://codeload.github.com/domicoder/java-recogida-paquetes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/domicoder%2Fjava-recogida-paquetes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32343563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["courier","courier-management","couriers","java","java-8","java-swing"],"created_at":"2024-11-19T22:17:29.369Z","updated_at":"2026-04-27T15:36:59.477Z","avatar_url":"https://github.com/domicoder.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RePAQ - Sistema de Recogida de Paquetes\r\n\r\nSistema de gestión de recogida de paquetes desarrollado en **Java Swing**. Permite llevar el control de paquetes de clientes, gestionar entregas y generar reportes administrativos.\r\n\r\n---\r\n\r\n## Descripcion\r\n\r\nRePAQ es una aplicación de escritorio que facilita la gestión de paquetes en un centro de distribución. El sistema cuenta con tres tipos de usuarios:\r\n\r\n-   **Administrador**: Gestiona clientes, receptores, paquetes y genera reportes estadísticos.\r\n-   **Receptor**: Consulta paquetes disponibles, busca clientes y registra entregas.\r\n-   **Cliente**: Visualiza su perfil y el estado de sus paquetes.\r\n\r\n---\r\n\r\n## Funcionalidades\r\n\r\n### Administrador\r\n\r\n-   Agregar y gestionar clientes\r\n-   Agregar y gestionar receptores\r\n-   Registrar nuevos paquetes\r\n-   Buscar clientes por nombre o apellido\r\n-   Buscar paquetes por estado (disponible, entregado)\r\n-   Generar correos de notificación a clientes\r\n-   Visualizar reportes estadísticos:\r\n    -   Recogidas por día, semana y mes\r\n    -   Porcentaje de paquetes entregados vs pendientes\r\n    -   Distribución de clientes por género\r\n    -   Día de la semana con mayor cantidad de recogidas\r\n\r\n### Receptor\r\n\r\n-   Consultar paquetes disponibles para el día\r\n-   Marcar paquetes como entregados\r\n-   Buscar clientes\r\n\r\n### Cliente\r\n\r\n-   Ver perfil personal\r\n-   Consultar estado de sus paquetes\r\n\r\n---\r\n\r\n## Requisitos del Sistema\r\n\r\n-   **Java JDK 8** o superior\r\n-   **MySQL 5.7** o superior\r\n-   **NetBeans IDE** (recomendado para desarrollo)\r\n\r\n### Dependencias\r\n\r\n-   MySQL Connector/J (driver JDBC)\r\n-   Apache Commons Codec (para encriptación MD5)\r\n-   JavaMail API (para envío de correos)\r\n\r\n---\r\n\r\n## Instalacion\r\n\r\n### 1. Clonar el repositorio\r\n\r\n```bash\r\ngit clone https://github.com/tu-usuario/java-recogida-paquetes.git\r\ncd java-recogida-paquetes\r\n```\r\n\r\n### 2. Configurar la base de datos\r\n\r\nCrear la base de datos MySQL llamada `recogidapaquetes` con las tablas necesarias:\r\n\r\n-   `administrador`\r\n-   `cliente`\r\n-   `receptor`\r\n-   `paquete`\r\n\r\n### 3. Configurar credenciales\r\n\r\nCopiar el archivo de plantilla de configuración:\r\n\r\n```bash\r\ncp config.properties.template src/config.properties\r\n```\r\n\r\nEditar `src/config.properties` con tus credenciales:\r\n\r\n```properties\r\n# Configuracion de Base de Datos\r\ndb.url=jdbc:mysql://localhost:3306/recogidapaquetes\r\ndb.user=tu_usuario\r\ndb.password=tu_contraseña\r\n\r\n# Configuracion de Correo (Gmail)\r\nsmtp.host=smtp.gmail.com\r\nsmtp.port=587\r\nsmtp.starttls.enable=true\r\nsmtp.auth=true\r\nsmtp.user=tu_correo@gmail.com\r\nsmtp.password=tu_app_password\r\n```\r\n\r\n**Nota sobre Gmail**: Para usar Gmail como servidor SMTP, debes:\r\n\r\n1. Activar la verificación en dos pasos en tu cuenta de Google\r\n2. Generar una contraseña de aplicación en: https://myaccount.google.com/apppasswords\r\n3. Usar esa contraseña de aplicación en el archivo de configuración\r\n\r\n### 4. Compilar y ejecutar\r\n\r\nAbrir el proyecto en NetBeans y ejecutar, o compilar desde terminal:\r\n\r\n```bash\r\nant compile\r\nant run\r\n```\r\n\r\n---\r\n\r\n## Configuracion mediante Variables de Entorno\r\n\r\nAlternativamente, puedes configurar las credenciales usando variables de entorno (tienen prioridad sobre el archivo de propiedades):\r\n\r\n```bash\r\nexport REPAQ_DB_URL=\"jdbc:mysql://localhost:3306/recogidapaquetes\"\r\nexport REPAQ_DB_USER=\"usuario\"\r\nexport REPAQ_DB_PASSWORD=\"contraseña\"\r\nexport REPAQ_SMTP_USER=\"correo@gmail.com\"\r\nexport REPAQ_SMTP_PASSWORD=\"app_password\"\r\n```\r\n\r\n---\r\n\r\n## Estructura del Proyecto\r\n\r\n```\r\njava-recogida-paquetes/\r\n├── src/\r\n│   └── com/recogidapaquete/\r\n│       ├── base/           # Clases base y patrones de diseño\r\n│       ├── BD/             # Capa de acceso a datos (MySQL)\r\n│       ├── config/         # Gestión de configuración\r\n│       ├── images/         # Recursos gráficos\r\n│       └── interfaces/     # Interfaces gráficas (Swing)\r\n├── config.properties.template  # Plantilla de configuración\r\n├── build.xml               # Script de construcción Ant\r\n└── README.md\r\n```\r\n\r\n---\r\n\r\n## Patrones de Diseño Implementados\r\n\r\n-   **Singleton**: Conexión a base de datos (`ConexionMySQL`)\r\n-   **Observer**: Notificaciones por correo cuando hay paquetes disponibles\r\n-   **Mediator**: Comunicación entre componentes de la aplicación\r\n-   **State**: Gestión de estados de paquetes (Disponible, Entregado)\r\n\r\n---\r\n\r\n## Seguridad\r\n\r\n-   Las contraseñas de usuarios se almacenan encriptadas con MD5 en la base de datos\r\n-   Las credenciales sensibles (base de datos, correo) se cargan desde un archivo de configuración externo\r\n-   El archivo `config.properties` está excluido del control de versiones\r\n\r\n---\r\n\r\n## Licencia\r\n\r\nEste proyecto fue desarrollado con fines educativos.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomicoder%2Fjava-recogida-paquetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdomicoder%2Fjava-recogida-paquetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdomicoder%2Fjava-recogida-paquetes/lists"}