Giter Club home page Giter Club logo

vtex-courses's Introduction

VTEX Courses

Introduction

VTEX 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.

image

Structure

The project is divided between src and courses.

The 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.

The 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.

Inside each step there is an answersheet/ folder of which each file represents what you expect from file diffs.

On the root of one course folder there are three specific files: metadata.json, overview.md and summary.json.

  • The overview is used for the course landing page;
  • The summary is used to control the steps order, title and description;
  • The metadata is used to create the learning path assets
|_courses/
  |_course-one/
    |_step-one/
      |_answersheet/
        |_file-1-changed.ts
        |_file-2-changed.ts
      |_pt.md
    |_step-two/
      |_answersheet/
        |_file-1-changed.ts
        |_file-2-changed.ts
      |_pt.md

Contributing

Courses

To create a new course, you just need to go through the following steps:

  1. Create a new folder within the courses/ folder;

  2. Create the overview.md, the metadata.json and the summary.json files:

metadata.json file example:

{
  "title": "Layouts Complexos",
  "description": "Componha layouts complexos e diversos com os blocos de composição e os blocos básicos.",
  "image": "https://appliancetheme.vtexassets.com/assets/app/src/complex_layout_course_icon___dcea05389ebe234d38cc35ec721fa346.svg"
}

summary.json file example:

[
  {
    "folder": "01_introducing-layout",
    "title": {
      "pt": "Apresentando blocos de layout"
    },
    "description": {
      "pt": "Vamos criar layouts complexos de forma simples"
    }
  },
  {
    "folder": "02_flexlayout",
    "title": {
      "pt": "Flex layout"
    },
    "description": {
      "pt": "Criando layouts de grid com blocos básicos"
    }
  }
]
  1. Create as many folders for steps as you need, within those folders you might create language files for translations of the steps:
|_new-course/
  |_step-one/
    |_pt.md
    |_en.md
  |_step-two/
    |_pt.md
    |_en.md
  |_step-three/
    |_pt.md
    |_en.md
  |_step-four/
    |_pt.md
    |_en.md
  1. 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:
|_new-course/
  |_step-one/
+   |_answersheet/
+     |_one-file.ts
+     |_other-file.ts
    |_pt.md
    |_en.md
  |_step-two/
    |_pt.md
    |_en.md
  |_step-three/
    |_pt.md
    |_en.md
  |_step-four/
    |_pt.md
    |_en.md
  1. 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:
|_new-course/
  |_step-one/
   |_answersheet/
     |_one-file.ts
     |_other-file.ts
    |_pt.md
    |_en.md
  |_step-two/
    |_pt.md
    |_en.md
  |_step-three/
    |_pt.md
    |_en.md
  |_step-four/
    |_pt.md
    |_en.md
+ challenge.md
  1. Finally, add your course to the course/index.json file in the order you think it fits the best:
[
  {
    "folder": "basic-blocks",
    "isActive": true
  },
+ {
+   "folder": "layout-blocks",
+   "isActive": true
+ },
  {
    "folder": "styles-course",
    "isActive": true
  },
  {
    "folder": "content-workflow",
    "isActive": true
  },
  {
    "folder": "store-block",
    "isActive": true
  },
  {
    "folder": "service-course",
    "isActive": true
  }
]

Script

The 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.

It is divided in:

  • clients/ responsible for integrating with the services involved;
  • script/ responsible for the script submission steps;
  • templates/ responsible for creating the markdown and html templates of the steps;
  • utils/ mostly used for assets retrieval and slugifying of courses/ folder

Running

To 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.

The course will be available at:

Learning Center

vtex-courses's People

Contributors

barbara-celi avatar btarbell avatar carolinamenezes avatar darthhunterous avatar dependabot[bot] avatar fabriziofbarros avatar felipealmeidacorrea avatar felipefadul avatar gabriel-ns avatar georgebrindeiro avatar gris avatar gustavo-almeida avatar htadashi avatar jadsonluan avatar jhelison avatar juliarocha avatar korisantosh avatar kylechallis avatar lolodurante avatar lucis avatar mada-vtex avatar marcellasiqueira avatar mariana-caetano avatar matheus-delazeri avatar mmartyn avatar ricardoaerobr avatar simmbiote avatar suemyfagundes avatar underscoreshift avatar victorferreiramartins avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

vtex-courses's Issues

Layout condicional nao funciona com a versao 2.x

Se vc usar o "vtex.condition-layout": "2.x", o codigo precisa ser atualizado e mesmo assim da o seguinte erro
TypeError: Cannot read property 'reduce' of undefined
at validateConditions (https://fabrizio--appliancetheme.myvtex.com/_v/private/assets/v1/linked/[email protected]/public/react/ConditionLayoutProduct.js:245:28)
at ConditionLayout (https://fabrizio--appliancetheme.myvtex.com/_v/private/assets/v1/linked/[email protected]/public/react/ConditionLayoutProduct.js:58:94)
at renderWithHooks (https://fabrizio--appliancetheme.myvtex.com/_v/public/assets/v1/npm/[email protected]/umd/react-dom.development.js:15246:18)

Somente usando a versao deprecada 1.x funciona

As mudanças não renderizam

Fiz todos os procedimentos na instalação e configuração

O comando vtex link da como successfully,
Mas quando abro o vtex browse, fica tudo em branco e aparece apenas o header

Página de produto não abre

What exactly you didn't understand?
Depois de criar a página de produto, a mesma não carrega, abre a página definida no CMS

Additional info

Ao tentar buscar o produto na search bar, a barra azul fica carregando e para no final, não carregando a página de produto.
Na verdade, o mesmo erro ocorre para a página Search, abre a configurada no CMS.

No acceso a cuenta appliancetheme

Describe the content problem

No me permite hacer login, la primera vez que hice vtex login appliancetheme me firme con mi cuenta de google y sí accedí, al crear un workspace me arrojo error y al ejecutar vtex whoami me indico que no estaba logueada, a partir de ahí con cualquier cuenta que trate de firmarme me rechaza el acceso

How do you think it should be?

Describe how you think it could be better

Screenshots

image

Additional context

Add any other context about the problem here.

Error in Quick View-VTEX

Al realizar el test de este contenido https://developers.vtex.com/learning/docs/course-layout-blocks-step07quick-view-lang-en esta generando un error, mostrando el siguiente mensaje.

16:31:31.373 - warn: Block 'product-summary.shelf' was defined twice, this could cause unexpected behavior. Please check your json files and remove duplicated block definitions. [email protected] 16:31:31.394 - error: App build failed with message: Error resolving block "product-summary.shelf": I couldn't find a block "product-selling-price". You need to declare the block or have your app depended on another app that declares it. This error may be caused by a change in behavior resolving blocks from indirect app dependencies. Further info here: https://vtex.io/docs/releases/2019-12-12/declaring-blocks-stemming-from-indirect-dependencies.. 16:31:31.397 - error: Error resolving block "product-summary.shelf": I couldn't find a block "product-selling-price". You need to declare the block or have your app depended on another app that declares it. This error may be caused by a change in behavior resolving blocks from indirect app dependencies. Further info here: https://vtex.io/docs/releases/2019-12-12/declaring-blocks-stemming-from-indirect-dependencies.. [email protected]

Realice lo siguiente y no funciono:

Cambiar:
'list-context.product-list': { 'blocks': [ 'product-summary.shelf' ], 'children': [ 'slider-layout' ] } POR
'list-context.product-list': { 'children': [ 'slider-layout' ] }

y agregar a:
"store.home": { "blocks": [ "product-summary.shelf" ] }

I am not able to create a workspace

Hello, how are you?
I am starting to study a VTEX and am not able to create my workspace.
I've tried to put several names, however, always the same error: Failed to create workspace 'danielcespedesworkspace': Request failed with status code 403 ErrorID: 1a92e4d10029c191fa2ef55a6623d701
I have already tried to access the account on the site, but because I did not create the workspace, I am not authorized to access it. Can you help me please?

Vtex blocks "conditional children" with "order-by" with prop "hiddenOptions"

Someone knows, how use "conditional children" with "order-by" with prop "hiddenOptions["OrderByReleaseDateDESC"]" for one page and another page "hiddenOptions[ ]"? Give me some example

"search-result#department": {
       "blocks": [
           // "order-by#1",
            "conditional-children#order-by"
       ],
},
 "conditional-children#order-by":{
       "children": ["order-by#1", "order-by#2"]
    },
    "order-by#1": {
        "props":{
            "hiddenOptions":[]
        }
    },
    "order-by#2": {
        "props":{
            "hiddenOptions":["OrderByReleaseDateDESC", "OrderByBestDiscountDESC", "OrderByPriceDESC", "OrderByPriceASC", "OrderByNameASC", "OrderByNameDESC"]
        }
    }

How to use StorefrontFunctionComponent

What exactly you didn't understand?

How can I use StorefrontFunctionComponent?
Where can I add it?
I'm trying to use but I just getting this error

../../.../react/components/AugmentedRealityBanners/index.tsx:19:32 
    TS2304: Cannot find name 'StorefrontFunctionComponent'.

What have you tried so far?
I copy all the manifest from tutorial and nothing

Additional info

Add extra content here (code samples, screenshots,...)
Captura de Tela 2021-03-29 às 14 50 44

Broken link on Next Step on lesson "Product Page"

Describe the content problem
Broken link on Next Step

A clear and concise description of what the problem is.
Make click on "Next Step" at the final of the lesson, don't do any action: only reload the same page

How do you think it should be?

Describe how you think it could be better

Screenshots

If applicable, add screenshots to help explain your problem.

Additional context

Add any other context about the problem here.

Erro login

Hello, when I am directed to the login screen when logging give an error saying ..

You do not have permission
The email [email protected] does not have permission to access the admin. Contact the person in charge at your company.

Admin app build failed: invalid character '<' looking for beginning of value

I have created an admin service following this documentation: https://learn.vtex.com/docs/course-admin-step02-navigation-routes-lang-en.
I have requested a permission to create an app via form and received an approval.
Upon running vtex link I receive error:

13:25:45.084 - error: Error while retrieving list of versions for app [ACCOUNT NAME].[APP NAME]. [email protected]  
13:25:45.085 - error: Request failed with status code 500 [email protected]  
13:25:45.088 - error: App build failed with message: invalid character '<' looking for beginning of value

No additional code was added comparing to the code from the training.

How can i acces to the vtex.catalog-graphql in a graphql query

What exactly you didn't understand?

I am trying to replicate a query that i generated in the GraphQl IDE (see screenshot above) but i don't understand how to import the vtex.catalog-graphql in the react app.

What have you tried so far?

I tried using the same query in the component(see 2nd screenshot) but I get undefined in both console.log

Additional info

image
image

Problemas com manifest.json

Quando vou enviar os arquivos para a vtex, da um erro como se o manisfest.json estivesse com problema. Isso acontece mesmo eu não alterando nada no documento json. Quero resolver o problema, mas não estou conseguindo

Workflow publishing react app

What exactly you didn't understand?
I finished the course of Custom Block and succesfully linked the CountDown app with my store. So far I only have the CountDown app linked, i didn't publish it. What steps should I take for publishing the app (not the store) and using the countdown app in production?

Additional info
My store is already in production, I don't need help publishing the store, just the CountDown app.

Botão de finalizar o curso

Precisamos de um botão de finalizar o curso (pode ser igual ao que já temos na landing page), para registrar a métrica no último passo.

Master Data dependencies

What exactly you didn't understand?

I believe this step assumes that a specific store template is set up, called appliance-store. Running through the entire course, there was no place that indicated where to find and install this. I am assuming that the data entity "course_backend_product_list" is defined somewhere.

I'm getting an error after link and event fire that includes the message: "data: { Message: "Field 'slug' not found in schema" }"

What have you tried so far?

A clear and concise description of what you tried to do already.

Additional info

Add extra content here (code samples, screenshots,...)

Pular passos

No onboarding precisamos instruir bem boas práticas na plataforma

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.