{"id":17146165,"url":"https://github.com/drew2a/ivory-tower","last_synced_at":"2026-01-06T03:05:34.751Z","repository":{"id":106393998,"uuid":"304053203","full_name":"drew2a/ivory-tower","owner":"drew2a","description":"🗼 collection of software development tips and principles","archived":false,"fork":false,"pushed_at":"2024-09-09T15:45:23.000Z","size":15,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-29T15:50:43.582Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/drew2a.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-10-14T15:12:49.000Z","updated_at":"2025-01-29T00:06:47.000Z","dependencies_parsed_at":"2024-12-02T02:16:14.015Z","dependency_job_id":null,"html_url":"https://github.com/drew2a/ivory-tower","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/drew2a%2Fivory-tower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drew2a%2Fivory-tower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drew2a%2Fivory-tower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drew2a%2Fivory-tower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drew2a","download_url":"https://codeload.github.com/drew2a/ivory-tower/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245250905,"owners_count":20584795,"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":[],"created_at":"2024-10-14T21:07:59.656Z","updated_at":"2026-01-06T03:05:29.705Z","avatar_url":"https://github.com/drew2a.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ivory Tower\n\n🗼 collection of software development tips and principles\n\n## Principles of Design\n\n\u003e “It is not enough for code to work.”\n\u003e\n\u003e ― Robert C. Martin\n\n1. DRY – Don’t Repeat Yourself\n1. KISS – Keep It Simple Stupid\n1. YAGNI – You Aren’t Gonna Need It\n1. SOLID:  \n    * S – Single Responsibility Principle\n    * O – Open-Closed Principle\n    * L – Liskov Substitution Principle\n    * I – Interface Segregation Principle\n    * D – Dependency Inversion Principle\n\nRef: [SOLID in wikipedia](https://en.wikipedia.org/wiki/SOLID)\n\nRef: [Summary of 'Clean code' by Robert C. Martin](https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29)\n\n## Code Style\n\nIf you don't have your own guide, it's a good idea to \n[adhere Google code style guides](https://google.github.io/styleguide/).\n\nIf you have your own guide, please keep it as general as possible.\n\n### Commit message\n\u003e Describe your changes in imperative mood, e.g. \"make xyzzy do frotz\" instead of \"[This patch] makes xyzzy do frotz\" or \"[I] changed xyzzy to do frotz\", as if you are giving orders to the codebase to change its behavior.\n\nAs is described at [Documentation/SubmittingPatches in the Git repo](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/SubmittingPatches?id=HEAD#n133)\n\n#### Alternative commit message notation\nA specification for adding human and machine readable meaning to commit messages: https://www.conventionalcommits.org/en/v1.0.0/\n\n## TODO Comments\n\nTODOs should include the string TODO in all caps, followed by the name, or other \nidentifier of the person who can best provide context about the problem \nreferenced by the TODO, in parentheses.\n\nExample:\n\n```\n// TODO(drew2a) Add todo convention to CONTRIBUTING.md\n```\n\n## Branching Model\n\n* Use [OneFlow](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow) by default\n* While merge, use `rebase + merge –no–ff` ([more information](https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow#option-3-rebase-merge-no-ff))\n* [Merge or rebase](https://www.atlassian.com/git/articles/git-team-workflows-merge-or-rebase)\n\n\n## Branch naming convention\n\n* Use slash to separate groups of branches\n* Use a ticket key in a branch name\n\nExample\n\n```\nfeature/123\nfeature/657-add-travis-ci\n\nfix/741\n\nrelease/1.2\n```\n\n## PR\n\n* PR should improve overall code health of the system, even if the CL isn’t perfect\n* Instead of seeking perfection, what a reviewer should seek is continuous improvement\n* Review should be fast (1 day maximum)\n\nMore information: [Pull Request](pull_request.md)\n\n## Bookmarks\n\n* Key words for use in RFCs to Indicate Requirement Levels: https://datatracker.ietf.org/doc/html/rfc2119\n* Large-Scale Scrum: https://less.works/\n* Getting Real: https://basecamp.com/gettingreal \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrew2a%2Fivory-tower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrew2a%2Fivory-tower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrew2a%2Fivory-tower/lists"}