Todos los casos

Software empresarial y arquitectura web

Desarrollo de plataforma web para la Municipalidad Provincial de Arequipa

EstudioPHP fue contratado por Vitem Consultores, proveedor del proyecto para la Municipalidad Provincial de Arequipa, para desarrollar una plataforma web institucional y de servicios municipales con arquitectura desacoplada.

Contexto del proyecto

La Municipalidad Provincial de Arequipa tenía un proyecto web y Vitem Consultores participaba como proveedor de la Municipalidad para ese proyecto. Vitem Consultores contrató directamente a EstudioPHP para desarrollar la solución tecnológica.

La participación de EstudioPHP se dio, por tanto, a través de Vitem Consultores y no mediante una contratación directa de la Municipalidad Provincial de Arequipa.

Alcance general de la plataforma

El proyecto no consistía en una web estática. Se construyó una plataforma para publicar contenido, administrar información por áreas y ofrecer consulta pública de información institucional y servicios municipales.

  • Noticias, cultura y turismo.
  • Normas municipales y sesiones de concejo.
  • Agenda de Alcaldía y agenda de Gerencia Municipal.
  • Información de trámites TUPA y libro de reclamaciones.
  • Usuarios, roles, permisos y registros de actividad.
  • Documentos PDF, imágenes y calendarios.

Arquitectura web desacoplada

La solución se organizó en cuatro aplicaciones relacionadas: un backend Symfony, un panel administrativo Nuxt/Vue, un portal público Nuxt/Vue y una aplicación Vue independiente para el calendario.

La separación permitió mantener la lógica de negocio, la persistencia y las validaciones en el backend, mientras el portal público y el panel administrativo consumían la API REST según sus responsabilidades.

Backend y API REST

Christian Paredes desarrolló el backend con PHP, Symfony 5.1, Doctrine ORM y MySQL/MariaDB. La API principal se implementó principalmente mediante controladores Symfony y respuestas JSON.

El backend concentraba autenticación, roles, permisos, persistencia y validaciones, además de la gestión de contenidos, documentos e integración con servicios vinculados al proyecto.

Panel administrativo

El panel administrativo se desarrolló con Nuxt 2, Vue.js 2 y Vuetify. Permitía gestionar los distintos módulos de la plataforma según los roles y permisos asignados a cada área.

  • Noticias, cultura y turismo.
  • Normas municipales y sesiones de concejo.
  • Agendas institucionales.
  • Usuarios, roles y permisos.
  • Documentos, imágenes y registros de actividad.

Portal público

El portal público fue construido con Nuxt 2, Vue.js 2, Vuetify y TailwindCSS. Consumía la API para presentar la información institucional y los servicios municipales administrados desde el panel.

Esta separación evitaba incorporar la administración dentro del portal público y permitía que cada interfaz atendiera una responsabilidad distinta.

Normas, sesiones y gestión documental

La plataforma contemplaba la administración y consulta de ordenanzas, acuerdos, decretos y resoluciones, junto con documentos PDF e imágenes asociados a los contenidos.

También incluía información de sesiones de concejo y los recursos documentales necesarios para su publicación.

Agendas y calendario

El sistema mantenía agendas separadas para Alcaldía y Gerencia Municipal. Además, se desarrolló una aplicación Vue independiente destinada a la visualización del calendario.

Integración para consulta TUPA

El backend integraba la consulta de información TUPA mediante un servicio existente en la infraestructura del proyecto. Los detalles internos de esa integración no se publican por seguridad y privacidad.

Autenticación, roles y permisos

La autenticación se implementó mediante JWT. El sistema contemplaba roles por área, permisos de actualización y eliminación, y validaciones aplicadas también en el backend.

Esta descripción corresponde al trabajo implementado y no constituye una auditoría de seguridad actual ni una afirmación sobre su operación en producción.

Participación de EstudioPHP

EstudioPHP fue contratado por Vitem Consultores para el desarrollo tecnológico del proyecto. Christian Paredes estuvo a cargo del backend, mientras que el frontend fue desarrollado por otro integrante del equipo EstudioPHP.

Estado final del proyecto

La plataforma fue desarrollada y desplegada en la infraestructura destinada al proyecto. Posteriormente se planteó la puesta en producción definitiva, pero esa etapa no llegó a completarse. Como consecuencia, el sistema no entró en operación ni llegó a utilizarse en producción.

Por este motivo, el proyecto se presenta como una experiencia de desarrollo y arquitectura de software, sin atribuir resultados de uso, adopción o impacto institucional.

Aprendizaje profesional

La experiencia reforzó la importancia de definir desde el inicio no solo la arquitectura y el desarrollo, sino también las responsabilidades de despliegue, transferencia técnica, documentación, mantenimiento y operación posterior.

Arquitectura de la solución

Componentes separados, conectados mediante la API.

Portal público Nuxt / Vue
API REST Symfony
Panel administrativo Nuxt / Vue

Portal público

Consultaba la API para presentar información institucional y servicios municipales.

API REST

Centralizaba lógica de negocio, persistencia, autenticación, permisos, validaciones e integraciones.

Panel administrativo

Consumía la API para gestionar contenidos, documentos, usuarios y agendas.

La solución incluía además una aplicación Vue independiente para visualizar el calendario.

Trabajo realizado y estado

01

Arquitectura

Separación entre backend, portal público, panel administrativo y calendario.

02

Backend

Desarrollo de API, persistencia, autenticación, permisos, contenidos e integraciones.

03

Frontend

Desarrollo del portal y panel por otro integrante del equipo EstudioPHP.

04

Despliegue

Instalación de la solución en la infraestructura destinada al proyecto.

05

Estado final

La puesta en producción definitiva no se completó y el sistema no entró en operación.

Tecnologías y conocimientos

Backend

PHPSymfony 5.1Doctrine ORMAPI RESTJWTMySQL/MariaDB

Frontend

Vue.js 2Nuxt 2VuetifyTailwindCSS

Capacidades

Roles y permisosDocumentos PDFImágenesCalendariosGestión de contenidoIntegración TUPA

Siguiente paso

¿Necesitas desarrollar o modernizar un sistema web?

Conversemos sobre software empresarial, APIs, integraciones o la modernización de una plataforma existente.