A simple Ruby project documentation website.
I've used many documentation tools. Most are over-complicated and focus on what is possible rather than what is useful. Because I manage many open source projects, at a certain scale it makes sense to build something to suit your needs rather than try to adapt to existing systems. This is one such instance.
My goal is to provide task-centric documentation, and to continually improve the way it's presented. The primary entry point for new developers are the structured usage guides, however having rich cross-referencing into the code is equally important.
With that in mind, this web application provides such a model and will evolve over time to suit my requirements and the needs of my users.
Please see the project documentation for more details.
-
Getting Started - This guide explains how to use
utopia-projectto add documentation to your project. -
Documentation Guides - This guide explains how to create and maintain documentation for your project using
utopia-project. -
Mermaid Diagrams - This guide explains how to use Mermaid diagrams in your documentation to visualize complex relationships, flows, and architectures.
-
GitHub Pages Integration - This guide shows you how to use
utopia-projectwith GitHub Pages to deploy documentation.
Please see the project releases for all releases.
- Manage releases through GitHub pull requests and publish signed gems with RubyGems Trusted Publishing and attestations.
- Sort guides by order (defaulting to zero), then name.
- Fix supplemental documentation paths and missing guide/reference responses.
- Handle empty READMEs and guides without descriptions when rendering pages and generating agent context.
- Treat empty Markdown headings as missing titles and preserve the following content when rendering pages or updating documentation.
- Cover all Ruby, task, and rendered template lines, and exercise the generated site in Chromium at mobile and desktop widths in light and dark mode.
- Add padding to documentation table cells and allow tables to scroll whenever they exceed the available width.
- Scale table, inline code, badge, navigation link, and disclosure spacing with the local font size.
- Render resolved inline code references with links inside their code elements so hover and keyboard focus affect the complete reference.
- Add support for language-prefixed inline code references such as ruby:
Object.new.
- Don't render empty signature block when there are only examples.
- Use protocol HTTP middleware for serving and testing project documentation.
- Fixed duplicate heading IDs when multiple sections have the same title. Permalinks and sidebar scroll tracking now work correctly when you have headings with identical text in different sections (e.g., multiple "Deployment" subsections under "Kubernetes" and "Systemd").
- Improved guides index page to show guide summaries (first paragraph) instead of just listing titles.
- Added previous/next navigation at the top and bottom of guide pages for easier sequential reading.
- Support for
@examplepragmas from thedecodegem, allowing inline code examples to be rendered in API documentation.
- Fix mermaid diagram text color in dark mode.
- Introduce
bake utopia:project:updatewhich invokes readme and agent context updates.
- Fix schema for
index.yamlcontext file.
- Utopia — The website framework which powers this web application.
- Decode — The source code parser and cross-referencing library.
We welcome contributions to this project.
- Fork the repository.
- Create your feature branch (
git checkout -b my-new-feature). - Commit your changes (
git commit -am 'Add some feature.'). - Push to the branch (
git push origin my-new-feature). - Create a new pull request.
To run the test suite:
$ bundle exec susTo prepare a release pull request:
$ bundle exec bake gem:github:release:patch # or minor or majorSee bake-gem-github for setup and publishing details.
In order to protect users of this project, we require all contributors to comply with the Developer Certificate of Origin. This ensures that all contributions are properly licensed and attributed.
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.