Un entorno para el desarrollo de soluciones web modulares, extensibles y configurables.
Find a file
2024-03-28 23:17:15 +01:00
config 🚧 Doc and code tweaks 2024-02-16 20:03:11 +01:00
docs 🔧 Config tweak 2024-03-23 12:42:05 +01:00
drust 🚧 Normalize Cargo and README files 2024-03-23 21:21:43 +01:00
examples 🧑‍💻 Simplify service::HttpRequest to HttpRequest 2024-02-28 09:11:58 +01:00
helpers 🚧 Normalize Cargo and README files 2024-03-23 21:21:43 +01:00
packages 🚧 Working on regions layout 2024-03-28 23:17:15 +01:00
src 🚧 Working on regions layout 2024-03-28 23:17:15 +01:00
static 🩹 Fix flex items width overflow 2024-03-18 00:20:54 +01:00
tests 🔥 Remove unwrap usage to improve new apps setup 2024-02-26 07:39:08 +01:00
tools 🔨 Improve crate publishing with version check 2024-03-21 20:17:37 +01:00
.gitignore 🔧 Add optional local config file for default mode 2023-10-29 19:10:54 +01:00
build.rs ♻️ Major code restructuring 2024-02-09 14:05:38 +01:00
Cargo.toml 🚧 Normalize Cargo and README files 2024-03-23 21:21:43 +01:00
CREDITS.md Integrate "SmartDefault" as "AutoDefault" macro 2024-02-27 21:57:16 +01:00
LICENSE-APACHE Añade las licencias del proyecto 2022-06-07 06:44:51 +02:00
LICENSE-MIT Añade las licencias del proyecto 2022-06-07 06:44:51 +02:00
README.md 🚧 Normalize Cargo and README files 2024-03-23 21:21:43 +01:00
STARTER.bin.Cargo.toml ♻️ Major code restructuring 2024-02-09 14:05:38 +01:00
STARTER.lib.Cargo.toml ♻️ Major code restructuring 2024-02-09 14:05:38 +01:00

PageTop

An opinionated web framework to build modular Server-Side Rendering web solutions.

License API Docs Crates.io Downloads

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_component(Html::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.

📂 Repository Structure

This repository is organized into a workspace that includes several subprojects, each serving a distinct role within the PageTop ecosystem:

Application

  • drust: A simple Content Management System (CMS) built on PageTop, which enables the creation, editing, and maintenance of dynamic, fast, and modular websites. It uses the following essential packages to provide standard CMS functionalities.

Helpers

  • pagetop-macros: A collection of procedural macros that enhance the development experience within PageTop.

  • pagetop-build: Simplifies the process of embedding resources directly into binary files for PageTop applications.

Packages

  • pagetop-user: Facilitates user management, including roles, permissions, and session handling, for applications built on PageTop.

  • pagetop-admin: Provides a unified interface for administrators to configure and manage package settings.

  • pagetop-node: Enables the creation and customization of content types, enhancing website content management.

Themes

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

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.