<div align="center">
# **novos**
###### ( aka 'novos omits very old standards' )
<img src="./assets/icon.png" alt="novos logo" width="250" height="250">
**Build at the speed of thought.**


</div>
> [!WARNING]
> **novos** is currently beta software. Expect frequent updates and potential breaking changes as we approach v1.0.
>
> **We are currently changing to Tera. For the meantime, the default template partially works. Same with the official website**
## What is novos?
novos is a lightning-fast static site generator (SSG) built in Rust. It takes your Markdown files and turns them into a website in milliseconds.
## Features
- **Sass transpilation** via native `grass` (no C++ or Node.js required)
- **Fast Parallelism** utilizing `Rayon` for multi-core page generation
- **Self-Contained** binary with embedded assets via `rust-embed`
- **Shortcodes, Includes, & Variables** for flexible templating
- **RSS** generation baked-in
- **search.json**, so you can search
- **syntect**, because who hates colors?
- **minification**, because you want speed, right?
- **Axum**, for a stellar webserver + WebSockts.
- [**Tera**](https://keats.github.io/terasample), because who loves repeating themselves?
## Supported OSes
| **Tier 1** | **OmniOS CE** | Primary development |
| **Tier 1** | **FreeBSD** | Primary development |
| **Tier 2** | Ubuntu LTS (Noble) | Verified compatibility |
| **Tier 2** | Arch Linux | Verified compatibility |
| **Tier 2** | Void Linux | Verified compatibility |
| **Tier 3** | macOS (intel/Sillicon) | *"CI compiled it"* |
| **Tier 3** | Windows | *"Wine said it worked"* |
## Roadmap
- [X] Parallel page generation
- [X] Live reload inside dev server
- [X] Theme: Nord-ish
- [ ] Plugin API (WASM + .so)
- [ ] Taxonomies
- [ ] Pagination
## Themes
- Solarnight (sass/solarnight.scss)
- Solarnight is a Rose Pine inspired theme.
- Nordish
- A Nord inspired color palette.
## Documentation
Documentation is available at [docs/](./docs)
- [**Get Started**](./docs/SETUP.md): Setup guide for novos
- [**Installation**](./docs/INSTALL.md): Install guide for novos
## Backend
- **Language:** Rust (2024 Edition)
- **Markdown:** `pulldown-cmark` (CommonMark compliant, yay!)
- **License:** 3-Clause BSD
# Performance Benchmarks
(The stress test was generated by [./stress.sh](./stress.sh))
### In text form
```bash
~/dev/stress/sitez $ hyperfine --warmup 3 "zola build"
Benchmark 1: zola build
Time (mean ± σ): 4.874 s ± 0.014 s [User: 3.949 s, System: 1.354 s]
Range (min … max): 4.852 s … 4.895 s 10 runs
~/dev/stress/siten $ hyperfine --warmup 3 "novos build"
Benchmark 1: novos build
Time (mean ± σ): 675.7 ms ± 14.4 ms [User: 844.4 ms, System: 1722.4 ms]
Range (min … max): 660.9 ms … 706.1 ms 10 runs
~/dev/stress/siteh $ hyperfine --warmup 3 "hugo"
Benchmark 1: hugo
00:00:05 Time (mean ± σ): 1.929 s ± 0.018 s [User: 4.377 s, System: 0.529 s]
Range (min … max): 1.910 s … 1.966 s 10 runs
```
### In a bar chart
```mermaid
xychart-beta
title "Build Time (seconds) - Lower is Better"
x-axis [Zola, Hugo, novos]
y-axis "Time (s)" 0 --> 5
bar [4.87, 1.93, 0.68]
```
#### How novos achieves < 1s builds:
- **Zero-Copy Parsing**: Leveraging pulldown-cmark's event-based parser.
- **Work-Stealing Parallelism**: Rayon dynamically balances page rendering across all available CPU threads.
- **Sass compilation techniques**: Using native grass avoids the overhead of external process calls to Node or Dart.
Commits prior to 2d1acf1be5fb605694cc2f95c5efe8dad0b35de0 are three clause BSD. Commits after that point are Apache-2.0 OR MIT