//!
//!

//!
//!
PageTop
//!
//!
Un entorno de desarrollo para crear soluciones web modulares, extensibles y configurables.
//!
//! [](#-licencia)
//! [](https://docs.rs/pagetop)
//! [](https://crates.io/crates/pagetop)
//! [](https://crates.io/crates/pagetop)
//!
//!
//!
//!
//! `PageTop` reivindica la esencia de la web clásica usando [Rust](https://www.rust-lang.org/es)
//! 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.
//! * **Extensiones** (*extensions*): añaden, extienden o personalizan funcionalidades usando las
//! APIs de `PageTop` o de terceros.
//! * **Temas** (*themes*): son extensiones que 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í:
//!
//! ```rust,no_run
//! use pagetop::prelude::*;
//!
//! #[pagetop::main]
//! async fn main() -> std::io::Result<()> {
//! Application::new().run()?.await
//! }
//! ```
//!
//! Este código arranca el servidor de `PageTop`. Con la
//! [configuración por defecto](crate::global::SETTINGS), muestra una página de bienvenida accesible
//! desde un navegador local en la dirección `http://localhost:8080`.
//!
//! Para personalizar el servicio, se puede crear una extensión de `PageTop` de la siguiente manera:
//!
//! ```rust,no_run
//! use pagetop::prelude::*;
//!
//! struct HelloWorld;
//!
//! impl Extension 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