Skip to main content

Instrucciones proyecto intermodular (1º DAM)

Este documento recoge las instrucciones y normas que deben seguir los grupos para el desarrollo del proyecto intermodular. El objetivo es trabajar de forma organizada, documentar el proceso y aplicar herramientas reales de desarrollo.

ANTES DE EMPEZAR

IMPORTANTE: El alumno/a debe ser capaz de explicar cualquier parte del código desarrollado.

ATENCIÓN
no ia

La inteligencia artificial es una herramienta potente, pero en este proyecto no está permitida como sustituto del aprendizaje.

Este proyecto está diseñado para que podáis resolverlo únicamente con los conocimientos trabajados en clase.
El objetivo no es que el código funcione sin más, sino que entendáis lo que hacéis en cada paso.

El uso de IA en este proyecto:

  • No es necesario
  • No está justificado
  • Va en contra del objetivo de aprendizaje

Si se detecta uso de IA (código no comprendido, incoherencias, explicaciones insuficientes, etc.), el profesorado podrá considerar el trabajo como no válido.

Antes de recurrir a cualquier ayuda externa:

  • Revisad apuntes
  • Revisad vuestro propio código
  • Consultad con vuestro compañero
  • Plantead la duda en Mattermost
AVISO

TODOS LOS DÍAS A LAS 21:00 SE PARARÁ EL DEL PROYECTO PARA REGISTRAR EN LA MEMORIA Y EN EL TABLERO DE PLANKA TODO EL DESARROLLO DEL PROYECTO EN LA SESIÓN

1. Máquinas virtuales para el desarrollo

Cada grupo dispone de una máquina virtual para realizar las pruebas y puesta en producción de la aplicación.

  • Para acceder al menú principal de máquinas principales, pulsar el icono de la casa desde guacamole.
menuguacamole
  • Acceso mediante un único usuario (alumno).
  • Es posible conectarse de forma simultánea mediante VNC.
warning
  • Con VNC Ambos integrantes comparten la misma sesión (ven lo mismo).
  • Para vnc es necesario haber iniciado sesión con la cuenta principal.
  • En caso de no funcionar vnc, reiniciar el sercivio con:
sudo systemctl restart x11vnc

Se debe utilizar esta máquina para:

  • Probar el proyecto en Docker.
  • Verificar integración de servicios.
  • Realizar pruebas reales.

ANTES DE INSTALAR CUALQUIER SOFTWARE EXTRA, AVISAD DE ELLO


2. Planka (gestión del proyecto)

Cada grupo dispone de un tablero en Planka.

Al inicio de cada sesión:

  • Revisar el estado del tablero.
  • Identificar tareas pendientes.
  • Asignar tareas a cada integrante.

Al final de la sesión:

  • Actualizar el estado real del proyecto.

Regla: Si una tarea no está en Planka, no existe.

ES OBLIGATORIO indicar a que integrante pertenece una tarea

planka2

Al iniciar y finalizar una tarea hay que añadir un comentario

planka

Ejemplo tareas:

danger

Las tareas deben ser concretas y verificables.

No se aceptan tareas como:

  • "hacer backend"
  • "avanzar proyecto"
  • "hacer cosas"

Cada tarea debe representar una acción clara y comprobable.

Tareas de análisis y diseño

  • Definir usuarios del sistema (ADMIN / EMPLEADO)
  • Definir funcionalidades de la parte pública
  • Definir funcionalidades del panel ADMIN
  • Definir funcionalidades del panel EMPLEADO
  • Crear bocetos
  • Diseñar diagrama entidad-relación
  • Definir tablas principales de la base de datos

Tareas de base de datos

  • Crear tabla usuarios
  • Crear tabla roles
  • Crear relación usuario-rol
  • Crear tabla principal del departamento
  • Crear tabla solicitudes
  • Crear tabla mensajes/contacto
  • Crear claves primarias y foráneas
  • Crear script SQL inicial
  • Insertar datos de prueba
  • Crear procedimiento almacenado de login
  • Crear procedimiento para registrar usuario
  • Crear procedimiento para crear solicitud

