You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
4.9 KiB

9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
7 months ago
8 months ago
7 months ago
  1. # staticoso
  2. **staticoso** (_from Italian statico [static] + coso [thingy]_) is an unpretentious **static site generator**.
  3. I'm making this because I need a simple and kind-of-minimal program to serve me as a static site generator with (limited) mixed-CMS+Wiki features. Just the ones I need, of which some are unique, however.
  4. 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.
  5. Also, this software is needed for someone to edit and compile my personal 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, or really people will never be able to make the most out of it.
  6. **Everything is still kind of a WIP**, and some bugs might appear across commits, but feel free to experiment with all of this stuff! If you really want to use this tool for your website, I suggest you don't do like I do in my build process, running always with the latest code commit; instead, either download a snapshot of the code and keep that, or always clone from a specific commit, until you have time when I do an update to check if your site actually builds correctly with the new version.
  7. ## Documentation
  8. Documentation can be found at [octtspacc.gitlab.io/staticoso-docs](https://octtspacc.gitlab.io/staticoso-docs).
  9. 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).
  10. 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**.
  11. ## Dependencies
  12. - [Python >= 3.10](https://python.org)
  13. - (Included) [Python Markdown == 3.3.7](https://pypi.org/project/Markdown)
  14. - (Included) [Beautiful Soup == 4.11.1](https://pypi.org/project/beautifulsoup4)
  15. - (Included) [feedgen == 0.9.0](https://pypi.org/project/feedgen)
  16. - (Not included) [lxml == 4.9.1](https://pypi.org/project/lxml)
  17. - (Included) [htmlmin == 0.1.12](https://pypi.org/project/htmlmin)
  18. - (Included) [rcssmin == 1.1.1](https://pypi.org/project/rcssmin)
  19. ### Optional dependencies
  20. Needed for Pug input support:
  21. - [node == 12.22.5](https://nodejs.org) - [npm == 7.5.2](https://www.npmjs.com)
  22. - (Included, but must be manually installed in system $PATH) [pug-cli == 1.0.0-alpha6](https://npmjs.com/package/pug-cli)
  23. Needed for Gemtext output support:
  24. - [Go](https://go.dev)
  25. - [html2gmi](https://github.com/LukeEmmet/html2gmi)
  26. ## Features roadmap
  27. - [x] Generation of simplified pages compliant with the [HTML Journal standard](https://journal.miso.town)
  28. - [x] HTML feeds (pages with list of N most recent posts)
  29. - [x] Lists of all pages in a site directory
  30. - [x] Page redirects / Alt URLs (+ ActivityPub URL overrides)
  31. - [x] Progress bars for the build process!
  32. - [x] Multithreading
  33. - [x] Differential building
  34. - [ ] Overriding internal HTML snippets for template-specific ones
  35. - [ ] Static syntax highlighing for code blocks in any page
  36. - [x] File name used as a title for pages without one
  37. - [ ] Custom category names in header links
  38. - [ ] Choosing custom name for Blog and Uncategorized categories
  39. - [ ] Choosing to use a template for all pages in a folder/category
  40. - [x] Configuration with both INI files and CLI arguments
  41. - [ ] Category-based feeds
  42. - [ ] Support for multi-language sites
  43. - [x] The `title` attribute is added to images which only have `alt` (for desktop accessibility), or viceversa
  44. - [x] Local (per-page) and global (per-site) macros
  45. - [x] ActivityPub (Mastodon) support (Feed + embedded comments)
  46. - [ ] Polished Gemtext generation
  47. - [x] Autodetection of pages and posts
  48. - [x] Info for posts shown on their page
  49. - [x] HTML and CSS minification for Pages and Assets
  50. - [x] Full Open Graph support
  51. - [x] Custom categories for posts
  52. - [x] Custom static and dynamic page parts
  53. - [x] Showing creation and modified date for posts
  54. - [x] Generation of category pages (ex. page with list of blog posts)
  55. - [x] Custom and automatic page sorting
  56. - [ ] SCSS compilation support for CSS templates
  57. - [ ] Pug support for base templates and page side parts
  58. - [ ] Hot-recompile (for website development)
  59. - [x] TXT sitemap generation
  60. - [x] Atom + RSS feed generation
  61. - [x] Generation of global website menu as a tree or as a line
  62. - [x] Generation of page (titles) menu as a tree
  63. - [x] Auto-detection of titles in a page
  64. - [x] **HTML**, **TXT**, **Extended Markdown**, and **Pug** supported as input page files
  65. ## Known issues (might need further investigation)
  66. - Bad HTML included in Markdown files can cause a build to fail entirely.
  67. - Despite differential building and multithreading, the program still needs some more optimizations.
  68. - Ordering pages in the global menu with external configuration flags (outside the pages' source) yields broken and unpredictable results.