{"id":13564244,"url":"https://github.com/koajs/workshop","last_synced_at":"2025-05-15T13:05:48.145Z","repository":{"id":18194262,"uuid":"21316961","full_name":"koajs/workshop","owner":"koajs","description":"Koa Training Workshop","archived":false,"fork":false,"pushed_at":"2025-04-14T07:37:14.000Z","size":31,"stargazers_count":442,"open_issues_count":5,"forks_count":108,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-06T23:35:37.999Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/koajs.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-06-29T05:11:39.000Z","updated_at":"2025-01-11T00:06:24.000Z","dependencies_parsed_at":"2023-01-11T19:48:01.770Z","dependency_job_id":"9fb18149-aa80-4449-a57f-d356c3b8eb15","html_url":"https://github.com/koajs/workshop","commit_stats":{"total_commits":8,"total_committers":6,"mean_commits":"1.3333333333333333","dds":0.75,"last_synced_commit":"5c251cc92d7ab19af1ea907c9b005af0bb175be4"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koajs%2Fworkshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koajs%2Fworkshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koajs%2Fworkshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koajs%2Fworkshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koajs","download_url":"https://codeload.github.com/koajs/workshop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254346624,"owners_count":22055808,"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-08-01T13:01:28.532Z","updated_at":"2025-05-15T13:05:48.125Z","avatar_url":"https://github.com/koajs.png","language":"JavaScript","readme":"# koa\n\nIn this workshop, you will learn the basics of [koa](https://github.com/koajs/koa),\n[Express'](https://github.com/visionmedia/express) spiritual successor.\nThis workshop was created for the [2014 LXJS conference in Lisbon, Portugal](https://github.com/lxjs/training-koa),\nand will be continuously maintained.\nIf you have any questions or have suggestions for additional exercises,\nplease let us know!\n\n## Resources\n\nThis workshop assumes you've had experience with:\n\n- node.js\n- Express, Restify, or any similar node.js frameworks\n- Asynchronous programming - callbacks or promises\n\nES6 generators are relatively new.\nThis training will only give you a superficial look into generators.\nYou should read these resources before and after doing this workshop:\n\n- [co](https://github.com/visionmedia/co) - the control flow engine used by koa\n- [koajs](http://koajs.com) - the official web page for koa\n- [koa examples](https://github.com/koajs/examples) - a lot of examples for koa\n- http://www.jongleberry.com/koa.html - some blog posts on koa\n\n## Instructions\n\nInstall node 0.11.13+. Using `nvm`, you can install it like this:\n\n```bash\nnvm install 0.11.13\nnvm use 0.11.13\n```\n\nYou can also install it directly from http://nodejs.org\nor using various other node version managers such as [n](https://github.com/visionmedia/n).\n\nThen you must install this workshop.\nYou can either fork this workshop (recommended) or clone it:\n\n```bash\ngit clone git://github.com/koajs/workshop\ncd workshop\n```\n\nThen install all the dependencies:\n\n```bash\nnpm install\nnpm install -g mocha\n```\n\nGo through each training, which are stored in folders, in numerical older.\nRead the `README` file, edit the `index.js` files, then run each test by executing the following:\n\n```bash\nmocha --harmony-generators test.js\n```\n\nIf you get an error message like `SyntaxError: Unexpected token *`,\nthis means you didn't run the the process with `--harmony-generators`.\n\n## Learning more than just Koa\n\nAlthough writing tests is not part of this workshop,\nyou should still learn how they work.\nAn important part of creating apps is creating the tests for it.\nInspect the `test.js` files and see how [supertest](https://github.com/visionmedia/supertest)\nand [mocha](https://github.com/visionmedia/mocha) are used,\nboth of which are used in Koa, Express, and libraries and frameworks.\nYou will also see what is expected from your sample apps by reading the tests.\n\nAfter you finish each training,\nyou may want to `git commit` so you have a history of what you've done:\n\n```bash\ngit commit -a -m \"i finished training 1!\"\n```\n\nMany small commits is good practice!\n\n## Contact\n\n* [Jonathan Ong](https://github.com/jonathanong) - [@jongleberry](https://twitter.com/jongleberry)\n","funding_links":[],"categories":["JavaScript","Uncategorized","Middleware"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoajs%2Fworkshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoajs%2Fworkshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoajs%2Fworkshop/lists"}