Tareas de login (Flask)

  • Crear formulario de login
  • Conectar Flask con PostgreSQL
  • Implementar validación de usuario
  • Implementar comprobación de rol
  • Redirigir según rol (ADMIN / EMPLEADO)
  • Implementar cierre de sesión
  • Probar login correcto
  • Probar login incorrecto

Tareas de Nginx y rutas

  • Configurar Nginx como reverse proxy
  • Configurar ruta pública de inicio
  • Configurar ruta pública de login
  • Configurar ruta privada de administración
  • Configurar ruta privada de empleados
  • Bloquear acceso sin autenticación
  • Probar acceso a rutas públicas
  • Probar acceso a rutas privadas

Tareas de Docker

  • Crear docker-compose.yml
  • Crear contenedor Flask
  • Crear contenedor PostgreSQL
  • Crear contenedor Nginx
  • Crear contenedor PHP
  • Crear contenedor Java
  • Configurar red Docker
  • Probar arranque del proyecto completo

Tareas de frontend / interfaces

  • Crear página principal
  • Crear página de información
  • Crear formulario de contacto
  • Crear formulario de solicitud
  • Crear listado de elementos
  • Crear pantalla de detalle
  • Conectar frontend con backend

Tareas de pruebas

  • Probar login ADMIN
  • Probar login EMPLEADO
  • Probar rutas protegidas
  • Probar inserción en base de datos
  • Probar formularios
  • Detectar errores
  • Corregir errores

Tareas de documentación

  • Crear memoria del proyecto
  • Añadir bocetos a la memoria
  • Añadir diagrama de base de datos
  • Añadir esquema de arquitectura
  • Actualizar sesiones de trabajo
  • Añadir capturas de Planka

3. Gitercilla (control de versiones)

El uso de Git es obligatorio.

gitercilla2

Estructura del repositorio:

nombre-proyecto

  • php
    • codigo
    • docker
  • java
    • codigo
    • docker
  • python
    • codigo
    • docker
  • database
    • java.db
    • php.db
    • python.db
  • README.md

Normas:

  • Mínimo un commit diario por alumno.

  • Los commits deben describir el trabajo realizado.

  • Uso de ramas:

    • main (producción)
    • dev (integración)
    • ramas individuales
  • Flujo de trabajo: ramas individuales → dev → main

No se permite subir todo el proyecto el último día.


Comunicación del equipo (Mattermost)

Las comunicaciones del grupo se realizarán a través de Mattermost, usando el canal asignado.

Se utilizará para:

  • Plantear dudas
  • Comunicar problemas técnicos
  • Coordinar tareas
  • Solicitar ayuda al profesor

Normas:

  • Explicar el problema con claridad
  • Indicar qué se está intentando hacer
  • Indicar qué error aparece
  • Indicar qué se ha probado

No se aceptan mensajes como:

  • "no funciona"
  • "hay un error"

4. Desarrollo de memoria y registro de sesiones

Los equipos disponen en el apartado de Cloud, un documento compartido con la estructura de la memoria, la cual se tendrá que ir adaptando y completando de forma diaría.

Cada grupo debe registrar todas las sesiones de trabajo en la memoria del proyecto.

En cada sesión se debe incluir:

  • Trabajo realizado (con detalle técnico).
  • Problemas encontrados.
  • Soluciones aplicadas.
  • Estado del proyecto.
  • Próximos pasos.
  • Reparto de tareas.
  • Captura del tablero de Planka.

No se aceptarán descripciones genéricas como: “hemos avanzado” o “todo funciona”.


5. Normas generales

  • El proyecto debe desarrollarse de forma progresiva.
  • No se permite realizar todo el trabajo al final.
  • Se evaluará el proceso, no solo el resultado final.
  • El uso de Docker, Git y Planka es obligatorio.
  • La memoria debe reflejar el trabajo real del grupo.