···11# Contributing to Our Open Source Projects
2233-First, a huge **thank you** for dedicating your time to helping us improve our projects 🧡
33+First, a huge **thank you** for dedicating your time to helping us improve Maudit ❤️
44+55+> [!Tip]
66+>
77+> **New to open source?** Check out [https://github.com/firstcontributions/first-contributions](https://github.com/firstcontributions/first-contributions) for helpful information on contributing
4859## Before Opening Issues
610···1923## Code of Conduct
20242125We’re committed to fostering a welcoming and respectful community. Any issue, PR, or discussion that violates our [code of conduct](https://github.com/bruits/maudit/blob/main/CODE_OF_CONDUCT.md) will be deleted, and the authors will be **banned**.
2626+2727+## Getting started
2828+2929+Maudit is a fairly standard Rust project with a typical directory structure. It does not rely on any third-party build systems, complex configurations or dependencies in other languages.
3030+3131+### Prerequisites
3232+3333+- Latest stable version of [Rust](https://www.rust-lang.org/)
3434+- (Optional, for website and examples using Tailwind) [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/).
3535+ - We recommend installing pnpm using [Corepack](https://pnpm.io/installation#using-corepack).
3636+3737+### Project structure
3838+3939+Maudit is a Rust monorepo using [Cargo workspaces](https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html).
4040+4141+```bash
4242+├── crates/
4343+│ ├── maudit/ # Maudit
4444+│ ├── maudit-macros/ # Proc macros the library exposes (e.g. #[route])
4545+│ └── maudit-cli/ # Maudit's CLI and dev server
4646+├── examples/ # Various examples showcasing Maudit's capabilities, also used as templates
4747+└── website/ # Maudit's website and documentation
4848+```
22492350---
2451
···33resolver = "2"
4455[workspace.dependencies]
66-maudit = { path = "crates/framework", version = "*" }
66+maudit = { path = "crates/maudit", version = "*" }
77oubli = { path = "crates/oubli", version = "*" }
88maud = { version = "0.26.0" }
99serde = { version = "1.0.216" }
+10-3
README.md
···2233> A dire coronation, a situation where nobility, power, or status becomes inextricably tied to disastrous circumstances.
4455+
66+
77+[](https://github.com/bruits/maudit/actions)
88+[](https://crates.io/crates/maudit)
99+[](https://codspeed.io/bruits/maudit)
1010+
1111+512A library for generating static websites with Rust.
613714## Quick links
81599-🌍 Visit our [website](https://maudit.org) to read the [documentation](https://maudit.org/docs) and our [news](https://maudit.org/blog)
1616+🌍 Visit our [website](https://maudit.org) to read the [documentation](https://maudit.org/docs) and our [news](https://maudit.org/news)
10171118📦 See the [crate](https://crates.io/crates/maudit) on Crates.io, and the [reference](https://docs.rs/maudit/latest/maudit/) on Docs.rs.
1219···16231724💬 Join the discussion on [Github](https://github.com/bruits/maudit/discussions) and [Discord](https://maudit.org/chat/), if you have any questions, ideas, or suggestions.
18251919-## Crates
2626+## Contributing
20272121-_Work in progress._
2828+Contributions are welcome! See our [Contributor Guide](CONTRIBUTING.md) for help getting started.
···9999#[proc_macro_attribute]
100100// Helps implement a struct as a Markdown content entry.
101101//
102102-// See complete documentation in `crates/framework/src/content.rs`.
102102+// See complete documentation in `crates/maudit/src/content.rs`.
103103pub fn markdown_entry(args: TokenStream, item: TokenStream) -> TokenStream {
104104 let mut item_struct = syn::parse_macro_input!(item as ItemStruct);
105105 let _ = parse_macro_input!(args as parse::Nothing);