| config | ||
| drust | ||
| helpers | ||
| packages | ||
| pagetop | ||
| static | ||
| tests | ||
| tools | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CREDITS.md | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| README.md | ||
Overview
The PageTop core API provides a comprehensive toolkit for extending its functionalities to specific requirements and application scenarios through actions, components, packages, and themes:
- Actions serve as a mechanism to customize PageTop's internal behavior by intercepting its execution flow.
- Components encapsulate HTML, CSS, and JavaScript into functional, configurable, and well-defined units.
- Packages extend or customize existing functionality by interacting with PageTop APIs or third-party package APIs.
- Themes enable developers to alter the appearance of pages and components without affecting their functionality.
⚡️ Quick start
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_body(PrepareMarkup::With(html! { h1 { "Hello World!" } }))
.render()
}
#[pagetop::main]
async fn main() -> std::io::Result<()> {
Application::prepare(&HelloWorld).run()?.await
}
This program features a HelloWorld package, providing a service that serves a greeting web page
accessible via http://localhost:8088 under default settings.
📂 Helpers
-
pagetop-macros: A collection of macros that enhance the development experience within PageTop.
-
pagetop-build: Simplifies the process of embedding resources directly into binary files for PageTop applications.
🚧 Warning
PageTop framework is currently in active development. The API is unstable and subject to frequent changes. Production use is not recommended until version 0.1.0.
📜 License
PageTop is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this project is dual-licensed under either:
-
MIT License (LICENSE-MIT or https://opensource.org/licenses/MIT)
-
Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem.
✨ Contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.