<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Aura – contributing</title>
    <link>/categories/contributing/</link>
    <description>Recent content in contributing on Aura</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="/categories/contributing/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/github-access/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/github-access/</guid>
      <description>
        
        
        &lt;h1 id=&#34;request-access-to-aura-repositories-in-github&#34;&gt;Request access to Aura repositories in Github&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Steps for L-CDO developers willing to access to &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-nlp&lt;/strong&gt;&lt;/em&gt; Github repositories&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;how-can-l-cdo-developers-access-to-github-repositories&#34;&gt;How can L-CDO developers access to Github repositories?&lt;/h2&gt;
&lt;p&gt;All local CDO developers are enrolled into a specific team in Github for each country, which provides the access to the relevant Aura repositories in Github, such as &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries&#34;&gt;https://github.com/Telefonica/aura-bot-libraries&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To gain access to your local CDO team in Github, you have to fulfill the following requirements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Having a personal account in Github.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two factor authentication (2FA) enabled for the account.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Your personal profile page in Github must fulfill the following requisites:&lt;/p&gt;
&lt;p&gt;3.1. It must include a personal image, not an avatar, distinct from the one Github assigns by default.&lt;/p&gt;
&lt;p&gt;3.2. It must include your name and surname.&lt;/p&gt;
&lt;p&gt;3.3. It must include a &amp;ldquo;@telefonica.com&amp;rdquo; as the public personal email account associated to the Github profile.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; Please, have a look at &lt;a href=&#34;https://github.com/Korreca&#34;&gt;https://github.com/Korreca&lt;/a&gt; as an example of a valid personal profile page in Github.&lt;/p&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; You can also check the document &lt;a href=&#34;https://git.io/JnDO8&#34;&gt;Configuring two-factor authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once the previous requirements have been successfully fulfilled, please send a message to the &amp;ldquo;[APE] AURA-LCDO-XY-GENERAL&amp;rdquo; chat in Microsoft Teams (where &amp;ldquo;XY&amp;rdquo; should be substituted by the 2 letters code associated to your country) requesting access to the Aura repositories in Github.&lt;/p&gt;
&lt;p&gt;A member of the APE team will request your registration into the &lt;strong&gt;Telefónica&lt;/strong&gt; organization in Github. Afterwards, you will receive an email message including your personal invitation to be registered in it.&lt;/p&gt;
&lt;p&gt;Once you have been included in the &lt;strong&gt;Telefónica&lt;/strong&gt; organization in Github, a member of the APE team will enroll yourself in the appropriate &amp;ldquo;Aura Development XY&amp;rdquo; (where &amp;ldquo;XY&amp;rdquo; should be substituted by the 2 letters code associated to your country) which will grant you access to all the relevant Aura repositories in Github.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/contributing-code/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/contributing-code/</guid>
      <description>
        
        
        &lt;h1 id=&#34;how-to-write-code-in-aura-bot-global-repositories&#34;&gt;How to write code in Aura Bot global repositories&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Guidelines for developers willing to contribute to Aura Bot global repositories writing code&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The aim of this document is to establish common minimum rules to contribute in Aura Global repositories: code linting, used libraries and guidelines for working over main and master branches&lt;/p&gt;
&lt;h2 id=&#34;programming-languages&#34;&gt;Programming Languages&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; code is written in &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;typescript 4.3.4&lt;/a&gt; that is a programming language developed by Microsoft on top of &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;Nodejs&lt;/a&gt;. Currently we use &lt;code&gt;node&lt;/code&gt; engine version &lt;code&gt;14&lt;/code&gt; and &lt;code&gt;npm&lt;/code&gt; version &lt;code&gt;6&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This means that we follow typescript rules of naming, but we have also added some extra ones, to unify our developments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;local variables&lt;/strong&gt;: always in camelCase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;files&lt;/strong&gt;: always in lower case letters, dash-separated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;classes&lt;/strong&gt;: in PascalCase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;interfaces&lt;/strong&gt;: in PascalCase, they do not start with &lt;code&gt;I&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;enums&lt;/strong&gt;: named in PascalCase, each item also in PascalCase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;library or server names&lt;/strong&gt;: always in lower case letters, dash-separated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;environment variables&lt;/strong&gt;: in capital letters, underscore-separated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;functions&lt;/strong&gt;: always in camelCase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;asynchronous programming&lt;/strong&gt;: use &lt;code&gt;await/async&lt;/code&gt; pattern when possible, avoid chains of &lt;code&gt;promises&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;adding a feature to an existing server&lt;/strong&gt;: check the already existing instances of &lt;code&gt;Singleton&lt;/code&gt; components and use them directly. &lt;strong&gt;Do not create a new instance&lt;/strong&gt;, this will lead to an error during the start-up or in runtime.&lt;/li&gt;
&lt;li&gt;All servers count on a &lt;code&gt;ConfigurationManager&lt;/code&gt; where all its environment variables can be obtained.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Try to use the best programming pattern for each feature, applying always &lt;strong&gt;Single Responsibility Point&lt;/strong&gt; defining small modules, functions or classes that do only one specific task. Find more references for programming patterns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://refactoring.guru/design-patterns&#34;&gt;Design patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/RefactoringGuru/design-patterns-typescript&#34;&gt;Typescript design patterns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;libraries-used&#34;&gt;Libraries used&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;To write logs, always &lt;code&gt;aura-logging&lt;/code&gt;. This logger needs a module name during its initialization: it must be in lower case letters, dash-separated.
&lt;ul&gt;
&lt;li&gt;Review &lt;code&gt;aura-utilities&lt;/code&gt; repository to find out more libraries.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Web servers: &lt;a href=&#34;https://expressjs.com/&#34;&gt;expressjs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Dependency injection: &lt;code&gt;architect&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Environment variables configuration validation: &lt;code&gt;joi&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Database: &lt;code&gt;mongodb&lt;/code&gt;, currently version 4.2 but moving in next releases to version 6.&lt;/li&gt;
&lt;li&gt;UnitTest: we use &lt;code&gt;mocha&lt;/code&gt; for already existing modules, but we are moving to &lt;code&gt;jest&lt;/code&gt;, so all brand-new modules must use &lt;code&gt;jest&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mocks-Server: we have developed a mocks server (&lt;code&gt;aura-mocks-server&lt;/code&gt;), that mimics the behavior of all external components (such as kernel, nlp, etc.). If something is missing, add it.&lt;/li&gt;
&lt;li&gt;API definition:
&lt;ul&gt;
&lt;li&gt;We use &lt;code&gt;API FIRST&lt;/code&gt; design. i.e. firstly we define the swagger of the API and then we build the routing of the API using the swagger directly from &lt;code&gt;expressjs&lt;/code&gt; and &lt;code&gt;express-openapi&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We use OpenApi v3 for swagger definition&lt;/li&gt;
&lt;li&gt;We generate the client of the API and the related models automatically after a change in the swagger file.
&lt;ul&gt;
&lt;li&gt;Client package is published on the fly to the correspondant npm registry (github during the development phase and npm for master and release), so its code never exists in the server repository.&lt;/li&gt;
&lt;li&gt;Models package is updated in the server repository, but just using the definitions in the swagger, no extra code should be written.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Swagger file must be called &lt;code&gt;swagger.yml&lt;/code&gt; and must be created in the root of the server, at the same level of its &lt;code&gt;package.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Each server that needs a client must have a client folder with just the &lt;code&gt;package.json&lt;/code&gt; of the client, the rest of the code is autogenerated by aura&amp;rsquo;s CI system.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HTTP requests: we use &lt;code&gt;superagent&lt;/code&gt; library to handle HTTP request, both in our generated API clients and in those done directly from the servers. Currently we use version 5.2.2, but we are moving to version 8 in following releases.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;request&lt;/code&gt; and &lt;code&gt;request-promise&lt;/code&gt; are strongly prohibited.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;work-on-a-main-branch&#34;&gt;Work on a main branch&lt;/h2&gt;
&lt;p&gt;When you work on a main branch, the libraries are published on Github.&lt;/p&gt;
&lt;p&gt;To install the dependencies of a package, you need the following steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Create a &lt;a href=&#34;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens&#34;&gt;Github development token&lt;/a&gt; with package read permission.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.github.com/es/enterprise-cloud@latest/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on&#34;&gt;Configure SSO&lt;/a&gt; for this token.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure your &lt;code&gt;.npmrc&lt;/code&gt; file in your root directory:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;//npm.pkg.github.com/:_authToken&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;XXX
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@telefonica:registry&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;https://npm.pkg.github.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;work-on-a-master-branch&#34;&gt;Work on a master branch&lt;/h2&gt;
&lt;p&gt;When you work on a master branch, the libraries are published in npm.&lt;/p&gt;
&lt;p&gt;To install the dependencies of a package, you need the following steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Request a npm token from your team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure your &lt;code&gt;.npmrc&lt;/code&gt; file in your root directory:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;//registry.npmjs.org/:_authToken&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;XXXX
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@telefonica:registry&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;https://npm.pkg.github.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/</guid>
      <description>
        
        
        &lt;h1 id=&#34;contributing-to-aura&#34;&gt;Contributing to Aura&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Discover how to contribute to Aura Platform global repositories&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The aim of this document is to establish common minimum rules for developers willing to contribute to Aura Global repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to &lt;a href=&#34;../../docs/developers-workspace/develop-features/contributing/github-access/&#34;&gt;request access to Aura repositories in Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;a href=&#34;../../docs/developers-workspace/develop-features/contributing/contributing-code/&#34;&gt;write code in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; global repositories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;a href=&#34;../../docs/developers-workspace/develop-features/contributing/migrate-git-folder-to-repo/&#34;&gt;migrate a git folder to a new repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;a href=&#34;../../docs/developers-workspace/develop-features/contributing/us-tasks-handling/&#34;&gt;manage user stories and tasks in JIRA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Types of branches and &lt;a href=&#34;#branches-used-by-aura&#34;&gt;guidelines for the generation of a new branch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The target audience of the document are developers of global and local teams contributing to Aura Global repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; developers&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; developers&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;aura-services-api&lt;/strong&gt;&lt;/em&gt; developers&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; This document assumes that the developers already have permissions to access Telefónica organization in Github.&lt;/p&gt;
