Documentación de Portafy

Toda la información clave sobre el proyecto.

1. Visión General del Proyecto

Portafy es una plataforma web desarrollada para ayudar a programadores, diseñadores y otros trabajadores visuales a crear y gestionar sus portafolios en línea de manera sencilla y eficiente. El principal objetivo es proveer una solución gratuita y accesible para aquellos que necesitan una presencia profesional en línea para mostrar sus proyectos y trabajos a potenciales empleadores o a la comunidad.

El sistema permite a los usuarios cargar sus proyectos, utilizar plantillas de CV personalizables y compartir su perfil de forma organizada. Esto facilita que el trabajo de los usuarios sea evaluado por terceros, como profesores o reclutadores, de una forma visualmente atractiva y profesional.

2. Requerimientos del Sistema

2.1. Requerimientos Funcionales

Estos requisitos definen lo que el sistema debe hacer para cumplir con las necesidades del usuario:

  • Registro e Inicio de Sesión: El sistema debe permitir a nuevos usuarios registrarse con una cuenta de correo electrónico, nombre y contraseña, así como iniciar sesión de forma segura usando JWT (JSON Web Token).
  • Gestión de Proyectos: El sistema debe permitir a los usuarios subir, editar y eliminar sus proyectos, incluyendo contenido multimedia como imágenes y videos.
  • Gestión de Perfil: El usuario debe poder visualizar y editar su perfil, así como compartir su cuenta a través de un enlace público.
  • Importar/Exportar CV: Debe existir la funcionalidad para importar y exportar CVs en formato PDF, utilizando plantillas predefinidas.
  • Opciones de Privacidad: El sistema debe ofrecer la posibilidad de establecer la privacidad de los proyectos, haciéndolos públicos o privados.

2.2. Requerimientos No Funcionales

Estos requisitos describen cómo el sistema debe funcionar, enfocándose en la experiencia del usuario y las limitaciones del sistema:

  • Usabilidad: El sistema debe ser fácil de usar y la interfaz de usuario debe ser intuitiva y clara.
  • Rendimiento: La plataforma debe tener un tiempo de respuesta rápido y ser capaz de manejar un número creciente de usuarios y proyectos sin degradación significativa del rendimiento.
  • Disponibilidad: El sistema debe estar disponible la mayor parte del tiempo, excepto durante mantenimientos programados.
  • Seguridad: El sistema debe cumplir con los estándares de seguridad mínimos definidos por OWASP para proteger la información del usuario de vulnerabilidades comunes.
  • Responsividad: La interfaz de usuario debe ser totalmente responsiva y funcionar correctamente en una variedad de dispositivos (ordenadores de escritorio, tablets y móviles).
  • Compatibilidad: El sitio debe ser compatible con los navegadores web más comunes (Chrome, Firefox, Safari, Edge).

3. Flujo de Usuario Básico

El flujo del usuario se centra en la creación y visualización de portafolios. Los pasos principales son:

  1. Registro o Inicio de Sesión: El usuario accede a la plataforma y crea una cuenta o inicia sesión. La autenticación se realiza de forma segura a través de JWT.
  2. Creación del Perfil: Una vez autenticado, el usuario puede configurar su perfil, añadiendo información personal y profesional que se mostrará en su portafolio.
  3. Subida de Proyectos: El usuario sube sus proyectos, proporcionando un título, una descripción y los archivos multimedia asociados (imágenes, videos, etc.).
  4. Visualización y Compartir: El portafolio del usuario se genera automáticamente. El usuario puede ver su perfil, editar sus proyectos o compartir el enlace con otros a través de redes sociales.
  5. Interacción con otros portafolios: El usuario puede navegar y descubrir los proyectos de otros usuarios, fomentando una comunidad y la exposición de sus trabajos.

4. Arquitectura del Sistema y Tecnologías

4.1. Arquitectura de Software

El sistema sigue una arquitectura de cliente-servidor. El frontend (lo que el usuario ve y con lo que interactúa) y el backend (la lógica del servidor, la base de datos y la API) están separados. La comunicación entre ambos se realiza mediante una API RESTful, utilizando el formato de intercambio de datos JSON.

Esto permite que el sistema sea más escalable y modular, ya que cada componente puede ser desarrollado y actualizado de forma independiente, facilitando la colaboración y el mantenimiento.

4.2. Tecnologías Clave

Las tecnologías utilizadas en este proyecto son estándares de la industria para el desarrollo web moderno, garantizando compatibilidad y un buen rendimiento.

4.3. Tecnologías del Frontend

  • HTML5: Utilizado para estructurar el contenido de las páginas web.
  • CSS3: Encargado del diseño, estilo y responsividad. Se implementa con un enfoque de responsividad suave y progresiva y se utilizan variables CSS para una fácil gestión del tema (modo claro/oscuro).
  • JavaScript: Añade interactividad al lado del cliente, gestiona la comunicación con el servidor a través de la API y controla los elementos dinámicos de la interfaz.

4.4. Tecnologías del Backend y Base de Datos

  • API RESTful: Es el puente entre el frontend y el backend, gestionando las peticiones y respuestas para todas las operaciones.
  • Base de Datos: Se utiliza un sistema de gestión de bases de datos relacionales, MySQL Workbench, para almacenar y gestionar los datos de los usuarios, proyectos y perfiles.

5. Glosario de Términos

API
Application Programming Interface. Un conjunto de reglas y protocolos que permiten que dos aplicaciones se comuniquen entre sí.
Backend
La "parte trasera" de una aplicación. Incluye la lógica del servidor, la base de datos y la gestión de la API, que procesa los datos y se comunica con el frontend.
Frontend
La "parte delantera" de una aplicación. Es la interfaz de usuario con la que el usuario interactúa directamente, construida con HTML, CSS y JavaScript.
JSON
JavaScript Object Notation. Un formato de texto ligero y legible por humanos, utilizado para el intercambio de datos entre el servidor y el cliente.
JWT
JSON Web Token. Un método seguro para transmitir información entre dos partes como un objeto JSON, utilizado principalmente para la autenticación de usuarios.
OWASP
Open Web Application Security Project. Una fundación sin fines de lucro que trabaja para mejorar la seguridad del software a través de proyectos, herramientas y guías.
RESTful
Un estilo de arquitectura de software para sistemas hipermedia distribuidos, basado en los principios de la arquitectura REST (Representational State Transfer), a menudo utilizado para APIs web.
SRS
Software Requirements Specification. Un documento que describe de manera completa y detallada los requisitos de un sistema de software.

6. Equipo del Proyecto y Contacto

Este proyecto fue desarrollado por un equipo de estudiantes, con el apoyo de varios profesores de la EEST N°4 de Berazategui.

  • Autores: Elias Franco, Valentin Ferreyra, Rodrigo Arguello
  • Profesores: Diego Pezet, Victoria Moscardini, Mauro Russomando, Gustavo Maugeri, Nicolás Calderón, José Yedro
  • Curso: 7º 4ª
  • Fecha de Versión 1.0: 24 de junio de 2025