{"id":13718568,"url":"https://github.com/doorstop-dev/doorstop","last_synced_at":"2025-05-07T10:33:16.455Z","repository":{"id":7771362,"uuid":"9140331","full_name":"doorstop-dev/doorstop","owner":"doorstop-dev","description":"Requirements management using version control.","archived":false,"fork":false,"pushed_at":"2024-10-16T22:52:49.000Z","size":12618,"stargazers_count":474,"open_issues_count":71,"forks_count":132,"subscribers_count":38,"default_branch":"develop","last_synced_at":"2024-10-19T05:38:56.830Z","etag":null,"topics":["certification","documentation","html","markdown","requirements-management","traceability","version-control"],"latest_commit_sha":null,"homepage":"https://doorstop.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doorstop-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-04-01T03:29:26.000Z","updated_at":"2024-10-17T19:42:30.000Z","dependencies_parsed_at":"2023-02-12T06:00:34.703Z","dependency_job_id":"e5d6669d-d431-4500-92d6-18165dff0764","html_url":"https://github.com/doorstop-dev/doorstop","commit_stats":{"total_commits":1892,"total_committers":52,"mean_commits":36.38461538461539,"dds":"0.36575052854122625","last_synced_commit":"e91dc8f0dbdd5dde1663b268e53c299c39c20280"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doorstop-dev%2Fdoorstop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doorstop-dev%2Fdoorstop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doorstop-dev%2Fdoorstop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doorstop-dev%2Fdoorstop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doorstop-dev","download_url":"https://codeload.github.com/doorstop-dev/doorstop/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224592059,"owners_count":17337031,"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":["certification","documentation","html","markdown","requirements-management","traceability","version-control"],"created_at":"2024-08-03T01:00:33.130Z","updated_at":"2024-11-14T08:30:35.149Z","avatar_url":"https://github.com/doorstop-dev.png","language":"Python","readme":"[![Linux Tests](https://github.com/doorstop-dev/doorstop/actions/workflows/test-linux.yml/badge.svg)](https://github.com/doorstop-dev/doorstop/actions/workflows/test-linux.yml)\n[![macOS Tests](https://github.com/doorstop-dev/doorstop/actions/workflows/test-osx.yml/badge.svg)](https://github.com/doorstop-dev/doorstop/actions/workflows/test-osx.yml)\n[![Windows Tests](https://github.com/doorstop-dev/doorstop/actions/workflows/test-windows.yml/badge.svg)](https://github.com/doorstop-dev/doorstop/actions/workflows/test-windows.yml)\n\u003cbr\u003e\n[![Coverage Status](https://img.shields.io/codecov/c/gh/doorstop-dev/doorstop)](https://codecov.io/gh/doorstop-dev/doorstop)\n[![Scrutinizer Code Quality](http://img.shields.io/scrutinizer/g/doorstop-dev/doorstop.svg)](https://scrutinizer-ci.com/g/doorstop-dev/doorstop/?branch=develop)\n[![PyPI Version](http://img.shields.io/pypi/v/Doorstop.svg)](https://pypi.org/project/Doorstop)\n\u003cbr\u003e\n[![Gitter](https://badges.gitter.im/doorstop-dev/community.svg)](https://gitter.im/doorstop-dev/community)\n[![Google](https://img.shields.io/badge/forum-on_google-387eef)](https://groups.google.com/forum/#!forum/doorstop-dev)\n[![Best Practices](https://bestpractices.coreinfrastructure.org/projects/754/badge)](https://bestpractices.coreinfrastructure.org/projects/754)\n\n# Overview\n\nDoorstop is a [requirements management](http://alternativeto.net/software/doorstop/) tool that facilitates the storage of textual requirements alongside source code in version control.\n\n\u003cimg align=\"left\" width=\"100\" src=\"https://raw.githubusercontent.com/doorstop-dev/doorstop/develop/docs/images/logo-black-white.png\"/\u003e\n\nWhen a project leverages this tool, each linkable item (requirement, test case, etc.) is stored as a YAML file in a designated directory. The items in each directory form a document. The relationship between documents forms a tree hierarchy. Doorstop provides mechanisms for modifying this tree, validating item traceability, and publishing documents in several formats.\n\nDoorstop is under active development and we welcome contributions.\nThe project is licensed as [LGPLv3](https://github.com/doorstop-dev/doorstop/blob/develop/LICENSE.md).\nTo report a problem or a security vulnerability please [raise an issue](https://github.com/doorstop-dev/doorstop/issues).\nAdditional references:\n\n- Publication: [JSEA Paper](http://www.scirp.org/journal/PaperInformation.aspx?PaperID=44268#.UzYtfWRdXEZ)\n- Talks: [GRDevDay](https://speakerdeck.com/jacebrowning/doorstop-requirements-management-using-python-and-version-control), [BarCamp](https://speakerdeck.com/jacebrowning/strip-searched-a-rough-introduction-to-requirements-management)\n- Sample: [Generated HTML](http://doorstop-dev.github.io/doorstop/)\n\n# Setup\n\n## Requirements\n\n- Python 3.9+\n- A version control system for requirements storage\n\n## Installation\n\nInstall Doorstop with pip:\n\n```sh\n$ pip install doorstop\n```\n\nor add it to your [Poetry](https://poetry.eustace.io/) project:\n\n```sh\n$ poetry add doorstop\n```\n\nAfter installation, Doorstop is available on the command-line:\n\n```sh\n$ doorstop --help\n```\n\nAnd the package is available under the name 'doorstop':\n\n```sh\n$ python\n\u003e\u003e\u003e import doorstop\n\u003e\u003e\u003e doorstop.__version__\n```\n\n# Usage\n\nSwitch to an existing version control working directory, or create one:\n\n```sh\n$ git init .\n```\n\n## Create documents\n\nCreate a new parent requirements document:\n\n```sh\n$ doorstop create SRD ./reqs/srd\n```\n\nAdd a few items to that document:\n\n```sh\n$ doorstop add SRD\n$ doorstop add SRD\n$ doorstop add SRD\n```\n\n## Link items\n\nCreate a child document to link to the parent:\n\n```sh\n$ doorstop create HLTC ./tests/hl --parent SRD\n$ doorstop add HLTC\n```\n\nLink items between documents:\n\n```sh\n$ doorstop link HLTC001 SRD002\n```\n\n## Publish reports\n\nRun integrity checks on the document tree:\n\n```sh\n$ doorstop\n```\n\nPublish the documents as HTML:\n\n```sh\n$ doorstop publish all ./public\n```\n","funding_links":[],"categories":["Requirements and Safety"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoorstop-dev%2Fdoorstop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoorstop-dev%2Fdoorstop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoorstop-dev%2Fdoorstop/lists"}