&lt;h2 id=&#34;branches-used-by-aura&#34;&gt;Branches used by Aura&lt;/h2&gt;
&lt;p&gt;Aura uses 2 different types of branches:&lt;/p&gt;
&lt;h3 id=&#34;eternal-or-pseudo-eternal-branches&#34;&gt;Eternal or pseudo eternal branches&lt;/h3&gt;
&lt;p&gt;These are protected branches, that MUST be always deployable in a given environment.&lt;/p&gt;
&lt;p&gt;Protected means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only code owners can push code to them&lt;/li&gt;
&lt;li&gt;All changes MUST be pushed through a pull request, that MUST pass the continuous integration checks and count on, at least, 2 approval reviews of code owners.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These branches are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;master&lt;/code&gt;: it holds next release code. It MUST be deployable in the global development environments.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main/*&lt;/code&gt;: it holds the development of a unique User Story or set of User Stories.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;release/*&lt;/code&gt;: it holds the given release code. It MUST be deployable in global development environments and also in PRE and PRO of the OBs involved in this release developments.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hotfix/*&lt;/code&gt;: it holds the resolution of an issue or set of issues happening in a pre or pro environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;temporary-branches&#34;&gt;Temporary branches&lt;/h3&gt;
&lt;p&gt;As any change in eternal branches MUST be done though a Pull Request, it means that they must be done in a temporary or feature branch.&lt;/p&gt;
&lt;p&gt;These branches are usually named after the type of change they are going to hold: &lt;code&gt;feat/my-new-feature&lt;/code&gt; or &lt;code&gt;fix/fixing-that&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This format is &lt;code&gt;&amp;lt;type&amp;gt;/&amp;lt;description&amp;gt;[#issue_number]&lt;/code&gt; where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt; is one of &lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt; and &lt;code&gt;docs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;description&lt;/code&gt; should be a short description, dash-separated words, of the change. If using Jira as issue manager, add the number of the issue being resolved after a &lt;code&gt;#&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;process-for-generating-a-new-branch&#34;&gt;Process for generating a new branch&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;First of all, clone the repository and choose an eternal branch as base branch for your feature:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git clone git@github.com:Telefonica/aura-bot-platform.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; aura-bot-platform
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git checkout main/my-feature#12345
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Or update the base eternal branch for your feature:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; aura-bot-platform
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git checkout main/my-feature#12345
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git pull origin main/my-feature#12345
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Then, create a new branch:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git checkout -b feat/my-new-feature
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some recommendations should be considered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Split your changes in small tasks&lt;/strong&gt; (max 1 day per task)&lt;/li&gt;
&lt;li&gt;Use a feature (&lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &amp;hellip;) branch per task&lt;/li&gt;
&lt;li&gt;Do small commits with spotted functionality&lt;/li&gt;
&lt;li&gt;Do small PRs with all the code of a given task&lt;/li&gt;
&lt;li&gt;When asking a PR remember to include an explanation of the why, how, what has been done in the PR, in order to help reviewers to understand the change.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;commit-messages-format&#34;&gt;Commit messages format&lt;/h2&gt;
&lt;p&gt;The format followed in Aura is the one described in &lt;a href=&#34;https://www.conventionalcommits.org/en/v1.0.0-beta.4/&#34;&gt;Conventional Commits&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These messages are used to &lt;strong&gt;handle the version of each Aura component&lt;/strong&gt; so &lt;strong&gt;it is very important&lt;/strong&gt; to follow these rules.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: Pull Requests including commits without this format will be rejected.&lt;/p&gt;
&lt;h3 id=&#34;format&#34;&gt;Format&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;type&amp;gt;(&amp;lt;optional scope&amp;gt;): &amp;lt;description&amp;gt;

[optional body]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Valid &lt;code&gt;types&lt;/code&gt;: &lt;code&gt;feat&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;chore&lt;/code&gt;, &lt;code&gt;docs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Valid scopes:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;global&lt;/code&gt;, can be omitted, if affects all the packages or it&amp;rsquo;s a basic change.&lt;/li&gt;
&lt;li&gt;the affected package in a multipackage repository.&lt;/li&gt;
&lt;li&gt;the affected library, plugin or dialog in library repository.&lt;/li&gt;
&lt;li&gt;if it affects a concrete feature in the repository: &lt;code&gt;logging&lt;/code&gt;, &lt;code&gt;kpis&lt;/code&gt;, &lt;code&gt;authentication&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;it can also be omitted in global cases, in minor changes, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Description: indicative sentence &lt;strong&gt;in lower case&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Body: only if &lt;code&gt;description&lt;/code&gt; field is not enough to understand the changes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;folder-layout&#34;&gt;Folder layout&lt;/h2&gt;
&lt;p&gt;In general, all the repositories containing typescript code should have an &lt;code&gt;src&lt;/code&gt; folder with all the typescript source files there, and those source files will be transpiled into javascript into folder &lt;code&gt;lib&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;unit-tests&#34;&gt;Unit tests&lt;/h3&gt;
&lt;p&gt;Currently &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; team is moving to Jest as unittest runner, so a couple of versions of unittest can be found:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects running with &lt;code&gt;mocha&lt;/code&gt;, such as &lt;code&gt;aura-bot-platform&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Test files should be included in the same folder as the files to test, with a trailing &lt;code&gt;.spec.ts&lt;/code&gt; in the file name (these files should be &lt;code&gt;.npmignore&lt;/code&gt;, to avoid being in the final package).&lt;/p&gt;
&lt;p&gt;Test assets required for tests (&lt;code&gt;.json&lt;/code&gt; files, images, &lt;code&gt;.env&lt;/code&gt; files, etc.) will be placed in a &lt;code&gt;test&lt;/code&gt; folder (that should be &lt;code&gt;.npmignore&lt;/code&gt; too), so they will be available for typescript/javascript files by getting the path &lt;code&gt;../test&lt;/code&gt; or similar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects running with &lt;code&gt;jest&lt;/code&gt;, such as &lt;code&gt;aura-mocks-server&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will be a specific folder called &lt;em&gt;test&lt;/em&gt;, at the same level than &lt;code&gt;src&lt;/code&gt; and that will hold all the unit tests following the same structure than &lt;code&gt;src&lt;/code&gt;. As with &lt;code&gt;mocha&lt;/code&gt; tests, they must be ignored in the production transpilation and the files published in npm.&lt;/p&gt;
&lt;p&gt;More about src/ folder layout in &lt;strong&gt;aura-bot-platform&lt;/strong&gt; can be found in &lt;a href=&#34;../../docs/developers-workspace/develop-features/contributing/src-folder-layout/&#34;&gt;this file&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/migrate-git-folder-to-repo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/migrate-git-folder-to-repo/</guid>
      <description>
        
        
        &lt;h1 id=&#34;migrate-a-git-folder-to-a-new-repository&#34;&gt;Migrate a git folder to a new repository&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Learn how to migrate a folder within a Git repository to another repository&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;move-files-with-history&#34;&gt;Move files with history&lt;/h2&gt;
&lt;p&gt;This document explains how to migrate the history of the files to the new repository (that could or could not be desirable).&lt;/p&gt;
&lt;p&gt;This process tells how to move a part of a repository (folder) to a new repository, maintaining the history of the files. A new fresh copy of the origin repository is required, as it will not be usable anymore.&lt;/p&gt;
&lt;p&gt;These commands will prepare a repo with only the commits from a specific folder (removing anything else):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Clone a fresh copy of origin repo and enter into it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone &amp;lt;giturl-repoA&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; &amp;lt;repoA&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Optional, to avoid pushing to the wrong remote repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git remote rm origin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# From the repo source, remove all the files and history outside the folder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git filter-branch --subdirectory-filter &amp;lt;folder-name&amp;gt; -- --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, we can import in the new repository following these steps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Optional, clone a fresh copy of destination repo (or could use a previously existing one) and enter into it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone &amp;lt;giturl-repoB&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; &amp;lt;repoB&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add a new remote pointing to local path with repo A&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git remote add repoA &amp;lt;local-path-repoA&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Pull from previous local repository the dialog files, branch master (replace if using a different one)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git pull repoA master --allow-unrelated-histories
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Optional, create a new branch to merge into&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git checkout -b &amp;lt;destination-branch&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Remove local remote, not required anymore&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git remote rm repoA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/us-tasks-handling/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/us-tasks-handling/</guid>
      <description>
        
        
        &lt;h1 id=&#34;guidelines-for-jira-management&#34;&gt;Guidelines for Jira management&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Learn how to handle user stories and tasks in Jira&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;analysis&#34;&gt;Analysis&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create Analysis Task&lt;/td&gt;
&lt;td&gt;JIRA&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create Analysis Documentation&lt;/td&gt;
&lt;td&gt;Confluence&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;. . . Use cases&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;. . . Data model&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;. . . Component architecture&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create &amp;ldquo;doubt repository&amp;rdquo;&lt;/td&gt;
&lt;td&gt;JIRA/Confluence&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;mdash;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Have all doubts been resolved?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Has the result of the analysis been presented?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Have several alternatives been evaluated?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Has the chosen option been agreed upon?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chosen solution meets the performance requirements?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;development&#34;&gt;Development&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create branch &amp;ldquo;feat&amp;rdquo; for each task&lt;/td&gt;
&lt;td&gt;GIT&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create unit tests&lt;/td&gt;
&lt;td&gt;GIT&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create Documentation (README)&lt;/td&gt;
&lt;td&gt;GIT&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add lint rules (standard)&lt;/td&gt;
&lt;td&gt;GIT&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create jenkins tasks (if they don&amp;rsquo;t exist)&lt;/td&gt;
&lt;td&gt;JENKINS&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Check for missing jenkins tasks&lt;/td&gt;
&lt;td&gt;JENKINS&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;mdash;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does the code pass all unit tests?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do the unit tests cover 80% coverage?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does the code comply with the lint rules?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Have the Jenkinsfile and pipelines been checked?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the README documentation up to date?&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;[X]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;faqs&#34;&gt;FAQs&lt;/h2&gt;
&lt;h3 id=&#34;what-to-do-if-you-have-to-integrate-with-another-development-team&#34;&gt;What to do if you have to integrate with another development team?&lt;/h3&gt;
&lt;p&gt;If, for example, we are going to integrate something with the Cognitive Team, such as the new suggestions API, we will be talking to them integrated in the same team all the time.&lt;/p&gt;
&lt;p&gt;But the moment we need them to pass us their swagger, whether their component is deployed or the update deployed, we will give them a task to do so.&lt;/p&gt;
&lt;h3 id=&#34;how-to-upload-the-code-to-git&#34;&gt;How to upload the code to git?&lt;/h3&gt;
&lt;p&gt;To upload the code to git, Pull Request to master or release/* is performed depending on the moment.&lt;/p&gt;
&lt;p&gt;We upload it when we have finished, with a disclaimer: if we are dependent on other teams that are going to call our API or use the modification for something, we will be especially careful and upload the changes when they are necessary and not to break their development.&lt;/p&gt;
&lt;h3 id=&#34;do-i-have-to-notify-qa-at-the-end-of-coding&#34;&gt;Do I have to notify QA at the end of coding?&lt;/h3&gt;
&lt;p&gt;Yes, you have to notify them when a new feature or a fix is deployed in the corresponding environment.&lt;/p&gt;
&lt;p&gt;If it is bug or complete US, passing them to resolved they are already warned, but I like more to give them a touch and tell them.&lt;/p&gt;
&lt;p&gt;In addition to when we upload the code, I like to share the analysis and design pages with them, because the discussions are usually very productive.&lt;/p&gt;
&lt;h3 id=&#34;should-we-notify-someone-about-the-generated-documentation&#34;&gt;Should we notify someone about the generated documentation?&lt;/h3&gt;
&lt;p&gt;We must notify &lt;em&gt;María Eugenia&lt;/em&gt;, who is the documentary maker. The ideal is to leave indicated in each US/Bug which documentation has been modified with its development. María Eugenia takes the doc from aura-docs, from Confluence or from the corresponding repo and includes it in the product versions.&lt;/p&gt;
&lt;h3 id=&#34;how-do-the-tasks-change-states&#34;&gt;How do the tasks change states?&lt;/h3&gt;
&lt;p&gt;We must pass the US/bugs from &amp;ldquo;new&amp;rdquo; -&amp;gt; &amp;ldquo;in progress&amp;rdquo; -&amp;gt; &amp;ldquo;code review&amp;rdquo; -&amp;gt; &amp;ldquo;resolved&amp;rdquo;. Tasks in the &amp;ldquo;resolved&amp;rdquo; state go &amp;ldquo;closed&amp;rdquo; when QA validates them.&lt;/p&gt;
&lt;h3 id=&#34;how-do-i-change-version-of-component-or-library&#34;&gt;How do I change version of component or library?&lt;/h3&gt;
&lt;p&gt;We do this process with each release or phase change. The future is that everything is done automatically by Jenkins.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/develop-features/contributing-to-aura/src-folder-layout/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/develop-features/contributing-to-aura/src-folder-layout/</guid>
      <description>
        
        
        &lt;h1 id=&#34;source-folder-layout&#34;&gt;Source folder layout&lt;/h1&gt;
&lt;!-- actualizar???? --&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura Bot Platform src/ repository&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The repository &lt;a href=&#34;https://github.com/Telefonica/aura-bot-platform&#34;&gt;aura-bot-platform&lt;/a&gt; has a folder layout inside &lt;code&gt;src&lt;/code&gt; folder, to organize the code according to functionality groups.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;src&lt;/code&gt; root folder, only main files should be placed, such as &lt;code&gt;index.ts&lt;/code&gt;, or main server file &lt;code&gt;server.ts&lt;/code&gt; (&lt;code&gt;app.ts&lt;/code&gt; in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;).&lt;/p&gt;
&lt;h2 id=&#34;src-sub-folders&#34;&gt;src/ sub-folders&lt;/h2&gt;
&lt;h3 id=&#34;srcbots&#34;&gt;src/bots&lt;/h3&gt;
&lt;p&gt;Currently, only the file &lt;code&gt;aura-bot.ts&lt;/code&gt; is included here, that is the main &lt;code&gt;ActivityHandler&lt;/code&gt; (kind of replace of previous &lt;code&gt;UniversalBot&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;In a near future, more Bot Builder adapters could be located here.&lt;/p&gt;
&lt;h3 id=&#34;srcconfig&#34;&gt;src/config&lt;/h3&gt;
&lt;p&gt;In this folder, files that load configurations are included. These files are required in other places, such as channel configuration, env vars, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcdb&#34;&gt;src/db&lt;/h3&gt;
&lt;p&gt;In this folder, files that manage and connect to &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/bot-databases/&#34;&gt;databases&lt;/a&gt; are located, such as MongoDB.&lt;/p&gt;
&lt;h3 id=&#34;srcevents&#34;&gt;src/events&lt;/h3&gt;
&lt;p&gt;Files handling events (such as &lt;code&gt;ModuleObserver&lt;/code&gt; subclasses) should be placed in this folder.&lt;/p&gt;
&lt;h3 id=&#34;srcdialogs&#34;&gt;src/dialogs&lt;/h3&gt;
&lt;p&gt;This folder contains &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/internal-dialogs/main-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bot main dialog&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; and custom prompts, as use case dialogs will be located in libraries, loaded as dependencies.&lt;/p&gt;
&lt;h3 id=&#34;srcmake&#34;&gt;src/make&lt;/h3&gt;
&lt;p&gt;In this folder, the code related with joining all the library-specific data with global ones is included, corresponding to the &lt;a href=&#34;../../docs/developers-workspace/general-operation-system/make-up/&#34;&gt;make-up process&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;srcmiddlewares&#34;&gt;src/middlewares&lt;/h3&gt;
&lt;p&gt;This folder contains abstract &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/middlewares/&#34;&gt;middleware&lt;/a&gt; base classes, and specific &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/middlewares/&#34;&gt;middleware&lt;/a&gt; implementation (final classes).&lt;/p&gt;
&lt;h3 id=&#34;srcmiddlewaresrecognizers&#34;&gt;src/middlewares/recognizers&lt;/h3&gt;
&lt;p&gt;This folder contains all the &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/recognizers/&#34;&gt;recognizers&lt;/a&gt;, such as &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/recognizers/nlp-recognizer/&#34;&gt;&lt;em&gt;&lt;strong&gt;nlp-recognizer-middleware&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;, &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/recognizers/auracommand-recognizer/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-command-recognizer-middleware&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcmodels&#34;&gt;src/models&lt;/h3&gt;
&lt;p&gt;Files located within this folder will have exported types and interfaces required in different parts of the code (types and interfaces required only within a file could be self-contained).&lt;/p&gt;
&lt;h3 id=&#34;srcmodules&#34;&gt;src/modules&lt;/h3&gt;
&lt;p&gt;This folder contains independent code blocks, that could be exported as a reusable packages if required in different components, such as cache manager, locale manager, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcplugin&#34;&gt;src/plugin&lt;/h3&gt;
&lt;p&gt;This folder contains the modules in charge of loading plugins: charging dialogs, middlewares, delivery configuration for these components, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcrouting&#34;&gt;src/routing&lt;/h3&gt;
&lt;p&gt;Here, code related with intent-to-dialog routing is located, as this is not part of Bot Builder anymore.&lt;/p&gt;
&lt;h3 id=&#34;srcutils&#34;&gt;src/utils&lt;/h3&gt;
&lt;p&gt;This folder contains utility classes and methods that are not part or any other block. We should maintain this folder organized and tidy, to avoid lots of unspecific files.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
