{"id":15503836,"url":"https://github.com/kentcdodds/react-workshop-app","last_synced_at":"2025-04-06T10:10:50.962Z","repository":{"id":37584794,"uuid":"243197657","full_name":"kentcdodds/react-workshop-app","owner":"kentcdodds","description":"An abstraction for all my React workshops","archived":false,"fork":false,"pushed_at":"2022-10-17T19:30:14.000Z","size":413,"stargazers_count":149,"open_issues_count":2,"forks_count":37,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-30T09:05:37.300Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://kentcdodds.com/workshops","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kentcdodds.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-26T07:34:13.000Z","updated_at":"2024-06-28T14:19:44.000Z","dependencies_parsed_at":"2023-01-19T12:46:39.744Z","dependency_job_id":null,"html_url":"https://github.com/kentcdodds/react-workshop-app","commit_stats":null,"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentcdodds%2Freact-workshop-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentcdodds%2Freact-workshop-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentcdodds%2Freact-workshop-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kentcdodds%2Freact-workshop-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kentcdodds","download_url":"https://codeload.github.com/kentcdodds/react-workshop-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246768372,"owners_count":20830654,"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-02T09:14:50.915Z","updated_at":"2025-04-06T10:10:50.927Z","avatar_url":"https://github.com/kentcdodds.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003e@kentcdodds/react-workshop-app\u003c/h1\u003e\n\n\u003cp\u003eAn abstraction for all my React workshops\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n\u003c!-- prettier-ignore-start --\u003e\n[![Build Status][build-badge]][build]\n[![Code Coverage][coverage-badge]][coverage]\n[![version][version-badge]][package]\n[![downloads][downloads-badge]][npmtrends]\n[![MIT License][license-badge]][license]\n[![All Contributors][all-contributors-badge]](#contributors-)\n[![PRs Welcome][prs-badge]][prs]\n[![Code of Conduct][coc-badge]][coc]\n\u003c!-- prettier-ignore-end --\u003e\n\n## The problem\n\nI have several repositories for\n[my React workshops](https://kentcdodds.com/workshops)\n\n## This solution\n\nThis is a set of common abstractions I found useful in those workshop\nrepositories\n\n## Table of Contents\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Issues](#issues)\n  - [🐛 Bugs](#-bugs)\n  - [💡 Feature Requests](#-feature-requests)\n- [Contributors ✨](#contributors-)\n- [LICENSE](#license)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## Installation\n\nThis module is distributed via [npm][npm] which is bundled with [node][node] and\nshould be installed as one of your project's `dependencies`:\n\n```\nnpm install --save @kentcdodds/react-workshop-app\n```\n\n## Usage\n\nThis is intended to be used with create-react-app (but it doesn't have to be).\n\n```javascript\n// src/index.js\nimport codegen from 'codegen.macro'\n\n// eslint-disable-next-line\ncodegen`module.exports = require('@kentcdodds/react-workshop-app/codegen')`\n\n// src/setupTests.js\nimport '@kentcdodds/react-workshop-app/setup-tests'\n```\n\nThen you'll need to have those directories set up. Probably easiest to look at\none of my repos that use this.\n\n## Issues\n\n_Looking to contribute? Look for the [Good First Issue][good-first-issue]\nlabel._\n\n### 🐛 Bugs\n\nPlease file an issue for bugs, missing documentation, or unexpected behavior.\n\n[**See Bugs**][bugs]\n\n### 💡 Feature Requests\n\nPlease file an issue to suggest new features. Vote on feature requests by adding\na 👍. This helps maintainers prioritize what to work on.\n\n[**See Feature Requests**][requests]\n\n## Contributors ✨\n\nThanks goes to these people ([emoji key][emojis]):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://kentcdodds.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1500684?v=3?s=100\" width=\"100px;\" alt=\"Kent C. Dodds\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKent C. Dodds\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=kentcdodds\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=kentcdodds\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#infra-kentcdodds\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=kentcdodds\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/WojciechMatuszewski\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/26322927?v=4?s=100\" width=\"100px;\" alt=\"Wojciech Matuszewski\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWojciech Matuszewski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=WojciechMatuszewski\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=WojciechMatuszewski\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://zacjones.io\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/6188161?v=4?s=100\" width=\"100px;\" alt=\"Zac Jones\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZac Jones\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=zacjones93\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/marcosvega91\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/5365582?v=4?s=100\" width=\"100px;\" alt=\"Marco Moretti\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarco Moretti\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=marcosvega91\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=marcosvega91\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/merodiro\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/17033502?v=4?s=100\" width=\"100px;\" alt=\"Amr A.Mohammed\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmr A.Mohammed\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=merodiro\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/gustavobmichel\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/14951413?v=4?s=100\" width=\"100px;\" alt=\"Gustavo Borges Michel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGustavo Borges Michel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/issues?q=author%3Agustavobmichel\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Joyancefa\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/64249481?v=4?s=100\" width=\"100px;\" alt=\"Joyancefa\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoyancefa\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=Joyancefa\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Snaptags\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1249745?v=4?s=100\" width=\"100px;\" alt=\"Markus Lasermann\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarkus Lasermann\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=Snaptags\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=Snaptags\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.maferland.com\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/5889721?v=4?s=100\" width=\"100px;\" alt=\"Marc-Antoine Ferland\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarc-Antoine Ferland\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=maferland\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"http://peter.hozak.info/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1087670?v=4?s=100\" width=\"100px;\" alt=\"Peter Hozák\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePeter Hozák\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=Aprillion\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=Aprillion\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/dan-overton\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/846955?v=4?s=100\" width=\"100px;\" alt=\"Dan Overton\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDan Overton\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=dan-overton\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://redd.one\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14984911?v=4?s=100\" width=\"100px;\" alt=\"Artem Zakharchenko\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArtem Zakharchenko\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=kettanaito\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/0xnoob\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49793844?v=4?s=100\" width=\"100px;\" alt=\"0xnoob\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e0xnoob\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/issues?q=author%3A0xnoob\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/jcat4\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7866287?v=4?s=100\" width=\"100px;\" alt=\"Joey Cardosi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoey Cardosi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/kentcdodds/react-workshop-app/commits?author=jcat4\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors][all-contributors] specification.\nContributions of any kind welcome!\n\n## LICENSE\n\nMIT\n\n\u003c!-- prettier-ignore-start --\u003e\n[npm]: https://www.npmjs.com\n[node]: https://nodejs.org\n[build-badge]: https://img.shields.io/github/workflow/status/kentcdodds/react-workshop-app/validate/main?logo=github\u0026style=flat-square\n[build]: https://github.com/kentcdodds/react-workshop-app/actions?query=workflow%3Avalidate\n[coverage-badge]: https://img.shields.io/codecov/c/github/kentcdodds/react-workshop-app.svg?style=flat-square\n[coverage]: https://codecov.io/github/kentcdodds/react-workshop-app\n[version-badge]: https://img.shields.io/npm/v/@kentcdodds/react-workshop-app.svg?style=flat-square\n[package]: https://www.npmjs.com/package/@kentcdodds/react-workshop-app\n[downloads-badge]: https://img.shields.io/npm/dm/@kentcdodds/react-workshop-app.svg?style=flat-square\n[npmtrends]: http://www.npmtrends.com/@kentcdodds/react-workshop-app\n[license-badge]: https://img.shields.io/npm/l/@kentcdodds/react-workshop-app.svg?style=flat-square\n[license]: https://github.com/kentcdodds/react-workshop-app/blob/master/LICENSE\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs]: http://makeapullrequest.com\n[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square\n[coc]: https://github.com/kentcdodds/react-workshop-app/blob/master/other/CODE_OF_CONDUCT.md\n[emojis]: https://github.com/all-contributors/all-contributors#emoji-key\n[all-contributors]: https://github.com/all-contributors/all-contributors\n[all-contributors-badge]: https://img.shields.io/github/all-contributors/kentcdodds/advanced-react-hooks?color=orange\u0026style=flat-square\n[bugs]: https://github.com/kentcdodds/react-workshop-app/issues?utf8=%E2%9C%93\u0026q=is%3Aissue+is%3Aopen+sort%3Acreated-desc+label%3Abug\n[requests]: https://github.com/kentcdodds/react-workshop-app/issues?utf8=%E2%9C%93\u0026q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement\n[good-first-issue]: https://github.com/kentcdodds/react-workshop-app/issues?utf8=%E2%9C%93\u0026q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement+label%3A%22good+first+issue%22\n\u003c!-- prettier-ignore-end --\u003e\n","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentcdodds%2Freact-workshop-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkentcdodds%2Freact-workshop-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkentcdodds%2Freact-workshop-app/lists"}