Skip to content
This repository was archived by the owner on Feb 18, 2026. It is now read-only.

edconde/G4-blog

Repository files navigation

G4 Blog

Sistema de blog con gestión de usuarios, contenido multimedia y comentarios anidados.

🚀 Características

  • 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

💻 Desarrollo Local

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

�📋 Requisitos del Sistema

Sistema Operativo

  • Debian 11 (Bullseye)

Software requerido (debe estar previamente instalado)

⚠️ IMPORTANTE: El sistema asume que Apache, MariaDB y PHP YA están instalados en la máquina. El instalador NO instalará ningún software del sistema.

  • Apache 2.4+ (ya instalado)
  • MariaDB 10.5+ (ya instalado - versión incluida en Debian 11)
  • PHP 8.3 (ya instalado) con extensiones:
    • pdo_mysql o mysqli (para conexión a base de datos)
    • json (para API REST - generalmente incluida por defecto)
    • mbstring (para manejo de cadenas multibyte - generalmente incluida)

Verificar requisitos

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

🔧 Instalación

Instalación completa

  1. Descargar o clonar el repositorio

    git clone https://github.com/edconde/G4-blog.git
    cd G4-blog
  2. Ejecutar el instalador

    chmod +x install.sh
    sudo ./install.sh
  3. 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

¿Qué hace el instalador?

  • ✅ 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

📁 Estructura del Proyecto

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.

🌐 Acceso a la Aplicación

Acceso Local

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

Acceso desde Red Externa

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.

Configuración del Entorno

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.sh

Nota: El archivo config.js original no se modifica durante la instalación. La configuración del servidor se gestiona en env.js para mantener el código fuente limpio y versionable

👥 Usuarios de Prueba

El instalador crea usuarios de prueba para desarrollo:

Email 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

⚠️ Importante: Eliminar estos usuarios en producción.

🗄️ Base de Datos

  • Base de datos: g4-blog-db
  • Usuario: g4-blog-user
  • Contraseña: g4-blog-pass

Tablas principales

  • usuarios - Gestión de usuarios y autenticación
  • posts - Entradas del blog
  • categorias - Categorías de contenido
  • posts_categorias - Relación N:M entre posts y categorías
  • comentarios - Sistema de comentarios anidados
  • tokens_sesion - Gestión de tokens JWT
  • multimedia - Registro de archivos subidos

Ver documentación detallada en docs/BD.md

🔄 Actualizaciones

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

⚙️ Configuración

Archivos de configuración

  • /etc/g4-blog/install.conf - Configuración del instalador
  • /etc/g4-blog/version - Versión instalada
  • backend/config.php - Configuración de la aplicación

Configuración importante en producció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';

🧪 Testing

# 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 configurada

📖 Documentación

Toda la documentación del proyecto está organizada por hitos en el directorio docs/:

🧪 Tests

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.

📝 Licencia

Ver archivo LICENSE

👨‍💻 Autores

Grupo 4 - Proyecto Blog


Versión actual: 3.0.0 - Hito 3 (Sistema de Autenticación)
Última actualización: 19 de noviembre de 2025

About

Aplicación web consistente en un backend en PHP y un frontend en JS para la asignatura de PDP.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors