{"id":25650702,"url":"https://github.com/flow-build/blueprint-builder-template","last_synced_at":"2026-06-18T19:31:46.113Z","repository":{"id":40562009,"uuid":"468832467","full_name":"flow-build/blueprint-builder-template","owner":"flow-build","description":null,"archived":false,"fork":false,"pushed_at":"2022-06-10T12:29:29.000Z","size":253,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T19:57:26.947Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flow-build.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":null,"security":null,"support":null}},"created_at":"2022-03-11T16:57:06.000Z","updated_at":"2022-06-22T14:12:41.000Z","dependencies_parsed_at":"2022-08-09T23:10:57.521Z","dependency_job_id":null,"html_url":"https://github.com/flow-build/blueprint-builder-template","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flow-build/blueprint-builder-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flow-build%2Fblueprint-builder-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flow-build%2Fblueprint-builder-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flow-build%2Fblueprint-builder-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flow-build%2Fblueprint-builder-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flow-build","download_url":"https://codeload.github.com/flow-build/blueprint-builder-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flow-build%2Fblueprint-builder-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34505419,"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-18T02:00:06.871Z","response_time":128,"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":"2025-02-23T15:17:49.908Z","updated_at":"2026-06-18T19:31:46.093Z","avatar_url":"https://github.com/flow-build.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blueprint Builder\n\nThis repo objective is to help you to build nodes and blueprints for flowbuild using an IDE instead of the flowbuild studio.\n\n## Flowbuild Compatibility\n\nThe repo presumes you are using the flowbuild API version 2.0.1 and engine version 2.8.0.\n\n## Environment Variables\n\nIn order to actually sync with yoor engine, you need to set your ```FLOWBUILD_URL``` in your .env file.\n\n## Scripts\n\n\n\n### PLOP Scripts\n\nThe repo uses PLOP scripts to help build diagram templates and node specs.\n\nYou can call ```npm run plop``` or just ````plop``` if you wish to install plop globally.\n\nAvailable Templates\n- blueprints\n- node\n\n## Blueprint Automated Tests\n\nWe can perform blueprint automated tests and calculate the tests coverage using the package [flowbuild-coverage-calculator](https://www.npmjs.com/package/flowbuild-coverage-calculator). This lib runs automated tests using Cucumber, that uses Gherkin syntax, and we have some default commands/steps for testing blueprints on flowbuild that needs to be included in the cucumber file (with extension '.feature'). These files accepts steps in english and in portuguese. Check out below.\n\n### '***Given***' steps\n\nSteps that will describe the initial context of the scenario.\n\n#### English\n\n```feature\nGiven the default user is logged in # post email and password default (from .env) to get token from flowbuild\nGiven an anonymous user is logged in # get anonymous token from flowbuild\nGiven the user 'actor_id' is logged in # get token for the given actor_id (replace actor_id with the uuid value)\nGiven a 'testBlueprint' process started with the initial data of '{ \"phone\": \"99994444\" }' # start process of workflow named 'testBlueprint' with initial bag { \"phone\": \"99994444\" }\n```\n#### Portuguese\n\n\u003e ***Dado*** que o usuario padrao esta logado  // pega um token usando email e senha padrão (arquivo .env)\n\u003e\n\u003e ***Dado*** que um usuario anonimo esta logado  // pega um token anonimo\n\u003e\n\u003e ***Dado*** que o usuario 'actor_id' esta logado  // pega token pelo actor_id (substituir actor_id pelo valor uuid)\n\u003e\n\u003e ***Dado*** que um processo de 'testBlueprint' foi iniciado com os dados iniciais '{ \"phone_number\": \"99994444\" }'  \n\u003e // inicia um processo do workflow 'testBlueprint' com a bag inicial { \"phone\": \"99994444\" }\n\n### '***When***' steps\n\nSteps used to describe an event, or an action.\n\n#### English\n\n```feature\nWhen the user submits '{ \"token\": \"123\" }' # simulate user interaction by submitting the payload { \"token\": \"123\" }\n\n# this step also accepts to submit a variable that you save from the process using the syntax:\n\nWhen the user submits '{ \"token\": {{token}} }'\n\n# in that way the tests will look up if you saved a variable called 'token' and use its value on submit\n\n```\n#### Portuguese\n\n\u003e ***Quando*** o usuário submete '{ \"token\": \"123\" }' // simula a interação do usuário submetendo o payload { \"token\": \"123\" }\n\u003e \n\u003e // esse step também aceita o submit de uma variável salva do processo, da seguinte forma:\n\u003e\n\u003e ***Quando*** o usuário submete { \"token\": {{token}} }'\n\u003e\n\u003e // dessa forma o teste irá procurar se existe uma variável 'token' salva e usar o seu valor no submit\n\n### '***Then***' steps\n\nSteps used to describe an expected outcome, or result.\n\n#### English\n\n```feature\nThen the process passed through 'CONFIG' # checks if process passed through node 'CONFIG'\nThen the process passed 3 times through 'CHECK-COUNT' # checks if process passed exactly 3 times through node 'CHECK-COUNT'\nThen the process passed at least 3 times through 'CHECK-COUNT' # checks if process passed at least 3 times through node 'CHECK-COUNT'\nThen the process waits at 'CONFIRM-TOKEN' # checks if process stopped on node 'CONFIRM-TOKEN' and waited for some action to happen\nThen the process waits at 'CONFIRM-TOKEN' for 60 seconds # checks if process stopped on node 'CONFIRM-TOKEN', waited for 60 seconds and no action happened (action timeout)\nThen the process finishes at 'END-SUCCESS' # checks if process endend on node 'END-SUCCESS'\nThen save the variable 'token' with the value 'bag.token' # gets the value from the variable 'bag.token' of the process and save in the variable 'token' in 'worldData.json'\nThen the bag of 'CONFIG' has the property 'phone_number' # checks if the bag of the node 'CONFIG' has a property called 'phone_number'\nThen in the bag of 'CONFIG' the property 'phone_number' is equal to '99994444' # checks if the bag of the node 'CONFIG' has the property 'phone_number' with value '99994444'\nThen the result of 'CONFIRM-TOKEN' has the property 'activities[0].data.token' # checks if the result of the node 'CONFIRM-TOKEN' has a property called 'activities[0].data.token'\nThen in the result of 'CONFIRM-TOKEN' the property 'activities[0].data.token' is equal to '{{token}}' # checks if the result of the node 'CONFIRM-TOKEN' has the property 'activities[0].data.token' with value equal to variabel 'token' saved from the process on 'worldData.json'\n```\n#### Portuguese\n\n\u003e ***Entao*** o processo passou pelo nó 'CONFIG'  // verifica se o processoo passou pelo nó 'CONFIG'\n\u003e\n\u003e ***Entao*** o processo passou 3 vezes pelo nó 'CHECK-COUNT'  \n\u003e\n\u003e // verifica se o processo passou exatamente 3 vezes pelo nó 'CHECK-COUNT'\n\u003e\n\u003e ***Entao*** o processo passou pelo menos 3 vezes pelo nó 'CHECK-COUNT'  \n\u003e\n\u003e // verifica se o processo passou pelo menos 3 vezes pelo nó 'CHECK-COUNT'\n\u003e\n\u003e ***Entao*** o processo para no nó 'CONFIRM-TOKEN'  \n\u003e\n\u003e // verifica se o processo para no nó 'CONFIRM-TOKEN' e aguarda uma ação acontecer\n\u003e\n\u003e ***Entao*** o processo para no nó 'CONFIRM-TOKEN' por 60 segundos  \n\u003e\n\u003e // verifica se o processo para no nó 'CONFIRM-TOKEN', aguarda por 60 segundos e nenhuma ação ocorre (timeout da action)\n\u003e\n\u003e ***Entao*** o processo finaliza no nó 'END-SUCCESS'  // verifica se o processo finalizou no nó 'END-SUCCESS'\n\u003e\n\u003e ***Entao*** salvo a variável 'token' com o valor de 'bag.token'  \n\u003e\n\u003e // salva o valor da variável 'bag.token' do processo na variável 'token' no arquivo 'worldData.json'\n\u003e\n\u003e ***Entao*** a bag do nó 'CONFIG' contém a propriedade 'phone_number'  \n\u003e\n\u003e // verifica se a bag do nó 'CONFIG' possui uma propriedade chamada 'phone_number'\n\u003e\n\u003e ***Entao*** na bag do nó 'CONFIG' a propriedade 'phone_number' é igual a '99994444'  \n\u003e\n\u003e // verifica se a bag do nó 'CONFIRM-TOKEN' possui a propriedade 'phone_number' com o valor '99994444'\n\u003e\n\u003e ***Entao*** o result do nó 'CONFIRM-TOKEN' contém a propriedade 'activities[0].data.token'  \n\u003e\n\u003e // verifica se o result do nó 'CONFIRM-TOKEN' possui uma propriedade chamada 'activities[0].data.token'\n\u003e\n\u003e ***Entao*** no result do nó 'CONFIRM-TOKEN' a propriedade 'activities[0].data.token' é igual a '{{token}}'\n\u003e\n\u003e // verifica se o result do nó 'CONFIRM-TOKEN' possui a propriedade 'activities[0].data.token' com o valor da variável 'token' salva no arquivo 'worldData.json'\n\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflow-build%2Fblueprint-builder-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflow-build%2Fblueprint-builder-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflow-build%2Fblueprint-builder-template/lists"}