#web-framework #ssr #front-end #frontend-framework #html-css #framework #web

pagetop

Un entorno de desarrollo para crear soluciones web modulares, extensibles y configurables

33 releases

new 0.0.60 Jan 6, 2025
0.0.59 Dec 22, 2024
0.0.55 Jul 28, 2024
0.0.53 Mar 28, 2024
0.0.32 Nov 12, 2022

#225 in Web programming

Download history 42/week @ 2024-09-11 46/week @ 2024-09-18 34/week @ 2024-09-25 16/week @ 2024-10-02 8/week @ 2024-10-09 14/week @ 2024-10-16 16/week @ 2024-10-23 13/week @ 2024-10-30 10/week @ 2024-11-06 4/week @ 2024-11-13 14/week @ 2024-11-20 188/week @ 2024-11-27 604/week @ 2024-12-04 382/week @ 2024-12-11 154/week @ 2024-12-18 23/week @ 2024-12-25

1,206 downloads per month
Used in 13 crates

MIT/Apache

225KB
5K SLoC

PageTop

Un entorno de desarrollo para crear soluciones web modulares, extensibles y configurables.

Licencia Doc API Crates.io Descargas

PageTop reivindica la esencia de la web clásica usando Rust para la creación de soluciones web SSR (renderizadas en el servidor) basadas en HTML, CSS y JavaScript. Ofrece un conjunto de herramientas que los desarrolladores pueden implementar, extender o adaptar según las necesidades de cada proyecto, incluyendo:

  • Acciones (actions): alteran la lógica interna de una funcionalidad interceptando su flujo de ejecución.
  • Componentes (components): encapsulan HTML, CSS y JavaScript en unidades funcionales, configurables y reutilizables.
  • Paquetes (packages): añaden, extienden o personalizan funcionalidades usando las APIs de PageTop o de terceros.
  • Temas (themes): permiten modificar la apariencia de páginas y componentes sin comprometer su funcionalidad.

⚡️ Guía rápida

La aplicación más sencilla de PageTop se ve así:

use pagetop::prelude::*;

#[pagetop::main]
async fn main() -> std::io::Result<()> {
    Application::new().run()?.await
}

Por defecto, este código sirve una página web de bienvenida accesible desde un navegador en la dirección http://localhost:8088, siguiendo la configuración predeterminada.

Para personalizar el servicio, puedes crear un paquete de PageTop de la siguiente manera:

use pagetop::prelude::*;

struct HelloWorld;

impl PackageTrait for HelloWorld {
    fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
        scfg.route("/", service::web::get().to(hello_world));
    }
}

async fn hello_world(request: HttpRequest) -> ResultPage<Markup, ErrorPage> {
    Page::new(request)
        .with_component(Html::with(html! { h1 { "Hello world!" } }))
        .render()
}

#[pagetop::main]
async fn main() -> std::io::Result<()> {
    Application::prepare(&HelloWorld).run()?.await
}

Este programa implementa un paquete llamado HelloWorld que sirve una página web en la ruta raíz (/) mostrando el texto "Hello world!" dentro de un elemento HTML <h1>.

📂 Repositorio

El código se organiza en un workspace con los siguientes subproyectos:

  • pagetop, es la librería principal. Reúne algunos de los crates más estables y populares del ecosistema Rust para proporcionar APIs y recursos para la creación avanzada de soluciones web.

Auxiliares

  • pagetop-build, permite incluir fácilmente archivos estáticos o archivos SCSS compilados directamente en el binario de las aplicaciones PageTop.

  • pagetop-macros, proporciona una colección de macros que mejoran la experiencia de desarrollo con PageTop.

Paquetes

Temas

Aplicaciones

  • drust, es una aplicación que utiliza PageTop para crear un Sistema de Gestión de Contenidos (CMS) que permita construir sitios web dinámicos, administrados y configurables.

  • website, es la aplicación web creada con el propio entorno PageTop para descubrir a la comunidad su ecosistema en pagetop.cillero.es.

🚧 Advertencia

PageTop es un proyecto personal que hago por diversión para aprender cosas nuevas. Su API es inestable y está sujeta a cambios frecuentes. No recomiendo su uso en producción, al menos mientras no se libere una versión 1.0.0.

📜 Licencia

El código está disponible bajo una doble licencia:

Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en el ecosistema Rust.

✨ Contribuciones

Cualquier contribución para añadir al proyecto se considerará automáticamente bajo la doble licencia indicada arriba (MIT o Apache v2.0), sin términos o condiciones adicionales, tal y como permite la licencia Apache v2.0.

Dependencies

~28–41MB
~724K SLoC