Cityoncontact: aplicación web para la comunicación ciudadana
Fecha
2020Resumen
La idea en la que se basa la aplicación desarrollada en este trabajo es la
de mejorar las comunicaciones entre los organismos gubernamentales a nivel
local y la ciudadanía, ofreciendo información relevante que afecte directamente
a ambas partes de forma bidireccional.
Para ello se divide en un apartado Avisos, donde el ayuntamiento se encarga
de aportar información al ciudadano recogida en distintas categorías (Eventos,
Información, Avisos y Emergencias); y un apartado Comunica, donde son los ciudadanos quienes informan sobre el estado de la localidad en forma de Incidencias y Sugerencias.
Dado que se ha dispuesto de un tiempo limitado para desarrollar una aplicación completa, especialmente teniendo en cuenta la inexperiencia del alumno,
este trabajo se ha planteado como un pet project en el que se prima el ejercitar
el uso de buenas prácticas en el desarrollo software sobre la implementación
rápida y descuidada de todas las funcionalidades.
La aplicación está basada en el stack MEVN (MongoDB - Express - Vue.js -
Node). En lugar de usar una instancia local de MongoDB como base de datos,
se ha optado por usar Atlas, su equivalente en la nube, por la flexibilidad que
supone. El back end se ha estructurado con una arquitectura básica de tres
capas sobre un servidor Express, y se ha hecho uso del framework Quasar para
el desarrollo del front end, que provee la estructura básica para implementar
una Single Page Application (SPA) basada en Vue.js y facilita el prototipado de
la interfaz de usuario con su propia librería de componentes.
Se ha tratado de respetar en la medida de lo posible el ciclo de Desarrollo
Guiado por Pruebas (TDD - Test-Driven Development), así como la aplicación de
principios y patrones de diseño para un código limpio que resulte mantenible e
intuitivo, destacando la refactorización constante del código. The idea on which the application developed for this project is based is to improve communications between local government entities and citizens, offering
relevant information that directly affects both sides in a bidirectional way.
To achieve this, the application is divided into a Notices section, where the city
council is responsible for providing information to the citizen collected in different
categories (Events, Information, Notices and Emergencies); and a Communicate
section, where it is the citizens who report on the state of the town in form of
Incidents and Suggestions.
Given that time has not been enough to develop a complete application,
especially taking into account the inexperience of the student, this project has
been considered a pet project where the use of good practices in software development is more important than a fast and careless implementation of all
features.
The application is based on the MEVN Stack (MongoDB - Express - Vue.js
- Node). Instead of using a local instance of MongoDB as the database, Atlas,
its cloud equivalent, has been used due to the flexibility it offers. The back end
has been structured with a basic three-layer architecture on an Express server,
and the Quasar framework has been used for the development of the front end,
which provides the basic structure to implement a Single Page Application (SPA)
based on Vue.js and makes it easy to prototype the user interface with its own
component library.
The Test-Driven Development (TDD) cycle has been applied as much as possible, as well as the application of design principles and patterns for a clean code
that is maintainable and intuitive, with a continuous refactoring of the code.