···237237/// ## Example
238238/// ```rust
239239/// use maudit::route::prelude::*;
240240-///
241240/// # #[route("/other_page")]
242241/// # pub struct OtherPage;
243242/// # impl Route for OtherPage {
+2-1
website/content/docs/content.md
···1515Content sources are defined in the coronate entry point through the `content_sources!` macro.
16161717```rs
1818+use maudit::{coronate, routes, BuildOptions};
1819use maudit::content::{content_sources, markdown_entry, glob_markdown};
19202021#[markdown_entry]
···3233 "source_name" => loader(...),
3334 "another_source" => glob_markdown::<BlogPost>("path/to/files/*.md")
3435 ],
3535- Default::default()
3636+ BuildOptions::default()
3637 );
3738}
3839```
+27
website/content/docs/prefetching.md
···11+---
22+title: "Prefetching"
33+section: "core-concepts"
44+---
55+66+A downside of MPAs (Multi-Page Applications) contrary to SPAs (Single-Page Applications) is that navigating to other pages is often noticeably slower, as the browser has to load a totally new HTML document instead of just updating part of the current document.
77+88+Maudit has built-in support for prefetching pages before the user navigates to them, offering near-instant navigation, even for a MPA.
99+1010+Prefetching is enabled by default and the default strategy is to prefetch pages on click down.
1111+1212+## Configuration
1313+1414+Prefetching can be configured using the `prefetch` property of [`BuildOptions`](https://docs.rs/maudit/latest/maudit/struct.BuildOptions.html) which takes a [`PrefetchOptions`](https://docs.rs/maudit/latest/maudit/struct.PrefetchOptions.html) struct. Currently, the only option is `strategy`.
1515+1616+```rs
1717+use maudit::{BuildOptions, PrefetchOptions, PrefetchStrategy};
1818+1919+BuildOptions {
2020+ prefetch: PrefetchOptions {
2121+ strategy: PrefetchStrategy::Hover,
2222+ },
2323+ ..Default.default()
2424+}
2525+```
2626+2727+To disable prefetching, set `strategy` to [`PrefetchStrategy::None`](https://docs.rs/maudit/latest/maudit/enum.PrefetchStrategy.html#variant.None).
+22
website/content/docs/routing.md
···198198- `/de/kontakt`
199199200200Calling `render()` three times with a different `ctx.variant` each time.
201201+202202+## Redirects
203203+204204+Maudit supports creating redirects to other pages using the [meta http-equiv](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/http-equiv#refresh) HTML tag, which can be built ergonomically using the [`redirect`](https://docs.rs/maudit/latest/maudit/route/fn.redirect.html) function.
205205+206206+```rs
207207+use maudit::route::prelude::*;
208208+209209+#[route("/redirect")]
210210+pub struct Redirect;
211211+212212+impl Route for Redirect {
213213+ fn render(&self, ctx: &mut PageContext) -> impl Into<RenderResult> {
214214+ redirect("https://example.com")
215215+216216+ // Use a page's url method to generate type safe links:
217217+ // redirect(&OtherPage.url(None))
218218+ }
219219+}
220220+```
221221+222222+The platform you're deploying your website to might also support a native way to do redirects that could be better suited if your redirects do not need runtime logic (i.e. your redirect is static, for instance `/blog` became `/article`). For example, [Netlify](https://docs.netlify.com/manage/routing/redirects/overview/) and [Cloudflare](https://developers.cloudflare.com/workers/static-assets/redirects/#_top) supports adding `_redirects` files to your projects to configure redirects.
+56
website/content/news/2026-in-the-cursed-lands.md
···11+---
22+title: "What's new in Maudit and what's coming in 2026"
33+description: "What is creeping around these cursed lands"
44+author: The Maudit Team
55+date: 2025-10-15
66+---
77+88+**How dusty are these shelves!** And yet, new books have found themselves nestled among the ancient tomes, ready to be discovered by those brave enough to explore these cursed lands.
99+1010+Last summer we were very happy to introduce to you Maudit, a Rust library to generate static websites, then at version 0.1, but already quite mighty. This time we're back to talk about what we've been up to recently and what's coming this year.
1111+1212+> Interested in trying out Maudit? Follow our [Quick Start](/docs/quick-start/) guide.
1313+1414+## Built-in sitemap generation
1515+1616+[Maudit 0.9.0](https://github.com/bruits/maudit/releases/tag/maudit-v0.9.0) added support for automatically generating a sitemap for your website. In this new world of AI and other advanced web crawlers, sitemaps are a bit of an old relic. However, they're still considered useful to ensure that search engines properly index your website.
1717+1818+To make Maudit generate a sitemap, first configure the [`base_url` property](https://docs.rs/maudit/latest/maudit/struct.BuildOptions.html#structfield.base_url) on `BuildOptions` to your website's address and then enable sitemaps by setting [`sitemap`](https://docs.rs/maudit/latest/maudit/struct.BuildOptions.html#structfield.sitemap) with a [SitemapOptions](https://docs.rs/maudit/latest/maudit/sitemap/struct.SitemapOptions.html) struct with `enabled: true`.
1919+2020+```rust
2121+use maudit::{BuildOptions, SitemapOptions, content_sources, coronate, routes};
2222+2323+fn main() {
2424+ coronate(
2525+ routes![],
2626+ content_sources![],
2727+ BuildOptions {
2828+ base_url: Some("https://example.com".into()),
2929+ sitemap: SitemapOptions {
3030+ enabled: true,
3131+ ..Default::default()
3232+ },
3333+ ..Default::default()
3434+ },
3535+ );
3636+}
3737+```
3838+3939+With this, building your website will now result in a `sitemap.xml` file being generated inside your `dist` folder which includes all the pages of your website. Maudit will also automatically handle separating your sitemap in multiple files if you have over the recommended amount of maximum 50000 pages per sitemap.
4040+4141+For more information on sitemap generation in Maudit, check [our Sitemap documentation](/docs/sitemap/).
4242+4343+## Automatic prefetching
4444+4545+A common complaint about MPAs (Multi-Page Applications) is that navigating between page is slow, especially compared to the app-like experience of SPAs (Single-Page Applications).
4646+4747+The solution to this problem is to prefetch pages before the user navigate to them, like SPAs typically do, allowing near-instant navigations in most cases.
4848+4949+Since [Maudit 0.10.0](https://github.com/bruits/maudit/releases/tag/maudit-v0.10.0), Maudit will by default prefetch links on clickdown, improving page loads by around 80ms on average, with other prefetching strategies available such as prefetching on hover.
5050+5151+<video autoplay controls loop>
5252+ <source src="/prefetch.mp4" type="video/mp4">
5353+</video>
5454+<span class="text-center block italic">Showing the Hover strategy for prefetching</span>
5555+5656+For more information on prefetching, see [our prefetching documentation](/docs/prefetching/).