{"id":19573173,"url":"https://github.com/erickwendel/10-design-patterns-for-js","last_synced_at":"2025-04-27T05:32:08.412Z","repository":{"id":184241902,"uuid":"670394032","full_name":"ErickWendel/10-design-patterns-for-js","owner":"ErickWendel","description":"code examples of my 10 must-know design patterns for JavaScript Developers talk","archived":false,"fork":false,"pushed_at":"2023-07-28T14:18:29.000Z","size":66,"stargazers_count":106,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-15T04:12:07.291Z","etag":null,"topics":["builder-pattern","design-patterns","javascript","node-test-runner","nodejs","refactoring-exercise","test","testing"],"latest_commit_sha":null,"homepage":"https://bit.ly/10-design-patterns-for-js-devs","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/ErickWendel.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}},"created_at":"2023-07-25T00:52:46.000Z","updated_at":"2024-02-20T14:45:28.000Z","dependencies_parsed_at":"2023-07-27T16:36:14.851Z","dependency_job_id":null,"html_url":"https://github.com/ErickWendel/10-design-patterns-for-js","commit_stats":null,"previous_names":["erickwendel/10-design-patterns-for-js"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2F10-design-patterns-for-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2F10-design-patterns-for-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2F10-design-patterns-for-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErickWendel%2F10-design-patterns-for-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErickWendel","download_url":"https://codeload.github.com/ErickWendel/10-design-patterns-for-js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224060973,"owners_count":17249141,"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":["builder-pattern","design-patterns","javascript","node-test-runner","nodejs","refactoring-exercise","test","testing"],"created_at":"2024-11-11T06:32:30.342Z","updated_at":"2024-11-11T06:32:31.604Z","avatar_url":"https://github.com/ErickWendel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 10-design-patterns-for-js\n\n\nHi there! This is the repo containing the code examples from my **10 must-know design patterns for JavaScript Developers** talk.\n\nFirst of all, leave a star in this repo ⭐️\n\nYou'd also check out the [slides presentation](https://bit.ly/10-design-patterns-for-js-devs) and soon I'll update this repo with the video presenting all the tips.\n\n\u003cimg src=\"https://github.com/ErickWendel/10-design-patterns-for-js/assets/8060102/a4f0dd97-bb27-411f-81a6-a5c7bb6ff3f6\" width=800 /\u003e\n\n\n\n## Running Examples\n\nEach folder represents a step-by-step refactoring of an application to use the Design Patterns I show in this talk.\n\n- [api](./api) - This is the API required to run all projects\n- [app-pt00-initial-code](./app-pt00-initial-code) - Initial code with bad practices\n- [app-pt01-n-tier-factory-dependency-injection](./app-pt01-n-tier-factory-dependency-injection) - splits the application code into different responsibilities and uses dependency injection\n- [app-pt02-abstract-factory-builder](./app-pt02-abstract-factory-builder) - uses the abstract factory to create an application that runs in both terminal and web and uses the builder design pattern to build the CLI UI\n- [app-pt03-test-data-builder](./app-pt03-test-data-builder) - uses the test data builder design pattern to create modular tests\n- [app-pt04-observer-decorator-observer](./app-pt04-observer-decorator-observer) - uses the observer design pattern to send analytics and log and also uses the decorator pattern to measure performance in both web and node.js app\n- [app-pt05-async-iterator-stream](./app-pt05-async-iterator-stream) - uses the iterator design pattern to consume streams and render data on demand\n\n## Thanks!\n\nConsider mentioning me on [twitter](https://twitter.com/erickwendel_/), [linkedin](https://linkedin.com/in/erickwendel/) or [instagram](https://www.instagram.com/erickwendel_/) about the experiments and ideas this repo may have brought to you.\n\nEnjoy!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2F10-design-patterns-for-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferickwendel%2F10-design-patterns-for-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferickwendel%2F10-design-patterns-for-js/lists"}