{"id":16124047,"url":"https://github.com/itaditya/workshop-platform","last_synced_at":"2025-03-18T12:31:36.969Z","repository":{"id":39727392,"uuid":"311678168","full_name":"itaditya/workshop-platform","owner":"itaditya","description":"A platform to have code workshops","archived":false,"fork":false,"pushed_at":"2023-01-06T16:10:41.000Z","size":1959,"stargazers_count":30,"open_issues_count":23,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-28T09:21:01.734Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://workshop-platform.netlify.app/exercises/exercise-1","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/itaditya.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-10T14:08:41.000Z","updated_at":"2023-03-13T01:52:32.000Z","dependencies_parsed_at":"2023-02-06T06:31:19.055Z","dependency_job_id":null,"html_url":"https://github.com/itaditya/workshop-platform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"itaditya/template-next-tailwind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itaditya%2Fworkshop-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itaditya%2Fworkshop-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itaditya%2Fworkshop-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itaditya%2Fworkshop-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itaditya","download_url":"https://codeload.github.com/itaditya/workshop-platform/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243926063,"owners_count":20369911,"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-09T21:19:34.790Z","updated_at":"2025-03-18T12:31:36.589Z","avatar_url":"https://github.com/itaditya.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workshop Platform\nPeople understand new things when they \"learn by doing\". Its time our courses and **workshops** start reflecting that. Make exercises where you ask learners to build something. Then add helpful notes and your version so they try first and see what they missed.\n\n![Demo](public/demo.jpg)\n\n## Quick Start\n\n[![Open in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/itaditya/workshop-platform?file=/src/pages/exercises/exercise-1/playground.js)\n\n## Advanced Setup\n\nFork and clone this repo and then do the following-\n\n1. Install dependencies-\n\n```sh\nyarn install\n```\n\n2. Start frontend \u0026 server in **separate terminals**.\n\n```sh\n# Tab 1\nyarn dev\n\n# Tab 2\nyarn server\n```\n\nOpen the project on `http://localhost:3000/exercises/exercise-1`.\n\n### For learners\n\nIf you want to solve Exercise 1 then open `src/pages/exercises/exercise-1/playground.js`. When you edit the component it should update in the browser in real time.\n\nIn the browser you can see the notes on the right-hand side. You can see the tutor's solution by switching tabs. Their code will be present in the `challenge.js` alongside your file.\n\n**Ask Assistant for help**\n\nRunning `yarn assistant` can inform you about the common issues in your `playground.js` code. If you use a modern editor like VS Code then it will show squiggly lines below the problematic code as well.\n\n**Get your code evaluated**\n\nRunning `yarn evaluate` will test if your code satisfies all the requirements of the challenge. By running `yarn evaluate --watch` you can re-evaluate automatically as soon as you change some code in `playground.js`.\n\n### For Tutors\n\nExercise lives in folder `src/pages/exercises/exercise-1`. For each exercise you need to add notes in `notes.mdx` and the challenge in `challenge.js`.\n\n**Create new exercise with**\n\n```sh\nyarn create-exercise\n```\n\n**Create evaluator tests**\n\nYou can also add an evaluator for each exercise like we do in `src/exercise-tests` folder. Run it with `yarn test-challenges`.\n\n**Use JSON APIs**\n\nMany challenges go along the lines of - fetch list of blog posts from an API, show the data in UI. For that there is a ready-made API server with various collections. Run it with `yarn server`.\n\nUnder the hood it uses `json-server` package so you can GET requests with pagination, filter and relations support.\n\n* [Example Request](https://workshop-platform.netlify.app/.netlify/functions/api/users?_limit=3)\n* [Documentation on API parameters](https://github.com/typicode/json-server#routes)\n\nAvailable resources\n\n```\nhttp://localhost:9191/gallery\nhttp://localhost:9191/products\nhttp://localhost:9191/users\nhttp://localhost:9191/tweets\nhttp://localhost:9191/posts\n```\n\nYou can also do mutations like POST request which would keep the side-effects in memory till the server is running.\n\n**Lint Code**\n\nLint your challenges with `yarn lint-challenges`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitaditya%2Fworkshop-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitaditya%2Fworkshop-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitaditya%2Fworkshop-platform/lists"}