{"id":13478104,"url":"https://github.com/daynin/fundoc","last_synced_at":"2025-04-11T05:43:32.148Z","repository":{"id":38105594,"uuid":"254690142","full_name":"daynin/fundoc","owner":"daynin","description":"Fundoc - the right way to generate documentation","archived":false,"fork":false,"pushed_at":"2023-04-06T15:32:57.000Z","size":7828,"stargazers_count":163,"open_issues_count":14,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-10T03:56:23.840Z","etag":null,"topics":["cli","documentation","documentation-as-code","documentation-generator","literate-programming","rust"],"latest_commit_sha":null,"homepage":"https://daynin.github.io/fundoc/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daynin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-04-10T17:04:18.000Z","updated_at":"2025-03-28T14:53:45.000Z","dependencies_parsed_at":"2024-01-14T15:23:21.278Z","dependency_job_id":"3fdf7815-d761-4d5f-b010-5cde1444d652","html_url":"https://github.com/daynin/fundoc","commit_stats":null,"previous_names":["csssr/fundoc"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daynin%2Ffundoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daynin%2Ffundoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daynin%2Ffundoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daynin%2Ffundoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daynin","download_url":"https://codeload.github.com/daynin/fundoc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351449,"owners_count":21089270,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","documentation","documentation-as-code","documentation-generator","literate-programming","rust"],"created_at":"2024-07-31T16:01:52.526Z","updated_at":"2025-04-11T05:43:32.125Z","avatar_url":"https://github.com/daynin.png","language":"Rust","funding_links":[],"categories":["Rust","documentation"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/daynin/fundoc\"\u003e\n    \u003cimg src=\"./images/logo.png\" height=\"200px\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003e\n    Language agnostic documentation generator. Written in Rust 🦀\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/daynin/fundoc\"\u003e\n    \u003cimg alt=\"Tests Status\" src=\"https://github.com/daynin/fundoc/workflows/tests/badge.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/daynin/fundoc/blob/master/LICENSE\"\u003e\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/daynin/fundoc/issues\"\u003e\n    \u003cimg alt=\"GitHub Issues\" src=\"https://img.shields.io/github/issues/daynin/fundoc.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/fundoc\"\u003e\n    \u003cimg alt=\"Crates.io\" src=\"https://img.shields.io/crates/v/fundoc.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**Fundoc** - the right way to generate documentation. Business features in your project can be implemented in different files and even in different technologies. Fundoc can merge all descriptions of those features and put them in appropriate files.\n\nFundoc's main goals:\n\n- Allow you to keep all your **documentation along with your code**. Separating documentation and code makes it harder to support projects.\n- Use **the same versioning tools for your documentation** and code. All versions of your documentation should match versions of source code otherwise we can't trust documentation.\n- Documentation generators should allow you to **write your documentation from different file types** like source code files (Rust, C++, TypeScript, Java, JavaScript, Ruby, Python, etc), specification files (Alloy, TLA+, etc), stylesheet files (CSS, SCSS, QT Stylesheets, etc), configs (JSON, TOML, YAML, etc).\n\n### Why you should use it\n\nIf you want to keep your documentation synchronized with your code and to be able to describe different parts of a business feature in places where it was implemented you can write documentation in your source files or near them.\n\n#### One source file, one documentation file\n\nYou can describe business logic in one particular source file and generate documentation from it. It can be useful for describing config files, features implemented in one file or component, etc. Here you can find [an example](https://github.com/CSSSR/linters) of using Fundoc to describe ESLint/Prettier configs.\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./images/example-1.png\" /\u003e\n\u003c/p\u003e\n\n#### Multiple source files, one documentation file\n\nYou can write your documentation in multiple source files using different programming languages and still have an ability to get all documentation in one file (one file per article).\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"./images/example-2.png\" /\u003e\n\u003c/p\u003e\n\nAlso you can use .md files combining documentation from source files and from `.fdoc.md` files. In that case the name of an article will be got from a name of a file.\n\nIt can help you keep your documentation up to date and change only that part of the documentation that is connected to the code you're changing. And your team members can easily find the source of a documentation part using generated links on source files.\n\nBy the way, [documentation](https://csssr.github.io/fundoc/) here is generated by Fundoc itself, so you can check out how it works.\n\n### Installation\n\nIf you're rust developer and you have had rust compiler installed, you can install Fundoc from [crates.io](https://crates.io/):\n\n```bash\ncargo install fundoc\n```\n\nOr manually download it from the [releases page](https://github.com/daynin/fundoc/releases).\n\n### How to use\n\nYou can create a config file by executing `fundoc --init` command and answering few questions:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/fundoc-init.png\" /\u003e\n\u003c/p\u003e\n\nAll Fundoc's parameters are described [here](https://csssr.github.io/fundoc/configuration.html)\n\nTo generate documentation run `fundoc`:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/fundoc-work.png\" /\u003e\n\u003c/p\u003e\n\nFundoc supports [mdBook](https://github.com/rust-lang/mdBook), so if you want to generate documentation in mdBook format you can do it by setting `mdBook: true` in your config file. It can be useful if you want to use GitHub Pages with full-text search support in your project.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./images/full-text-search.gif\" /\u003e\n\u003c/p\u003e\n\n### Plugins\n\nYou can write your own plugins to enhance Fundoc's abilities. To do so, you can simply write a Lua plugin like this:\n\n```lua\nfunction transform(text)\n  importMermaid = '\u003cscript type=\"module\"\u003e import mermaid from \"https://cdn.jsdelivr.net/npm/mermaid@10.0.2/+esm\"; mermaid.initialize({}); \u003c/script\u003e'\n\n  result = '\u003cpre class=\"mermaid\"\u003e' .. text .. '\u003c/pre\u003e' .. importMermaid\nend\n```\n\n[Read more](https://daynin.github.io/fundoc/plugins.html) about plugins!\n\n### Companies/projects who use Fundoc\n\n- [Space Twistie](https://github.com/Space-Twistie)\n- [CSSSR](https://github.com/CSSSR/linters)\n\nKnow of others? Create a PR to let me know!\n\n### GitHub Action\n\nYou can use [Fundoc's GitHub Action](https://github.com/daynin/fundoc-action) to automate documentation generation.\n\n### Roadmap\n\n- [x] Merging documentation from different files.\n- [x] Different file types support.\n- [x] Creating links to the source files from the documentation.\n- [x] Generating mdBook with an ability to search through documentation.\n- [x] Multi-repositories support (collecting all documentation fragments from different repos).\n- [x] Add Mermaid support\n- [x] Add a plugin-system\n- [ ] Add file system API for the plugin system\n- [ ] Add FFI for the plugin system\n- [ ] Zettelkasten method support (maybe)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaynin%2Ffundoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaynin%2Ffundoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaynin%2Ffundoc/lists"}