{"id":19075686,"url":"https://github.com/cisco/zepster","last_synced_at":"2025-10-30T19:07:01.082Z","repository":{"id":57478175,"uuid":"309863005","full_name":"cisco/zepster","owner":"cisco","description":"Generate database schema, documentation, and other artifacts from an Entity-Relationship diagram, which is created as a GraphML file using the yEd graph editor.","archived":false,"fork":false,"pushed_at":"2020-11-07T02:16:42.000Z","size":1003,"stargazers_count":17,"open_issues_count":1,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-01T16:13:35.468Z","etag":null,"topics":["database","database-design","database-management","database-schema","databases","entity-relationship","entity-relationship-diagram","entity-relationship-diagrams","entity-relationship-models","entity-relationships","graphml","mde","model-driven-engineering","python","schema-design","yed"],"latest_commit_sha":null,"homepage":"","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/cisco.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}},"created_at":"2020-11-04T02:42:09.000Z","updated_at":"2024-03-13T07:38:56.000Z","dependencies_parsed_at":"2022-09-10T04:23:48.748Z","dependency_job_id":null,"html_url":"https://github.com/cisco/zepster","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cisco/zepster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fzepster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fzepster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fzepster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fzepster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cisco","download_url":"https://codeload.github.com/cisco/zepster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco%2Fzepster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263210705,"owners_count":23431185,"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":["database","database-design","database-management","database-schema","databases","entity-relationship","entity-relationship-diagram","entity-relationship-diagrams","entity-relationship-models","entity-relationships","graphml","mde","model-driven-engineering","python","schema-design","yed"],"created_at":"2024-11-09T01:55:42.486Z","updated_at":"2025-10-30T19:07:00.999Z","avatar_url":"https://github.com/cisco.png","language":"Python","readme":"\u003c!--\nCopyright 2020 Cisco Systems, Inc. and its affiliates.\n \nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n \n    http://www.apache.org/licenses/LICENSE-2.0\n \nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License\n--\u003e\n\n# Zepster: Model-Driven Engineering Toolset for Data\n\nZepster implements \n[Model-Driven Engineering (MDE)](https://en.wikipedia.org/wiki/Model-driven_engineering)\nfor data.  It creates a consistent\nset of data-related artifacts to drive development with \n- better alignment among business stakeholders and developers\n- fewer bugs\n- increased productivity\n\n## Summary\n\nZepster lets you:\n\n- Use \n[Entity-Relationship Modeling](https://en.wikipedia.org/wiki/Entity–relationship_model)\nto describe entitites, attributes, and the relationships between entities in an\n[Entity-Relationship Diagram (ERD)](http://www2.cs.uregina.ca/~bernatja/crowsfoot.html)\n- Convert ERDs into Entity-Relationship Markup Language (ERML) files\n- Generate data-related files from the ERML, such as:\n  - Relational database schema\n  - Database catalog\n  - Python enum definitions\n\n## Details\n\n### Entity-Relationship Modeling Using yEd Graph Editor\n\nFirst, create an ERD for your business use case, using \n[yEd](https://www.yworks.com/products/yed) \ngraph editor.\nThe yEd application is free and is available for MacOS, Linux, and Windows.\n\nWith yEd you can create a diagram that shows\n- business entities\n- their attributes\n- how entities are related to each other\n\nThe resulting diagram is saved as a \n[GraphML](http://graphml.graphdrawing.org/index.html)\nfile, which is an industry-standard format for graphs.\n\n### Generate Entity-Relationship Markup Language (ERML) File\n\nNext, generate an Entity-Relationship Markup Language (ERML) file from the\nsaved GraphML diagram file.  To do this, use the ```generml``` script:\n\n```\nUsage: generml.py [OPTIONS]\n\n  Read an Entity-Relationship diagram created by the yEd graph editor and\n  convert it into Entity-Relationship Markup Language\n\n  References:\n  yEd - https://www.yworks.com/products/yed\n  GraphML - http://graphml.graphdrawing.org/index.html\n\nOptions:\n  --input TEXT    Input GraphML file (default is standard input, also\n                  represented by a dash \"-\")\n  --output TEXT   Output ERML file (default is standard output, also\n                  represented by a dash \"-\")\n  --overwrite     If specified, overwrite the output file if it already exists\n  --logging TEXT  Set logging to the specified level: NOTSET, DEBUG, INFO,\n                  WARNING, ERROR, CRITICAL\n  --help          Show this message and exit.\n```\n\nThe ERML is an intermediate language that decouples downstream tools (such\nas the relational database schema generator) from\nthe specific graph editor tool (yEd).  In theory, any tool that creates\nERML can serve as an input source for generating downstream files.\n\nAfter generating the ERML file, you can generate a number of things, described below.\n\n### Generate SQL Relational Database Schema Definitions\n\nNext, you can generate the schema definitions that define the tables for \na relational database, using SQL.  To do this, use the ```genschema``` script:\n\n```\nUsage: genschema.py [OPTIONS]\n\n  Read an Entity-Relationship Markup Language file and write a database\n  schema SQL file\n\nOptions:\n  --input TEXT    Input Entity-Relationship Markup Language file (default is\n                  standard input, also represented by a dash \"-\")\n  --output TEXT   Output schema definition file (default is standard output,\n                  also represented by a dash \"-\")\n  --overwrite     If specified, overwrite the output file if it already exists\n  --logging TEXT  Set logging to the specified level: NOTSET, DEBUG, INFO,\n                  WARNING, ERROR, CRITICAL\n  --dialect TEXT  Set the database dialect: (currently only \"crdb\")\n  --help          Show this message and exit.\n```\n\n### Generate Database Catalog Using Markdown\n\nYou can also generate a database catalog to document the database for users.\nThe catalog is created using GitHub-flavored\n[Markdown](https://en.wikipedia.org/wiki/Markdown)\nformat.  To do this, use the ```gencatalog``` script:\n\n```\nUsage: gencatalog.py [OPTIONS]\n\n  Read an Entity-Relationship Markup Language\n  file and write a data catalog output file\n\nOptions:\n  --input TEXT    Input Entity-Relationship Markup Language file (default is\n                  standard input, also represented by a dash \"-\")\n  --output TEXT   Output catalog file (default is standard output, also\n                  represented by a dash \"-\")\n  --overwrite     If specified, overwrite the output file if it already exists\n  --logging TEXT  Set logging to the specified level: NOTSET, DEBUG, INFO,\n                  WARNING, ERROR, CRITICAL\n  --format TEXT   Set the catalog format: (currently only \"md\")\n  --help          Show this message and exit.\n```\n\n### Generate Python Enum Definitions\n\nYou can also generate Python enum definitions from the ERML file.  This can\nreduce application bugs.  To do this, use the ```genpyenums``` script:\n\n```\nUsage: genpyenums.py [OPTIONS]\n\n  Generate Python enum declarations from an Entity-Relationship Markup\n  Language (ERML) file\n\nOptions:\n  --input TEXT    Input Entity-Relationship Markup Language file (default is\n                  standard input, also represented by a dash \"-\")\n  --output TEXT   Output schema definition file (default is standard output,\n                  also represented by a dash \"-\")\n  --overwrite     If specified, overwrite the output file if it already exists\n  --logging TEXT  Set logging to the specified level: NOTSET, DEBUG, INFO,\n                  WARNING, ERROR, CRITICAL\n  --help          Show this message and exit.\n```\n\n---\n\nCopyright 2020 Cisco Systems, Inc. and its affiliates.\n \nLicensed under the Apache License, Version 2.0 (the \"License\");  \nyou may not use this file except in compliance with the License.  \nYou may obtain a copy of the License at  \n \n    http://www.apache.org/licenses/LICENSE-2.0\n \nUnless required by applicable law or agreed to in writing, software  \ndistributed under the License is distributed on an \"AS IS\" BASIS,  \nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  \nSee the License for the specific language governing permissions and  \nlimitations under the License  \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco%2Fzepster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcisco%2Fzepster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco%2Fzepster/lists"}