{"id":51050215,"url":"https://github.com/chicode/codingworkshops","last_synced_at":"2026-06-22T16:32:41.391Z","repository":{"id":33454504,"uuid":"149199838","full_name":"chicode/codingworkshops","owner":"chicode","description":null,"archived":false,"fork":false,"pushed_at":"2022-12-09T11:56:26.000Z","size":5355,"stargazers_count":10,"open_issues_count":51,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-02T08:22:24.335Z","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":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chicode.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":"2018-09-17T23:14:22.000Z","updated_at":"2020-12-26T06:33:21.000Z","dependencies_parsed_at":"2022-09-20T05:14:43.204Z","dependency_job_id":null,"html_url":"https://github.com/chicode/codingworkshops","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/chicode/codingworkshops","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chicode%2Fcodingworkshops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chicode%2Fcodingworkshops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chicode%2Fcodingworkshops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chicode%2Fcodingworkshops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chicode","download_url":"https://codeload.github.com/chicode/codingworkshops/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chicode%2Fcodingworkshops/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34657893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2026-06-22T16:32:41.318Z","updated_at":"2026-06-22T16:32:41.378Z","avatar_url":"https://github.com/chicode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# codingworkshops\n\n## Project Structure\n```\n│\n└─install\n    Files used for installing on the server\n\n└─public\n    Global public files, like index.html and favicon\n\n└─scripts\n    Dev scripts, pretty useless\n\n└─src\n    └──codingworkshops\n        Vue code for all the codingworkshops UI (pages, CodeAcademy-like instruction slides).\n\n    └──components\n       Global Vue components\n\n    └──nico\n        Vue code for the nico editor. This includes code for all the tabs (code editor and image editors), and also Python compilation, transformation, and running.\n\n    └──styles\n        Global styles\n\n    main.js\n        Main entry point\n\n    rest.js\n        Custom REST API request \"framework\". See below.\n\n    endpoints.js\n        Endpoint definitions for rest.js\n\n    globals.js\n        Debugging globals so you can write 'c' instead of 'console'\n\n    store.js\n        Global Vuex store. Vuex is really cool because it lets you have 'modules' which have local state but can be accessed from outside. This is how all state in this project is stored. This file combines the modules from codingworkshops and nico.\n\n    generateSet.js\n        Convenience function for automatically generating setters for Vuex.\n\n    directives.js\n        Global Vue directives.\n\n    auth.js\n        Authentication \"framework\". Adds a \"$auth\" property to Vue components and Vuex so that it's easier to login/logout.\n```\n\n## Rest.js\nMaking requests to the server produces a lot of boilerplate-y code, so this is really just a mixin that removes some of the boilerplate that's needed for page components that need information from the server, like the list of workshops. A component can specify the endpoint it needs in a `rest` key, and then the information is automatically put in `$rest` and loading is tracked in `$rest.loading`. `endpoints.js` contains a mapping of endpoint keys that are used in components to actual endpoints.\n\n## JS style\nPlease use eslint. In general, use lodash/pipe operators everywhere you can (they significantly improve the quality of your code. I strongly recommend learning lodash.)\n\n## CSS\nThe CSS in this project follows a slightly abnormal convention: for all simple styles, like margins and font colors, use inline [bootstrap classes](https://getbootstrap.com/docs/4.3/utilities/). This leads to more maintainable html because you don't have to create CSS classes for every little style.\n\nThe same applies for flexbox. Use `d-flex` when you just want elements side-by-side, or Bootstrap's `row` when you need those elements to be responsive.\n\nWhen you notice that you're writing \u003e6 inline classes for a certain element, you should probably separate them into a scoped Vue component style tag. When you notice that there's a lot of repeating styles that have to do with the theme, you should separate those into the `styles` folder and declare a global class. That goes `index.scss`.\n\nThe `.styl` stylus files that are still floating around are from before I started using bootstrap, and still exist because I was too lazy to rewrite the Nico styles. TODO this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchicode%2Fcodingworkshops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchicode%2Fcodingworkshops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchicode%2Fcodingworkshops/lists"}