Este proyecto tiene como objetivo diseñar y desarrollar una aplicación web para la planificación y el seguimiento de metas personales y colaborativas. La idea surge de la dificultad que encuentran muchas personas a la hora de organizar sus objetivos a medio y largo plazo, dividirlos en tareas alcanzables y mantener un registro claro y actualizado de su progreso. En la práctica, esta gestión suele repartirse entre diferentes herramientas (hojas de cálculo, aplicaciones de notas, recordatorios del móvil), lo que dificulta tener una visión general y coordinarse cuando las metas se comparten con otras personas. La aplicación propuesta centraliza esta información y ofrece una interfaz sencilla que permite crear metas, asociarles fechas límite y unidades de medida, registrar aportaciones o tareas, y visualizar de forma clara el progreso real.
La solución se ha implementado como una aplicación web basada en tecnologías muy utilizadas en el desarrollo software. El back-end se ha desarrollado en PHP, estructurando la lógica de negocio en distintos módulos responsables de la gestión de usuarios, metas y colaboraciones. La interfaz de usuario se ha construido con HTML5, CSS3 y JavaScript, priorizando un diseño limpio, coherente y adaptable a diferentes tamaños de pantalla. Para la persistencia de datos se ha utilizado una base de datos relacional MySQL, en la que se modelan entidades como usuarios, metas individuales y colaborativas, tareas, registros de progreso y relaciones de participación entre usuarios. Se han incorporado medidas básicas de seguridad, como la gestión de sesiones y el uso de tokens CSRF en los formularios, con el fin de mitigar ataques comunes en aplicaciones web.
El sistema contempla principalmente dos tipos de interacción: la gestión de metas personales y la colaboración en metas compartidas. Cada usuario puede registrarse e iniciar sesión, crear nuevas metas definiendo un título, una descripción, una fecha de vencimiento y una unidad de medida (por ejemplo, horas, entregas o porcentajes), actualizar su progreso de manera incremental, marcar metas como completadas y consultar su historial. Tanto en metas individuales como colaborativas, es posible trabajar con dos tipos de metas: metas numéricas, orientadas a alcanzar un objetivo cuantitativo mediante la suma o resta de aportaciones (por ejemplo, llegar a cierto número de horas de estudio), y metas de tareas, basadas en completar una lista de tareas parciales que contribuyen al objetivo global. En el caso de las metas colaborativas, el usuario propietario puede invitar a otros participantes, que pueden registrar sus propias aportaciones numéricas, asignarles tareas y marcar estas como completadas. La vista detallada de cada meta muestra la suma de las contribuciones, el porcentaje total de avance calculado en función del objetivo numérico o del número de tareas completadas y un histórico de actualizaciones, lo que facilita la transparencia y el reparto de responsabilidades. Además, la página principal ofrece un panel de resumen con las metas próximas a vencer y aquellas aún no completadas, ayudando al usuario a priorizar en qué trabajar.
El desarrollo del proyecto se ha realizado siguiendo un enfoque iterativo e incremental, incorporando y refinando funcionalidades a medida que se iban validando los requisitos. Se ha utilizado un sistema de control de versiones basado en Git para gestionar el código fuente y registrar la evolución de la aplicación. A lo largo del proceso se han definido y ejecutado pruebas sobre los flujos más críticos como registro y autenticación, creación y edición de metas, registro de progreso y gestión de colaboraciones, corrigiendo errores y ajustando el diseño de la base de datos y de la interfaz cuando ha sido necesario. Por el momento, la aplicación se ha desplegado y probado en un entorno local de desarrollo, lo que ha facilitado la verificación de la lógica implementada.
Entre las posibles mejoras futuras se encuentran la incorporación de recordatorios automáticos, la integración con calendarios externos para reflejar las fechas límite de las metas, la ampliación del módulo de estadísticas mediante gráficos de evolución del progreso y la introducción de mecanismos que fomenten la motivación del usuario. También se plantea el despliegue de la aplicación en un servidor accesible desde internet, configurando un servidor web, habilitando el acceso remoto a la base de datos y reforzando la seguridad mediante HTTPS. A medio plazo, sería interesante desarrollar una aplicación móvil que reutilice la lógica del sistema y mejore la accesibilidad en el uso diario. En conjunto, la aplicación desarrollada cumple los objetivos planteados para este Trabajo de Fin de Grado en Ingeniería del Software, proporcionando una herramienta funcional para la gestión estructurada de metas personales y colaborativas y una base sólida sobre la que seguir evolucionando el proyecto.
Abstract:
This project aims to design and develop a web application for planning and tracking personal and collaborative goals. The idea comes from the difficulty many people have when trying to organise their medium- and long-term objectives, break them down into achievable tasks, and keep a clear and up-to-date record of their progress. In practice, this management is usually spread across several generic tools (spreadsheets, notes applications, mobile reminders), which makes it hard to have an overall view and to coordinate when goals are shared with other people. The proposed application puts all this information in one place and offers a simple interface that allows users to create goals, set deadlines and units of measure, register contributions or tasks, and clearly see the level of completion.
The solution has been implemented as a web application using technologies that are widely used in software development. The back-end has been developed in PHP, structuring the business logic into different modules responsible for managing users, goals and collaborations. The user interface has been built with HTML5, CSS3 and JavaScript, with a focus on a clean and consistent design that adapts to different screen sizes. For data storage, a MySQL relational database has been used, modelling entities such as users, individual and collaborative goals, tasks, progress records and participation relationships between users. Basic security measures have been included, such as session management and the use of CSRF tokens in forms, in order to reduce the risk of common attacks on web applications.
The system offers two main types of interaction: management of personal goals and collaboration on shared goals. Each user can register and log in, create new goals by defining a title, description, due date and unit of measure (for example hours, deliveries or percentages), update their progress step by step, mark goals as completed and review their history. In both individual and collaborative goals, it is possible to work with two types of goals: numeric goals, focused on reaching a quantitative objective through the sum or subtraction of contributions (for example, reaching a certain number of study hours), and task-based goals, where the objective is to complete a list of partial tasks that contribute to the global goal. In collaborative goals, the owner of the goal can invite other participants, who can register their own numeric contributions, assign tasks to themselves or to others, and mark these tasks as completed. The detailed view of each goal shows the total of all contributions, the overall progress percentage (calculated either from the numeric target or from the number of completed tasks) and a history of updates. This improves transparency and helps to share responsibilities. In addition, the main page offers a summary panel with goals that are close to their deadline and goals that are still incomplete, helping users decide what to work on first.
The development of the project has followed an iterative and incremental approach, adding and refining features as the requirements were validated. A Git-based version control system has been used to manage the source code and record the evolution of the application. During the process, tests have been designed and executed for the most critical flows, such as registration and authentication, creation and editing of goals, recording progress and managing collaborations. When problems appeared, they were fixed and the database design and user interface were adjusted when necessary. For now, the application has been deployed and tested in a local development environment, which has made it easier to verify that the implemented logic works correctly.
Possible future improvements include adding automatic reminders (for example, via email or notifications), integrating with external calendars to show goal deadlines, extending the statistics module with charts showing progress over time, and adding mechanisms to increase user motivation. Another planned step is to deploy the application on a server accessible from the internet, configuring a web server (such as Apache or Nginx), enabling remote access to the database and strengthening security with HTTPS. In the medium term, it would also be interesting to develop a mobile application that reuses the system’s logic and improves accessibility for daily use. Overall, the developed application meets the objectives defined for this Final Degree Project in Software Engineering. It provides a functional tool for structured management of personal and collaborative goals and a solid foundation for future evolution of the project.
Este proyecto tiene como objetivo diseñar y desarrollar una aplicación web para la planificación y el seguimiento de metas personales y colaborativas. La idea surge de la dificultad que encuentran muchas personas a la hora de organizar sus objetivos a medio y largo plazo, dividirlos en tareas alcanzables y mantener un registro claro y actualizado de su progreso. En la práctica, esta gestión suele repartirse entre diferentes herramientas (hojas de cálculo, aplicaciones de notas, recordatorios del móvil), lo que dificulta tener una visión general y coordinarse cuando las metas se comparten con otras personas. La aplicación propuesta centraliza esta información y ofrece una interfaz sencilla que permite crear metas, asociarles fechas límite y unidades de medida, registrar aportaciones o tareas, y visualizar de forma clara el progreso real.
La solución se ha implementado como una aplicación web basada en tecnologías muy utilizadas en el desarrollo software. El back-end se ha desarrollado en PHP, estructurando la lógica de negocio en distintos módulos responsables de la gestión de usuarios, metas y colaboraciones. La interfaz de usuario se ha construido con HTML5, CSS3 y JavaScript, priorizando un diseño limpio, coherente y adaptable a diferentes tamaños de pantalla. Para la persistencia de datos se ha utilizado una base de datos relacional MySQL, en la que se modelan entidades como usuarios, metas individuales y colaborativas, tareas, registros de progreso y relaciones de participación entre usuarios. Se han incorporado medidas básicas de seguridad, como la gestión de sesiones y el uso de tokens CSRF en los formularios, con el fin de mitigar ataques comunes en aplicaciones web.
El sistema contempla principalmente dos tipos de interacción: la gestión de metas personales y la colaboración en metas compartidas. Cada usuario puede registrarse e iniciar sesión, crear nuevas metas definiendo un título, una descripción, una fecha de vencimiento y una unidad de medida (por ejemplo, horas, entregas o porcentajes), actualizar su progreso de manera incremental, marcar metas como completadas y consultar su historial. Tanto en metas individuales como colaborativas, es posible trabajar con dos tipos de metas: metas numéricas, orientadas a alcanzar un objetivo cuantitativo mediante la suma o resta de aportaciones (por ejemplo, llegar a cierto número de horas de estudio), y metas de tareas, basadas en completar una lista de tareas parciales que contribuyen al objetivo global. En el caso de las metas colaborativas, el usuario propietario puede invitar a otros participantes, que pueden registrar sus propias aportaciones numéricas, asignarles tareas y marcar estas como completadas. La vista detallada de cada meta muestra la suma de las contribuciones, el porcentaje total de avance calculado en función del objetivo numérico o del número de tareas completadas y un histórico de actualizaciones, lo que facilita la transparencia y el reparto de responsabilidades. Además, la página principal ofrece un panel de resumen con las metas próximas a vencer y aquellas aún no completadas, ayudando al usuario a priorizar en qué trabajar.
El desarrollo del proyecto se ha realizado siguiendo un enfoque iterativo e incremental, incorporando y refinando funcionalidades a medida que se iban validando los requisitos. Se ha utilizado un sistema de control de versiones basado en Git para gestionar el código fuente y registrar la evolución de la aplicación. A lo largo del proceso se han definido y ejecutado pruebas sobre los flujos más críticos como registro y autenticación, creación y edición de metas, registro de progreso y gestión de colaboraciones, corrigiendo errores y ajustando el diseño de la base de datos y de la interfaz cuando ha sido necesario. Por el momento, la aplicación se ha desplegado y probado en un entorno local de desarrollo, lo que ha facilitado la verificación de la lógica implementada.
Entre las posibles mejoras futuras se encuentran la incorporación de recordatorios automáticos, la integración con calendarios externos para reflejar las fechas límite de las metas, la ampliación del módulo de estadísticas mediante gráficos de evolución del progreso y la introducción de mecanismos que fomenten la motivación del usuario. También se plantea el despliegue de la aplicación en un servidor accesible desde internet, configurando un servidor web, habilitando el acceso remoto a la base de datos y reforzando la seguridad mediante HTTPS. A medio plazo, sería interesante desarrollar una aplicación móvil que reutilice la lógica del sistema y mejore la accesibilidad en el uso diario. En conjunto, la aplicación desarrollada cumple los objetivos planteados para este Trabajo de Fin de Grado en Ingeniería del Software, proporcionando una herramienta funcional para la gestión estructurada de metas personales y colaborativas y una base sólida sobre la que seguir evolucionando el proyecto.
Abstract:
This project aims to design and develop a web application for planning and tracking personal and collaborative goals. The idea comes from the difficulty many people have when trying to organise their medium- and long-term objectives, break them down into achievable tasks, and keep a clear and up-to-date record of their progress. In practice, this management is usually spread across several generic tools (spreadsheets, notes applications, mobile reminders), which makes it hard to have an overall view and to coordinate when goals are shared with other people. The proposed application puts all this information in one place and offers a simple interface that allows users to create goals, set deadlines and units of measure, register contributions or tasks, and clearly see the level of completion.
The solution has been implemented as a web application using technologies that are widely used in software development. The back-end has been developed in PHP, structuring the business logic into different modules responsible for managing users, goals and collaborations. The user interface has been built with HTML5, CSS3 and JavaScript, with a focus on a clean and consistent design that adapts to different screen sizes. For data storage, a MySQL relational database has been used, modelling entities such as users, individual and collaborative goals, tasks, progress records and participation relationships between users. Basic security measures have been included, such as session management and the use of CSRF tokens in forms, in order to reduce the risk of common attacks on web applications.
The system offers two main types of interaction: management of personal goals and collaboration on shared goals. Each user can register and log in, create new goals by defining a title, description, due date and unit of measure (for example hours, deliveries or percentages), update their progress step by step, mark goals as completed and review their history. In both individual and collaborative goals, it is possible to work with two types of goals: numeric goals, focused on reaching a quantitative objective through the sum or subtraction of contributions (for example, reaching a certain number of study hours), and task-based goals, where the objective is to complete a list of partial tasks that contribute to the global goal. In collaborative goals, the owner of the goal can invite other participants, who can register their own numeric contributions, assign tasks to themselves or to others, and mark these tasks as completed. The detailed view of each goal shows the total of all contributions, the overall progress percentage (calculated either from the numeric target or from the number of completed tasks) and a history of updates. This improves transparency and helps to share responsibilities. In addition, the main page offers a summary panel with goals that are close to their deadline and goals that are still incomplete, helping users decide what to work on first.
The development of the project has followed an iterative and incremental approach, adding and refining features as the requirements were validated. A Git-based version control system has been used to manage the source code and record the evolution of the application. During the process, tests have been designed and executed for the most critical flows, such as registration and authentication, creation and editing of goals, recording progress and managing collaborations. When problems appeared, they were fixed and the database design and user interface were adjusted when necessary. For now, the application has been deployed and tested in a local development environment, which has made it easier to verify that the implemented logic works correctly.
Possible future improvements include adding automatic reminders (for example, via email or notifications), integrating with external calendars to show goal deadlines, extending the statistics module with charts showing progress over time, and adding mechanisms to increase user motivation. Another planned step is to deploy the application on a server accessible from the internet, configuring a web server (such as Apache or Nginx), enabling remote access to the database and strengthening security with HTTPS. In the medium term, it would also be interesting to develop a mobile application that reuses the system’s logic and improves accessibility for daily use. Overall, the developed application meets the objectives defined for this Final Degree Project in Software Engineering. It provides a functional tool for structured management of personal and collaborative goals and a solid foundation for future evolution of the project. Read More


