# Bard Bard is the frontend rendering library for the Tavernworks blog system. It provides Dioxus components for rendering blog content that has been compiled into a SQLite database by Loreweaver and parsed by the Tavern engine. Bard supports both server-side and client-side rendering and is designed to be integrated into Dioxus applications. ## Features - Dioxus components for routing and rendering blog pages - Works with content stored in a SQLite database - Compatible with `dioxus-web` and `dioxus-desktop` - Optional server integration via Axum for local hosting ## Usage To use Bard in a Dioxus application, you must: 1. Initialize the database using `bard::init_database`. 2. Add the `Router::` component to your app. 3. Optionally, define routes that include Bard under your own layout. ### Example ```rust #[component] fn App() -> Element { rsx! { Router:: {} } } #[derive(Routable, Clone, PartialEq)] pub enum Page { #[layout(Navbar)] #[route("/")] Home {}, #[child("/blog")] Bard { child: bard::Page }, #[route("/:..route")] PageNotFound { route: Vec } } ``` ### Server-side Initialization To serve the blog using Axum and load the database: ```rust tokio::runtime::Runtime::new() .unwrap() .block_on(async move { bard::init_database("path/to/tavern.db").await; }); ``` ## Features Enable the following Cargo features as needed: - `server`: Enables Axum support for database-backed serving - `web`: Enables Dioxus web support --- ## Copyright & License Copyright 2025 CyberMages LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this library except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS