Un entorno para el desarrollo de soluciones web modulares, extensibles y configurables.
Find a file
2024-12-07 07:37:52 +01:00
config 🎨 Cambia "Temas" (themes) por "Diseños" (layouts) 2024-12-04 20:24:54 +01:00
drust 📝 Revisión de la documentación en español 2024-12-06 22:24:09 +01:00
helpers 🔖 [macros] Libera versión de desarrollo 0.0.15 2024-12-07 07:37:06 +01:00
packages/pagetop-seaorm 📝 Revisión de la documentación en español 2024-12-06 22:24:09 +01:00
pagetop 🔖 [pagetop] Libera versión de desarrollo 0.0.58 2024-12-07 07:37:52 +01:00
static 💄 El "banner" de PageTop en español 2024-12-04 12:10:54 +01:00
tests ✅ Incorpora y revisa código para pruebas unitarias 2024-12-05 14:32:10 +01:00
tools 🚸 Mejora la publicación de "crates" en crates.io 2024-12-06 20:58:38 +01:00
.gitignore 🔨 [drust] Añade scripts para base de datos 2024-12-05 20:21:57 +01:00
Cargo.lock ✨ [seaorm] Añade soporte a SeaORM en PageTop 2024-12-06 05:45:37 +01:00
Cargo.toml ✨ [seaorm] Añade soporte a SeaORM en PageTop 2024-12-06 05:45:37 +01:00
CREDITS.md 📝 Revisión de la documentación en español 2024-12-06 22:24:09 +01:00
LICENSE-APACHE 📄 Añade las licencias del proyecto 2024-12-02 12:36:56 +01:00
LICENSE-MIT 📄 Añade las licencias del proyecto 2024-12-02 12:36:56 +01:00
README.md 📝 Revisión de la documentación en español 2024-12-06 22:24:09 +01:00

PageTop

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

Licencia Doc API Crates.io Descargas

PageTop reivindica la sencillez de la web clásica utilizando SSR (renderizado en el servidor), HTML, CSS y JavaScript. Proporciona un conjunto completo de funcionalidades que pueden extenderse y adaptarse a las necesidades de cada solución web implementando:

  • Acciones (actions). Las funcionalidades que incorporen acciones en su lógica de programa estarán proporcionando a los desarrolladores herramientas para alterar su comportamiento interno interceptando su flujo de ejecución.
  • Componentes (components). Para encapsular HTML, CSS y JavaScript en unidades funcionales, configurables y bien definidas.
  • Diseños (layouts). Permiten a los desarrolladores modificar la apariencia de páginas y componentes sin afectar a su funcionalidad.
  • Paquetes (packages). Extienden o personalizan funcionalidades existentes interactuando con las APIs de PageTop o de paquetes de terceros.

⚡️ Inicio rápido

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
}

Proporciona una página de bienvenida en http://localhost:8088 según la configuración predefinida. Para personalizar el servicio puedes crear un paquete de PageTop:

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 prepara un paquete personalizado llamado HelloWorld que sirve una página web en la ruta raíz (/) mostrando el mensaje "Hello world!" en un elemento HTML <h1>.

📂 Estructura del código

El repositorio 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, patrones de desarrollo y buenas prácticas para la creación avanzada de soluciones web SSR (Server-Side Rendering).

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

Aplicación

  • 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.

🚧 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.