- PHP con PDO y sesiones nativas.
- MySQL/MariaDB como base de datos.
- Composer para autoload y dependencias.
- Servidor web compatible con PHP: Apache, Nginx, Caddy, cPanel, XAMPP, Laragon o similar.
- JavaScript vanilla con
fetchpara endpoints internos. - ApexCharts para gráficos y dashboards.
- Tailwind/template Xintra para UI.
- Cloudflare Turnstile para protección del login.
- PHP 8.0+ recomendado.
- PHP runtime accesible desde CLI y servidor web compatible.
- MySQL/MariaDB 5.7+.
- Composer.
- Extensiones PHP:
curl,pdo_mysql,openssl,mbstring,json. - Navegador moderno.
git clone <repo>
cd xintra-elephpant
composer installCrea tu archivo .env en la raíz del proyecto usando las variables necesarias para tu entorno.
DB_HOST=127.0.0.1
DB_NAME=bd_black
DB_USER=root
DB_PASS=
IP_API_URL=https://api.ipify.org
TURNSTILE_SITE_KEY=your-site-key
TURNSTILE_SECRET_KEY=your-secret-key
TURNSTILE_HOSTNAME=127.0.0.1En producción, TURNSTILE_HOSTNAME debe coincidir con el dominio configurado en Cloudflare Turnstile, por ejemplo tudominio.com.
Sirve el proyecto desde cualquier entorno compatible con PHP. Puede ser un virtual host, un document root local, un contenedor, cPanel, XAMPP, Laragon u otra configuración equivalente.
Ejemplo de acceso local:
http://127.0.0.1/xintra-elephpant/index.php
Si trabajas en Windows y PHP/cURL no valida certificados HTTPS, el proyecto incluye soporte para config/cacert.pem. Este archivo es público, no contiene secretos y puede versionarse en Git. Permite validar servicios externos como Cloudflare Turnstile sin desactivar la verificación SSL.
xintra-elephpant/
├── assets/ # CSS, JS, imágenes, librerías frontend
├── config/ # bootstrap, API config, certificados auxiliares
├── controller/ # endpoints PHP consumidos por fetch/ajax
├── database/ # conexión y recursos de base de datos
├── layout/ # parciales reutilizables: header, sidebar, footer
├── model/ # acceso a datos y lógica de dominio
├── views/ # vistas protegidas de la aplicación
├── vendor/ # dependencias instaladas por Composer
├── index.php # login y entrada pública principal
└── README.md
config/bootstrap.phpdebe cargarse al inicio de cada vista/controlador que requiera configuración global.ROOTdebe usarse para includes internos:include ROOT . '/layout/header.php';.- Las vistas protegidas deben validar sesión con
controller/check_session.php. - Los controladores deben responder JSON cuando sean consumidos por JavaScript.
- No mezclar consultas SQL complejas dentro de vistas; usar modelos en
model/. - Los parciales visuales compartidos pertenecen a
layout/.
Ejemplo base para una vista protegida:
<?php
require_once __DIR__ . '/../config/bootstrap.php';
require_once ROOT . '/controller/check_session.php';
?>Ejemplo base para un controlador JSON:
<?php
require_once __DIR__ . '/../config/bootstrap.php';
header('Content-Type: application/json');
echo json_encode(['ok' => true]);- El login está protegido con Cloudflare Turnstile.
- La validación de Turnstile ocurre en backend mediante
TURNSTILE_SECRET_KEY. TURNSTILE_HOSTNAMEpermite limitar tokens al hostname esperado.- Las sesiones se inicializan centralmente desde
config/bootstrap.php. - No subir
.envcon credenciales reales a repositorios públicos. - Mantener
vendor/actualizado concomposer installocomposer updatesegún el flujo del equipo.
assets/js/sales-dashboard.jsalimenta el dashboard principal.assets/js/analytics-reporte.jsalimenta reportes por usuario, tickets e items.- Los endpoints de datos viven principalmente en
controller/dashboard/ycontroller/venta/. - Los gráficos usan ApexCharts y los tooltips auxiliares se centralizan en
assets/js/xintra-tooltip.js.
Validar sintaxis PHP:
php -l index.php
php -l controller/acceso.php
php -l views/home.phpValidar sintaxis JavaScript:
node --check assets/js/loginscript.js
node --check assets/js/sales-dashboard.js
node --check assets/js/analytics-reporte.jsRevisar extensiones PHP disponibles:
php -m- Configura el
.envdel hosting con credenciales reales. - Registra el dominio de producción en Cloudflare Turnstile.
- Ajusta
TURNSTILE_HOSTNAMEal hostname real. - Verifica que PHP tenga habilitado
curlyopenssl. - Confirma que el servidor web sirva correctamente assets estáticos desde
assets/. - Revisa permisos de lectura para
config/,controller/,model/,layout/yviews/.
- Si el login muestra error de verificación de seguridad, revisa
TURNSTILE_SECRET_KEY,TURNSTILE_HOSTNAMEy conectividad HTTPS desde PHP. - Si Turnstile carga pero backend falla en local, valida el certificado CA usado por cURL.
- Si un
fetchdevuelve HTML en lugar de JSON, probablemente la sesión expiró o hubo una redirección al login. - Si un gráfico no carga, revisar la respuesta JSON del endpoint en DevTools antes de tocar ApexCharts.
Este proyecto es open source. Puedes estudiar, modificar y adaptar el código respetando los créditos originales del autor y la marca del proyecto.
Créditos principales:
- PHPEITOR como autor/marca técnica del proyecto.
- Xintra Elephpant como implementación web para gestión operativa, dashboards y reportes.
Antes de usarlo en producción, se recomienda auditar:
- Variables sensibles del
.env. - Permisos de base de datos.
- Reglas del servidor web.
- Flujo de autenticación y sesiones.
- Endpoints JSON expuestos bajo
controller/. - Configuración de Cloudflare Turnstile para el dominio final.
Consulta .licence para la nota de atribución del proyecto.
