WebApp Admin Panel es un panel de administración back-end construido en PHP puro que permite gestionar productos, categorías, usuarios y roles con un sistema de permisos granular. Está pensado para ser desplegado sobre Apache (o el servidor integrado de PHP durante el desarrollo) y utiliza MariaDB/MySQL como motor de base de datos. En esta documentación encontrarás todo lo necesario para instalar, configurar, extender y desplegar la aplicación: desde los requisitos del entorno hasta la descripción de cada módulo y el flujo de despliegue por FTP.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/jpbarbatic/webapp/llms.txt
Use this file to discover all available pages before exploring further.
El idioma preferido de este proyecto —tanto en el código fuente como en la documentación— es el español, tal como se indica en el propio
README.md del repositorio.Stack tecnológico
El proyecto combina un backend PHP tradicional con librerías modernas de generación de documentos y un frontend basado en Bootstrap:| Capa | Tecnología | Rol |
|---|---|---|
| Backend | PHP 8.1+ (sesiones, PDO, extensión GD) | Lógica de negocio, autenticación, manipulación de imágenes |
| Base de datos | MariaDB / MySQL | Persistencia de datos; charset utf8mb4 con colación española |
| Frontend | Bootstrap 5 (incluido en public/assets/bootstrap/) | Interfaz responsiva sin dependencias de CDN externas |
| Exportación PDF | mPDF ^8.3 + tecnickcom/tc-lib-pdf ^8.33 | Generación de listados de productos en formato PDF |
| Servidor web | Apache + mod_rewrite (.htaccess en public/) | Enrutamiento en producción; servidor integrado de PHP para desarrollo |
| Despliegue | lftp + sync.sh + .env | Sincronización incremental al servidor FTP de producción |
composer.json:
npm run serve (declarado en package.json) levanta el servidor de desarrollo integrado de PHP apuntando a public/ como raíz web.
Estructura de directorios
El proyecto separa con claridad el backend, las vistas y la raíz pública en tres carpetas principales:includes/ — lógica de back-end
Contiene todas las librerías PHP que los controladores de public/ incluyen. Nunca son accesibles directamente desde el navegador. El fichero db_pdo.php abre la conexión PDO usando las constantes de config.php; permisos.php y usuarios.php se encargan de la autenticación basada en sesiones y de la verificación de permisos por rol antes de cada operación.
html/ — fragmentos de vista
Cada subdirectorio agrupa los fragmentos de una entidad concreta. La convención de nombre de fichero indica el tipo de fragmento:
.html.php— marcado HTML del componente.css.php— estilos CSS específicos del módulo, servidos en línea.script.php— JavaScript específico del módulo, servido en línea
public/ — raíz web
Es el único directorio expuesto al servidor web. Cada módulo tiene su propia subcarpeta con los controladores PHP: index.php (listado), nuevo.php / crear.php (alta), editar.php (edición), guardar.php (persistencia) y borrar.php (eliminación). El módulo de productos incluye además exportar.php (exportación PDF) y subir_fotos.php (carga de imágenes con GD).
Módulos principales
Productos
Gestión completa del catálogo: alta, edición, eliminación, filtrado por categoría,
control de stock, galería de fotos y exportación del listado a PDF.
Categorías
Creación y edición de las categorías que agrupan los productos.
Las categorías eliminadas dejan el campo
id_categoria de sus productos en NULL.Usuarios
Administración de cuentas de usuario: creación, edición de datos personales,
cambio de contraseña, subida de avatar y asignación de rol.
Roles y Permisos
Sistema de roles con permisos granulares y dependencias entre ellos.
Cada rol agrupa un conjunto de permisos que controlan las acciones disponibles.
Dashboard
Panel principal con resumen del estado de la aplicación. Incluye estilos
propios (
dashboard.css) y un widget meteorológico (weather-widget.js).Despliegue FTP
Sincronización incremental al servidor de producción mediante
lftp y sync.sh.
Los ficheros sensibles (config.php, .env, vendor/) se excluyen automáticamente.