{"id":21162457,"url":"https://github.com/josepedrodias/parenthood","last_synced_at":"2025-03-14T16:14:23.150Z","repository":{"id":42857254,"uuid":"260366645","full_name":"JosePedroDias/parenthood","owner":"JosePedroDias","description":"a simple way of describing relationships. outputs those of those to graphviz diagrams","archived":false,"fork":false,"pushed_at":"2023-03-04T15:34:19.000Z","size":2002,"stargazers_count":0,"open_issues_count":10,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-23T04:49:55.832Z","etag":null,"topics":["cytoscape","cytoscapejs","graph","graphviz","graphviz-dot","reading-note","reading-program","second-screen"],"latest_commit_sha":null,"homepage":"https://josepedrodias.github.io/parenthood/public/graphviz/demo.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JosePedroDias.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-05-01T02:52:59.000Z","updated_at":"2022-02-22T00:04:46.000Z","dependencies_parsed_at":"2025-01-21T09:41:00.843Z","dependency_job_id":"5cceaf9c-10a3-4a91-b970-0eec438273fe","html_url":"https://github.com/JosePedroDias/parenthood","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fparenthood","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fparenthood/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fparenthood/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosePedroDias%2Fparenthood/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JosePedroDias","download_url":"https://codeload.github.com/JosePedroDias/parenthood/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243606960,"owners_count":20318314,"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":["cytoscape","cytoscapejs","graph","graphviz","graphviz-dot","reading-note","reading-program","second-screen"],"created_at":"2024-11-20T13:29:16.008Z","updated_at":"2025-03-14T16:14:23.121Z","avatar_url":"https://github.com/JosePedroDias.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# parenthood\n\n## intro\n\nMy idea here is to supply a simple, legible format to annotate on characters\nand their relationships during the consumption of fictional stories, like books or tv shows. Nothing prevents you from depicting your family tree or company org chart.\n\nBesides the format itself, which I exemplify below, I provide a parser that generates a graphviz representation of it, suitable to be rendered in popular formats such as png or pdf.\n\nI see a good application of this, besides the reader writing it as he/she goes, as the author or publisher providing a version per chapter/episode in order to aid the consumer and not spoil with too much info.\nVisiting each version allows you not only to resume where you left off but also a window into the evolution of the story.\n\n### example ppl file:\n\n```\nZeek + Camille\n  Adam\n  Sarah\n  Julia\n  Crosby\n\nAdam + Kristina\n  Haddie\n  Max\n\nSarah +/ Seth\n  Amber\n  Drew\n\nJulia + Joel\n  Sydney\n\nCrosby .. Jasmine\n  Jabbar\n```\n\n### Its output\n\nThis would output this result graphviz data: [parenthood.gv](public/graphviz/outputs/parenthood.gv).\n\nAnd using graphviz you would get:\n\n![generated png diagram](public/graphviz/outputs/parenthood.gv.png)  \n[svg diagram](public/graphviz/outputs/parenthood.gv.svg),\n[pdf diagram](public/graphviz/outputs/parenthood.gv.pdf) ...\n\nIt integrates with **Graphviz** as seen in this [demo](https://josepedrodias.github.io/parenthood/public/graphviz/demo.html).  \nIt also integrates with **Cytoscape** as seen in this [demo](https://josepedrodias.github.io/parenthood/public/cytoscape/demo.html).  \nYou can find more details about these integrations below.\n\n## The PPL format\n\nThe ppl format is a text file with a set of relationship.\n\nA relationship can be described by 2 people and an optional set of siblings\n\n```\n\u003cperson 1\u003e \u003crelationship_kind\u003e \u003cperson 2\u003e\n    \u003csibling 1\u003e\n    ...\n    \u003csibling n\u003e\n```\n\nrelationship kinds can be:\n\n- `..` seem to be getting along (cyan)\n- `+` together\n- `+/` used to be together (red)\n\nContent after a hash `#` is considered comments and ignored.\n\nThe indentation for siblings is irrelevant. Number of spaces or tabs is irrelevant.\n\n### limitations\n\nThe layout may get cluttered with too many people or people with many relationships.  \nIf you mention the same person with different names you're spawning a different person. Should be easy to spot.\n\n## installing\n\n`npm install parenthood`  \nor  \n`yarn add parenthood`\n\ndepending on what you want to do you may continue to:\n\n- [integration with Graphviz](WITH_GRAPHVIZ.md)\n- [integration with Cytoscape](WITH_CYTOSCAPE.md)\n\n## technical remarks\n\nUsing Javascript modules to share the most possible between browser and node. If you need to run with without modules, conversion to commonjs or window export is trivial.\n\nThe code itself has no dependencies. Jest brings a lot of deps along just to support mjs (sorry!).\n\nI'm not an expert in graphviz and the parser is super simple. I wanted to get the point across and contributions are welcome!\n\n## disclaimer\n\nSome Parenthood TV Series characters were used here as an example.  \nI have no affiliation to the series and don't intend to spoil. 🙏\n\n## TODOs\n\n### Technical\n\n- confirm bin works via npm\n\n### Features\n\n- support several relationships with 1 character better\n- way to group characters is groups (think venn diagram) to depict location / belonging to a group etc. Not sure yet how to do it without introducing complexity and break the layout\n\n## reference\n\n- [jest docs](https://jestjs.io/docs/en/getting-started.html)\n- [package.json spec](https://docs.npmjs.com/files/package.json)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosepedrodias%2Fparenthood","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosepedrodias%2Fparenthood","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosepedrodias%2Fparenthood/lists"}