Proyecto

General

Perfil

Objetivos y alcance del proyecto

Proyecto PageTop
Descripción Entorno para el desarrollo de soluciones web usando Rust. También CMS.
Desarrollo PageTop (desarrollo) versión pagetop-dev:version#21
Plazos vigentes FECHA INICIO - FECHA FINALIZACIÓN
Fecha edición 16/04/2024

Documentos

Antecedentes y motivación

¿Cuáles son los antecedentes y la historia detrás de este proyecto?

El lenguaje de programación Rust es una tecnología consolidada que empresas y organizaciones ya están usando para el desarrollo de software con garantías de rendimiento y seguridad. Rust no es obvio, pero está extensa y cuidadosamente documentado. Y su ecosistema ha crecido enormemente. Muchas de las librerías (crates) creadas por la comunidad son de gran valor añadido con funcionalidades de alto nivel en muchos ámbitos, entre ellos el desarrollo de soluciones web.

¿Cuál es el problema que aborda?

El de intentar integrar en un único entorno algunos de los paquetes más estables y populares del ecosistema Rust para el desarrollo modular, extensible y configurable de soluciones web.

Y aprovechar ese mismo entorno para proporcionar un CMS con funcionalidades que no requieran programación, sino configuración y personalización.

¿Cuáles son los enfoques actuales a este problema?

Ya hay importantes frameworks creados con Rust, muchos usan Rust con WebAssembly como Yew, Seed o MoonZoon. Pero una solución que funcione como producto, con funcionalidades predefinidas y módulos personalizables parece que aún no está abiertamente desarrollada.

¿Por qué vale la pena resolver este problema o resolverlo mejor?

La finalidad autodidacta para aprender Rust es estimulante en sí misma. El deseo de crear un producto nuevo, vivo y abierto también lo es.

¿Cómo será este producto mejor que los enfoques anteriores?

Como framework, deberá proporcionar patrones sencillos de desarrollo basados en APIs fáciles de aprender y aplicar, para la creación rápida de módulos autónomos o dependientes de otros, que incluyan:

  • soporte a la internacionalización,
  • gestión de rutas y menús,
  • uso y construcción de componentes gráficos,
  • gestión de las tablas requeridas en la base de datos y control de sus versiones,
  • autenticación y perfiles de acceso,
  • etc...

Como producto final, PageTop proporcionará un CMS con documentación exhaustiva que ayude realmente al usuario a configurar su entorno más allá del funcionamiento predefinido.

¿Dónde hay más información sobre este problema?

Los siguientes enlaces proporcionan información de interés:

Objetivos del proyecto

¿Cuáles son los objetivos de este proyecto?

  • Integrar los paquetes requeridos más estables y populares (ver Are we web yet?) en el núcleo de PageTop para que funcionen como una unidad.
  • Definir los patrones de desarrollo básicos para crear módulos funcionales según una "especificación PageTop" a diseñar.
  • Desarrollar los módulos necesarios para que PageTop pueda funcionar como CMS con las características mínimas habituales en este tipo de portales web.

¿Cuáles son las características generales y los beneficios de este producto?

  • Incluirá un servidor web de alto rendimiento.
  • Distringuirá los diferentes entornos de ejecución mediante archivo(s) de configuración.
  • Proporcionará soporte para la internacionalización de las aplicaciones.
  • Incluirá gestión de usuarios, persistencia de sesiones, roles y perfiles de acceso.
  • Proporcionará una API basada en componentes para la presentación, ya sean páginas estáticas o aplicaciones web interactivas:
    • Con capacidad para obviar en general el uso de HTML, CSS y JavaScript, y programar sólo en Rust.
    • Con abstracción de componentes renderizados en el servidor (plantillas) o en el cliente (JavaScript frameworks, WebAssembly).
    • Independizando la presentación del contenido mediante la gestión de temas.
    • Integrando funcionalidades específicas para entornos como NW.js.
  • Facilitará la interacción con una o más bases de datos.
  • Gestionará los logs según niveles de información.
  • Minimizará la programación maximizando el comportamiento por defecto.

¿Otros documentos que expliquen con más detalle el objetivo de este proyecto?

  • ...

Alcance del proyecto

 

Ver el diagrama de contexto.

  • Operará con servidores y navegadores comunes con los que ya estamos familiarizados.
  • Permitirá una fácil personalización de fuentes y colores, para el mismo diseño de página.
  • Ofrecerá suficiente seguridad para evitar y desalentar el abuso.
En el alcance Fuera del alcance

Sólo para plataformas soportadas por la compilación de Rust y cumplan los requisitos de los paquetes incluídos.

Programar un nuevo servidor web o de aplicaciones.

Que funcione en los navegadores más populares (Chrome, IE, Edge, Firefox).

Trabajar con navegadores poco comunes o con versiones antiguas.

Seguridad con cuentas de usuario, contraseñas y permisos.

Seguridad especial contra hackers. Autenticación por doble o muti-factor. Relegado a módulos externos.

Un único tema disponible con flexibilidad para la personalización.

Mantener más de un tema. La creación de temas será un asunto relegado a la comunidad.

Un volumen de datos que pueda ser gestionado por un único servidor.

Gestionar un cluster de servidores, balanceo de carga o escalabilidad.

bloqueado