Skip to content

Max1mus5/SIV-Source-Code-Project

Semillero de Videojuegos - Universidad Tecnologica de Pereira - Blog🤩 + Blockchain🫠

Este proyecto es un blog diseñado para registrar el progreso de un semillero de investigación, utilizando tecnología blockchain para asegurar la inmutabilidad y autenticidad de los posts.

Tecnologías Utilizadas

Se desarrollo el backend utilizando Node.js, y para mejorar la eficiencia y escalabilidad del proyecto, se utilizaron las siguientes tecnologías:

  • SQLite3: Base de datos relacional ligera.
  • Express: Framework para Node.js, facilitando la creación de APIs RESTful.
  • bcryptjs: Para hashear las contraseñas de los usuarios.
  • jsonwebtoken (JWT): Para la autenticación de usuarios mediante tokens.
  • Sequelize: ORM para gestionar la base de datos SQLite3.
  • NodeMailer: Para enviar correos electrónicos de verificación y recuperación de contraseñas.
  • Crytpo: Utilizaremos crypto para generar los bloques de la blockchain.

Estructura del Servidor

La estructura de carpetas está diseñada para mantener el proyecto organizado, modularizado y si es necesario en un futuro facilitar su escalabilidad:

connection

Esta carpeta se encargará de la conexión a la base de datos y a la red de Ethereum. Está dividida en tres secciones:

  • db: Maneja la conexión a la base de datos SQLite3.
  • middleware: Maneja la conexión a la red de Ethereum y la autenticación de usuarios.
  • utils: Funciones o servicios necesarios para relacionar los módulos con la base de datos y la red de Ethereum.

modules

La carpeta de módulos sera la carpeta encargada de contener una plantilla especifica para cada objeto en el diagrama de clases, permitiendo una mejor organización y escalabilidad del proyecto.

Tener En cuenta la siguiente estructura de clases: Diagrama de clases

Para cada módulo, se incluyen las siguientes subcarpetas:

  • controller: Maneja las peticiones y respuestas de la aplicación.
  • models: Define la estructura de la base de datos.
  • routes: Define las rutas de la aplicación y valida los datos enviados a la API.
  • utils: Contiene la lógica o servicios que requiere la aplicación.

Base de Datos

Utilizamos SQLite3 como base de datos. La base de datos se llamará SIV.db y contendrá las siguientes tablas y relaciones, basadas en el diagrama implementado para las clases:

DB_structure

La base de datos estará contenida en Blog-Backend/connection/db/schemas, definiendo como "schema" a la estructura modelo para crear una tabla en la base de datos. Para cada modulo se va a crear un schema con los campos establecidos en diseño de la base de datos.

Rutas de la API

Para ver la documentacion unicamente debes añadir /docs al final de la url la ruta, para facilitar la consulta de la documentacion de la API.

Se implemento una API RESTful para el backend, con las siguientes rutas:

/user

/reset

/post

/comment

/blockchain

/category

Middleware

Se implementaron los siguientes middlewares para la autenticación de usuarios y envio de correos electronicos para recuperar contraseña:

JWTmiddleware verifica si el token enviado por el cliente es válido y si el usuario tiene permisos para acceder a la ruta solicitada., debe ser enviaod en el siguiente formato:

authorization: Bearer <token>

emailHelper verifica si el correo electronico enviado por el cliente es valido y permite crear una nueva contraseña de ser asi

Instalación y Configuración

  1. Clonar el repositorio y entrar en la carpeta del proyecto:

    git clone https://github.com/Max1mus5/SIV-Source-Code-Project.git
    cd SIV-Source-Code-Project
    cd Blog-Backend
  2. Instalar las dependencias:

    npm install
  3. Configurar las variables de entorno: Crea un archivo .env en la raíz del proyecto con las siguientes variables:

    PORT=
    JWT_SECRET=
    DATABASE_URL=
    BACKEND_URL=
    SIV_EMAIL="" # email who sends the emails between ""
    SIV_APP_PASSWORD="" #enable double step verification security in your account and after go to: https://myaccount.google.com/apppasswords
    
    
  4. Iniciar el servidor con nodemon:

    npm run dev
  5. Verificar Estado del servidor y de la Blockchain:

    http://localhost:8545/blockchain/status
    http://localhost:8000/status
    

Notas de Desarrollo

Para información técnica detallada sobre el backend — incluyendo:

  • ⚠️ Problema crítico con Node.js v21+ y la solución
  • Variables de entorno explicadas
  • Estado actual de módulos y cambios recientes
  • Endpoints disponibles con sus rutas de documentación
  • Notas de seguridad para producción

Consultar: Blog-Backend/README.md

Licencia

Este proyecto está licenciado, License

About

Blog Project Based on Blockchain

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors