Sistema de blog con gestión de usuarios, contenido multimedia y comentarios anidados.
- ✅ Autenticación JWT completa - Registro, login, validación de tokens
- ✅ Gestión de usuarios - Con roles (usuario/administrador)
- ✅ Middleware de autorización - Control de acceso por roles
- ✅ Blog con soporte multimedia (imágenes y videos)
- ✅ Sistema de comentarios anidados
- ✅ Categorías múltiples por entrada
- ✅ API REST completa
- ✅ Frontend desacoplado con JavaScript y Bootstrap
- ✅ Base de datos MariaDB
Si eres desarrollador y quieres trabajar en el proyecto localmente (sin instalación en Apache), consulta la Guía para Desarrolladores que explica cómo:
- Ejecutar backend y frontend con servidores de desarrollo
- Configurar la base de datos localmente
- Ejecutar los tests unitarios
- Estructura y arquitectura del código
- Debian 11 (Bullseye)
- Apache 2.4+ (ya instalado)
- MariaDB 10.5+ (ya instalado - versión incluida en Debian 11)
- PHP 8.3 (ya instalado) con extensiones:
pdo_mysqlomysqli(para conexión a base de datos)json(para API REST - generalmente incluida por defecto)mbstring(para manejo de cadenas multibyte - generalmente incluida)
Antes de ejecutar el instalador, verifica que todo esté instalado:
# Verificar Apache
apache2 -v
# Verificar MariaDB
mysql --version
# Verificar PHP y extensiones
php -v
php -m | grep -E "pdo_mysql|mysqli|json|mbstring"Si falta alguna extensión de PHP, instálala antes de ejecutar el instalador:
# En Debian 11 (solo si es necesario)
sudo apt-get install php-mysql php-mbstring
sudo systemctl restart apache2-
Descargar o clonar el repositorio
git clone https://github.com/edconde/G4-blog.git cd G4-blog -
Ejecutar el instalador
chmod +x install.sh sudo ./install.sh
-
Seguir las instrucciones en pantalla
- Se solicitará la contraseña de root de MariaDB
- El instalador configurará automáticamente todo en
/var/www/html/g4-blog
- ✅ Verifica requisitos del sistema
- ✅ Crea/actualiza la base de datos
- ✅ Despliega backend y frontend en Apache
- ✅ Crea archivos de configuración
- ✅ Establece permisos correctos
- ✅ Crea backups en actualizaciones
G4-blog/
├── backend/ # API REST en PHP
├── frontend/ # Aplicación JavaScript
├── bd/ # Scripts de base de datos
│ ├── 01_create_database.sql
│ ├── 02_create_tables.sql
│ ├── 03_seed_data.sql
│ └── migrations/ # Migraciones incrementales
├── tests/ # Tests unitarios (NO se despliegan)
│ ├── backend/ # Tests del backend
│ └── README.md
├── docs/ # Documentación del proyecto
├── install.sh # Instalador principal
├── ESTADO_PROYECTO.md # Estado y roadmap del proyecto
├── GUIA_DEVELOPMENT.md # Guía para desarrolladores
├── GUIA_TESTING.md # Guía rápida de testing
└── README.md # Este archivo
Nota: El directorio tests/ contiene los tests unitarios y NO se copia a producción durante la instalación.
Después de la instalación, desde la máquina donde se instaló:
- Frontend:
http://localhost/g4-blog/frontend - Backend:
http://localhost/g4-blog/backend
Si instalas en una VM Debian y quieres acceder desde otros dispositivos en la red:
- Frontend:
http://{IP_DEL_SERVIDOR}/g4-blog/frontend - Backend:
http://{IP_DEL_SERVIDOR}/g4-blog/backend
El instalador detecta automáticamente la IP de la máquina y configura el frontend para usar la URL correcta del backend.
El instalador genera un archivo frontend/env.js con la configuración del servidor:
const ENV_CONFIG = {
server: {
ip: "localhost",
protocol: "http",
basePath: "/g4-blog"
},
api: {
baseURL: "http://localhost:8080",
timeout: 30000
},
app: {
name: "G4 Blog",
version: "2.0.0",
hito: "2",
environment: "development",
installDate: new Date().toISOString()
},
access: {
local: "http://localhost:8081/g4-blog/frontend",
network: "http://localhost:8081/g4-blog/frontend"
}
};Verificar configuración:
sudo ./check-config.shNota: El archivo
config.jsoriginal no se modifica durante la instalación. La configuración del servidor se gestiona enenv.jspara mantener el código fuente limpio y versionable
El instalador crea usuarios de prueba para desarrollo:
| Contraseña | Rol | |
|---|---|---|
| admin@g4blog.local | password | Administrador |
| juan.perez@example.com | password | Usuario |
| maria.garcia@example.com | password | Usuario |
| carlos.lopez@example.com | password | Usuario |
| ana.martinez@example.com | password | Administrador |
- Base de datos:
g4-blog-db - Usuario:
g4-blog-user - Contraseña:
g4-blog-pass
usuarios- Gestión de usuarios y autenticaciónposts- Entradas del blogcategorias- Categorías de contenidoposts_categorias- Relación N:M entre posts y categoríascomentarios- Sistema de comentarios anidadostokens_sesion- Gestión de tokens JWTmultimedia- Registro de archivos subidos
Ver documentación detallada en docs/BD.md
El instalador detecta automáticamente si hay una versión previa instalada:
sudo ./install.sh- Crea backup automático de la instalación anterior
- Aplica migraciones de base de datos incrementales
- Actualiza archivos de backend y frontend
- Preserva la configuración existente
/etc/g4-blog/install.conf- Configuración del instalador/etc/g4-blog/version- Versión instaladabackend/config.php- Configuración de la aplicación
Editar backend/config.php:
// ⚠️ CAMBIAR en producción
define('JWT_SECRET', 'tu-clave-secreta-segura');
define('DEBUG_MODE', false);Cambiar contraseña de base de datos:
ALTER USER 'g4-blog-user'@'localhost' IDENTIFIED BY 'nueva-contraseña-segura';# Verificar conexión a la base de datos
mysql -u g4-blog-user -pg4-blog-pass g4-blog-db -e "SHOW TABLES;"
# Verificar Apache
sudo systemctl status apache2
# Verificar permisos
ls -la /var/www/html/g4-blog # o ruta configuradaToda la documentación del proyecto está organizada por hitos en el directorio docs/:
El proyecto incluye tests unitarios que NO se despliegan en producción.
Para una guía rápida de cómo ejecutar los tests, consulta GUIA_TESTING.md.
Ver archivo LICENSE
Grupo 4 - Proyecto Blog
Versión actual: 3.0.0 - Hito 3 (Sistema de Autenticación)
Última actualización: 19 de noviembre de 2025