{"id":21835793,"url":"https://github.com/vtex/vtex-courses","last_synced_at":"2025-10-11T23:32:43.821Z","repository":{"id":39851386,"uuid":"282037024","full_name":"vtex/vtex-courses","owner":"vtex","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-24T16:39:37.000Z","size":1176,"stargazers_count":22,"open_issues_count":14,"forks_count":49,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-11T23:32:39.708Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/vtex.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-23T19:22:14.000Z","updated_at":"2025-09-24T16:39:40.000Z","dependencies_parsed_at":"2025-04-14T09:17:29.318Z","dependency_job_id":"b231c7b4-fb4a-45e7-b522-c950e9dd5535","html_url":"https://github.com/vtex/vtex-courses","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vtex/vtex-courses","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex%2Fvtex-courses","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex%2Fvtex-courses/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex%2Fvtex-courses/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex%2Fvtex-courses/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vtex","download_url":"https://codeload.github.com/vtex/vtex-courses/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex%2Fvtex-courses/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279009395,"owners_count":26084580,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"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":"2024-11-27T20:24:44.553Z","updated_at":"2025-10-11T23:32:43.803Z","avatar_url":"https://github.com/vtex.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VTEX Courses\n\n## Introduction\n\nVTEX Courses is a repo made with the intent of unifying contents of courses to be provided for partners. It's final goal is to build a learning path currently focused on enhancing VTEX IO knowledge.\n\n![image](https://user-images.githubusercontent.com/18701182/92618379-ad04a380-f296-11ea-8ed2-ca4c8abb7668.png)\n\n## Structure\n\nThe project is divided between `src` and `courses`.\n\nThe `src/` is the current script necessary to upload the contents in whichever platform the course is hosted. The idea, therefore, is to not tie the content to a specific platform.\n\nThe `course/` is where the contents of the courses are located, each child folder is a different course, inside each course there are inner folders that represent steps, the content of the step is in a `{language}.md` file.\n\nInside each step there is an `answersheet/` folder of which each file represents what you expect from file diffs.\n\nOn the root of one course folder there are three specific files: `metadata.json`, `overview.md` and `summary.json`.\n\n- The overview is used for the course landing page;\n- The summary is used to control the steps order, title and description;\n- The metadata is used to create the learning path assets\n\n```\n|_courses/\n  |_course-one/\n    |_step-one/\n      |_answersheet/\n        |_file-1-changed.ts\n        |_file-2-changed.ts\n      |_pt.md\n    |_step-two/\n      |_answersheet/\n        |_file-1-changed.ts\n        |_file-2-changed.ts\n      |_pt.md\n```\n\n## Contributing\n\n### Courses\n\nTo create a new course, you just need to go through the following steps:\n\n1. Create a new folder within the `courses/` folder;\n\n2. Create the `overview.md`, the `metadata.json` and the `summary.json` files:\n\n`metadata.json` file example:\n\n```\n{\n  \"title\": \"Layouts Complexos\",\n  \"description\": \"Componha layouts complexos e diversos com os blocos de composição e os blocos básicos.\",\n  \"image\": \"https://appliancetheme.vtexassets.com/assets/app/src/complex_layout_course_icon___dcea05389ebe234d38cc35ec721fa346.svg\"\n}\n```\n\n`summary.json` file example:\n\n```\n[\n  {\n    \"folder\": \"01_introducing-layout\",\n    \"title\": {\n      \"pt\": \"Apresentando blocos de layout\"\n    },\n    \"description\": {\n      \"pt\": \"Vamos criar layouts complexos de forma simples\"\n    }\n  },\n  {\n    \"folder\": \"02_flexlayout\",\n    \"title\": {\n      \"pt\": \"Flex layout\"\n    },\n    \"description\": {\n      \"pt\": \"Criando layouts de grid com blocos básicos\"\n    }\n  }\n]\n```\n\n3. Create as many folders for steps as you need, within those folders you might create language files for translations of the steps:\n\n```\n|_new-course/\n  |_step-one/\n    |_pt.md\n    |_en.md\n  |_step-two/\n    |_pt.md\n    |_en.md\n  |_step-three/\n    |_pt.md\n    |_en.md\n  |_step-four/\n    |_pt.md\n    |_en.md\n```\n\n4. In the end, to add the answersheets to the steps, you need to add an `answersheet/` folder with as many files as you need to create the answersheet link:\n\n```diff\n|_new-course/\n  |_step-one/\n+   |_answersheet/\n+     |_one-file.ts\n+     |_other-file.ts\n    |_pt.md\n    |_en.md\n  |_step-two/\n    |_pt.md\n    |_en.md\n  |_step-three/\n    |_pt.md\n    |_en.md\n  |_step-four/\n    |_pt.md\n    |_en.md\n```\n\n5. Optional: If you want to, you can create a challenge for your course, that will be displayed at the end of the course, to do so, just create a `challenge.md` file at the root of a course:\n\n```diff\n|_new-course/\n  |_step-one/\n   |_answersheet/\n     |_one-file.ts\n     |_other-file.ts\n    |_pt.md\n    |_en.md\n  |_step-two/\n    |_pt.md\n    |_en.md\n  |_step-three/\n    |_pt.md\n    |_en.md\n  |_step-four/\n    |_pt.md\n    |_en.md\n+ challenge.md\n```\n\n6. Finally, add your course to the `course/index.json` file in the order you think it fits the best:\n\n```diff\n[\n  {\n    \"folder\": \"basic-blocks\",\n    \"isActive\": true\n  },\n+ {\n+   \"folder\": \"layout-blocks\",\n+   \"isActive\": true\n+ },\n  {\n    \"folder\": \"styles-course\",\n    \"isActive\": true\n  },\n  {\n    \"folder\": \"content-workflow\",\n    \"isActive\": true\n  },\n  {\n    \"folder\": \"store-block\",\n    \"isActive\": true\n  },\n  {\n    \"folder\": \"service-course\",\n    \"isActive\": true\n  }\n]\n```\n\n### Script\n\nThe script is currently created to distribute the courses on a ReadMe.io portal, it is therefore an integration script that upload the assets to the correct places and creating a learning path user flow.\n\nIt is divided in:\n\n- `clients/` responsible for integrating with the services involved;\n- `script/` responsible for the script submission steps;\n- `templates/` responsible for creating the markdown and html templates of the steps;\n- `utils/` mostly used for assets retrieval and slugifying of `courses/` folder\n\n## Running\n\nTo run and see the results of a new course, you just have to run `yarn deploy` on the root folder, it'll trigger the `index.ts` file and run the script steps.\n\nThe course will be available at:\n\n[Learning Center](https://learn.vtex.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvtex%2Fvtex-courses","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvtex%2Fvtex-courses","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvtex%2Fvtex-courses/lists"}