2022-05-21 20:03:27 +02:00
# staticoso
2022-08-14 18:26:18 +02:00
**staticoso** (_from Italian statico [static] + coso [thingy]_) is an unpretentious **static site generator** .
2022-05-21 20:03:27 +02:00
I'm making this because I need a simple and kind-of-minimal program to serve me as a static site generator with (limited) CMS features. Just the features I need.
This won't replace any of the big projects out there that do the same thing but, as all of my projects, I'm releasing it as free libre software, in the hope that someone would find it useful.
2022-06-20 18:47:31 +02:00
Also, this software is needed for someone to edit and compile my personal sub-website [sitoctt ](https://gitlab.com/octtspacc/sitoctt ) from its source. Being that site too released under a libre license that allows modifications, I have to also release the tools I use to build it.
2022-05-21 20:03:27 +02:00
2022-08-14 18:26:18 +02:00
**Everything is still an heavy WIP**, and features might break across commits, but feel free to experiment with all of this stuff!
2022-08-14 17:35:58 +02:00
## Documentation
2022-08-14 18:26:18 +02:00
Documentation can be found at [octtspacc.gitlab.io/staticoso-docs ](https://octtspacc.gitlab.io/staticoso-docs ).
2022-08-14 17:35:58 +02:00
Obviously, it's built with staticoso itself 😁️. Its source repo can be found at [gitlab.com/octtspacc/staticoso-docs ](https://gitlab.com/octtspacc/staticoso-docs ).
2022-05-21 20:03:27 +02:00
2022-08-14 18:26:18 +02:00
Keep in mind that, currently, it's still very incomplete. **Any help** , from writing the documentation to creating a decent HTML+CSS template for its site, **is more than welcome** .
2022-05-21 20:03:27 +02:00
## Dependencies
2022-08-29 17:50:14 +02:00
- [Python >= 3.10 ](https://python.org )
2022-06-24 00:30:50 +02:00
- (Included) [Python Markdown == 3.3.7 ](https://pypi.org/project/Markdown )
2022-07-28 23:13:47 +02:00
- (Included) Third-Party Extensions for Python Markdown: [markdown_del_ins ](https://github.com/honzajavorek/markdown-del-ins ), [mdx_subscript ](https://github.com/jambonrose/markdown_subscript_extension ), [mdx_superscript ](https://github.com/jambonrose/markdown_superscript_extension )
2022-06-24 00:30:50 +02:00
- (Included) [Beautiful Soup == 4.11.1 ](https://pypi.org/project/beautifulsoup4 )
2022-06-24 17:19:22 +02:00
- (Included) [feedgen == 0.9.0 ](https://pypi.org/project/feedgen )
2022-08-29 17:50:14 +02:00
- [lxml == 4.9.1 ](https://pypi.org/project/lxml )
2022-06-24 00:30:50 +02:00
- (Included) [htmlmin == 0.1.12 ](https://pypi.org/project/htmlmin )
2022-08-14 18:26:18 +02:00
### Optional dependencies
Needed for Pug input support:
2022-06-24 17:19:22 +02:00
- [node == 12.22.5 ](https://nodejs.org ) - [npm == 7.5.2 ](https://www.npmjs.com )
2022-08-29 17:50:14 +02:00
- (Included, must be manually installed in system $PATH) [pug-cli == 1.0.0-alpha6 ](https://npmjs.com/package/pug-cli )
2022-08-14 18:26:18 +02:00
Needed for Gemtext output support:
2022-06-29 20:09:13 +02:00
- [Go ](https://go.dev )
- [html2gmi ](https://github.com/LukeEmmet/html2gmi )
2022-05-21 20:03:27 +02:00
## Features roadmap
2022-08-29 17:50:14 +02:00
2022-10-18 16:43:21 +02:00
- [ ] Page redirects / Alt URLs (+ ActivityPub URL overrides)
- [x] Progress bars for the build process!
2022-08-31 00:18:23 +02:00
- [x] Multithreading
- [x] Differential building
2022-08-29 17:50:14 +02:00
- [ ] Overriding internal HTML snippets for template-specific ones
- [ ] Static syntax highlighing for code blocks in any page
2022-08-14 18:26:18 +02:00
- [x] File name used as a title for pages without one
- [ ] Custom category names in header links
- [ ] Choosing custom name for Blog and Uncategorized categories
2022-09-23 00:23:52 +02:00
- [ ] Choosing to use a template for all pages in a folder/category
2022-08-29 17:50:14 +02:00
- [x] Configuration with both INI files and CLI arguments
2022-08-14 17:35:58 +02:00
- [ ] Category-based feeds
- [ ] Support for multi-language sites
2022-08-29 17:50:14 +02:00
- [x] The `title` attribute is added to images which only have `alt` (for desktop accessibility), or viceversa
2022-07-28 23:13:47 +02:00
- [x] Local (per-page) and global (per-site) macros
2022-07-01 14:00:25 +02:00
- [x] ActivityPub (Mastodon) support (Feed + embedded comments)
2022-06-29 20:09:13 +02:00
- [ ] Polished Gemtext generation
2022-06-23 18:41:52 +02:00
- [x] Autodetection of pages and posts
2022-06-20 23:16:31 +02:00
- [x] Info for posts shown on their page
2022-06-20 16:16:41 +02:00
- [x] HTML minification
2022-06-23 20:42:43 +02:00
- [x] Full Open Graph support
2022-06-19 16:22:33 +02:00
- [x] Custom categories for posts
2022-08-14 18:26:18 +02:00
- [x] Custom static and dynamic page parts
2022-06-23 18:41:52 +02:00
- [x] Showing creation and modified date for posts
2022-06-03 23:38:47 +02:00
- [x] Generation of category pages (ex. page with list of blog posts)
2022-06-23 18:41:52 +02:00
- [x] Custom and automatic page sorting
2022-05-23 20:36:50 +00:00
- [ ] SCSS compilation support for CSS templates
- [ ] Pug support for base templates and page side parts
- [ ] Hot-recompile (for website development)
2022-07-13 17:40:09 +02:00
- [x] TXT sitemap generation
- [x] Atom + RSS feed generation
2022-08-14 18:26:18 +02:00
- [x] Generation of global website menu as a tree or as a line
- [x] Generation of page (titles) menu as a tree
- [x] Auto-detection of titles in a page
2022-08-29 20:28:12 +02:00
- [x] **HTML** , **TXT** , **Extended Markdown** , and **Pug** supported as input page files
2022-08-14 18:26:18 +02:00
- [ ] Out of heavy-WIP state
2022-08-29 17:50:14 +02:00
## Known issues (might need further investigation)
- Bad HTML included in Markdown files can cause a build to fail entirely.
2022-08-31 23:15:49 +02:00
- Despite differential building and multithreading, the program still needs some more optimizations.
2022-08-29 20:28:12 +02:00
- Ordering pages in the global menu with external configuration flags (outside the pages' source) yields broken and unpredictable results.