<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: aleher86</title>
    <description>The latest articles on DEV Community by aleher86 (@aleher).</description>
    <link>https://dev.to/aleher</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F680028%2F7e9ae2b6-161d-482c-accb-e10b03dda5d3.jpeg</url>
      <title>DEV Community: aleher86</title>
      <link>https://dev.to/aleher</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aleher"/>
    <language>en</language>
    <item>
      <title>¿Qué es Frappe Framework?</title>
      <dc:creator>aleher86</dc:creator>
      <pubDate>Wed, 04 Aug 2021 16:38:49 +0000</pubDate>
      <link>https://dev.to/aleher/que-es-frappe-framework-9ia</link>
      <guid>https://dev.to/aleher/que-es-frappe-framework-9ia</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://frappeframework.com/"&gt;Frappe&lt;/a&gt; es un web framework &lt;strong&gt;low code&lt;/strong&gt; y open source en Python y Javascript. Su origen comienza con &lt;a href="https://erpnext.com/"&gt;ERPNext&lt;/a&gt; y luego con lo robusto que se fue haciendo deciden crear Frappe Framework con todas las funcionalidades que tiene ERPNext pero aplicadas a la creación de apps robustas y todo a nivel low code. En el mismo framework se puede modificar o crear funcionalidades específicas que se necesiten usando Python o Javascript.&lt;/p&gt;

&lt;p&gt;Mi intención es ir armando una guía en español para aprender a usar este framework, ya que hasta incluso su propia documentación en inglés no es muy amigable a la hora de explicar muchas cosas. Varias las aprendí a los golpes o tocando por todas partes porque ni en sus guías eran específicos. Por eso quise escribir esta guía y con lo que aprendi compartirlo con todos, porque es increíble como ahorra mucho tiempo de desarrollo este framework. Quedé sorprendido como en tan poco tiempo logré sacar una app funcionando perfectamente con un front aparte que se comunica con su propia REST API que ya ofrece Frappe. Una app simple que si hubiera programado tanto backend como front de cero hubiera tardado el doble o quizas hasta el triple.&lt;/p&gt;

&lt;p&gt;Este artículo lo iré actualizando con los links de las guías que vaya sacando y es posible que lo vaya modificando haciendo correcciones por si algo no se entiende para ir mejorándolo, ya que es la primera vez que armo una guía y seguro que cometa algún error.&lt;br&gt;
Primero arrancaríamos con la creación de un entorno local en docker para luego empezar un tutorial creando una app de cero con Frappe, tratando de abarcar todo lo que se usa de Frappe y que también termine resolviendo varias de las dudas que tuve y no pude encontrar en su documentación.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tutorial
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://dev.to/aleher/creando-un-entorno-local-con-docker-3em8"&gt;Creando un entorno local con Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>spanish</category>
      <category>frappe</category>
      <category>python</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Creando un entorno local de Frappe con Docker</title>
      <dc:creator>aleher86</dc:creator>
      <pubDate>Wed, 04 Aug 2021 16:37:55 +0000</pubDate>
      <link>https://dev.to/aleher/creando-un-entorno-local-con-docker-3em8</link>
      <guid>https://dev.to/aleher/creando-un-entorno-local-con-docker-3em8</guid>
      <description>&lt;h2&gt;
  
  
  Resumen
&lt;/h2&gt;

&lt;p&gt;Guía para levantar un entorno local de frappe framework y desarrollar en local las apps. En la guía se instala la version 13 de Frappe que es la última al día en el momento que se escribió esta guía, donde se mencione a &lt;code&gt;version-13&lt;/code&gt; reemplazar por la más nueva.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisitos
&lt;/h2&gt;

&lt;p&gt;Para empezar con el desarrollo se necesitan los siguientes requisitos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;docker-compose&lt;/li&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Preparar contenedor para el desarrollo
&lt;/h2&gt;

&lt;p&gt;Clonar y entrar al directorio &lt;code&gt;frappe_docker&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/frappe/frappe_docker.git
&lt;span class="nb"&gt;cd &lt;/span&gt;frappe_docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copiar la configuración ejemplo del devcontainer de la carpeta &lt;code&gt;devcontainer-example&lt;/code&gt; a &lt;code&gt;.devcontainer&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; devcontainer-example .devcontainer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usar la extensión de VSCode Remote Containers
&lt;/h2&gt;

&lt;p&gt;Para un desarrollo más sencillo en Frappe Framework recomiendo el uso de &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers"&gt;VSCode Remote - Containers extension&lt;/a&gt;. Primero instalar esta extensión antes de empezar.&lt;/p&gt;

&lt;p&gt;Antes de abrir el contenedor, pueden cambiar la base de datos a usar en &lt;code&gt;.devcontainer/docker-compose.yml&lt;/code&gt;, por defecto viene configurado con MariaDB pero puede usarse con PostgreSQL.&lt;/p&gt;

&lt;p&gt;Una vez instalada la extensión, VSCode les preguntará si desea abrir el contenedor con la configuración dentro de &lt;code&gt;.devcontainer&lt;/code&gt;. Una vez en VSCode van a ver los archivos dentro del contenedor y en su terminal ya van a estar dentro del contenedor y ahi mismo recomiendo que vayan trabajando con los comandos de Bench.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configurar Bench
&lt;/h3&gt;

&lt;p&gt;Correr el siguiente comando dentro de la terminal del contenedor. Puede que necesites abrir una nueva terminal en VSCode&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench init &lt;span class="nt"&gt;--skip-redis-config-generation&lt;/span&gt; &lt;span class="nt"&gt;--frappe-branch&lt;/span&gt; version-13 frappe-bench
&lt;span class="nb"&gt;cd &lt;/span&gt;frappe-bench
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apartir de acá, todos los comandos se ejecutan siempre dentro de la carpeta &lt;code&gt;frappe-bench&lt;/code&gt;, sino no va a funcionar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configurar hosts
&lt;/h3&gt;

&lt;p&gt;Tenemos que decirle a bench que use los contenedores correctos en lugar de localhost. Correr el siguiente comando dentro del cotenedor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench set-mariadb-host mariadb
bench set-redis-cache-host redis-cache:6379
bench set-redis-queue-host redis-queue:6379
bench set-redis-socketio-host redis-socketio:6379
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Editar archivo Procfile
&lt;/h3&gt;

&lt;p&gt;Abrir el archivo Procfile y quitar las tres lineas que contienen la configuración de Redis, ya sea manualmente o corriendo el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'/redis/d'&lt;/span&gt; ./Procfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Crear un nuevo sitio con bench
&lt;/h3&gt;

&lt;p&gt;Se puede crear un nuevo sitio con el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench new-site sitename &lt;span class="nt"&gt;--no-mariadb-socket&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sitename DEBE terminar con .localhost para hacer deploy locales.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench new-site mysite.localhost &lt;span class="nt"&gt;--no-mariadb-socket&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El comando pedirá la clave del usuario root de MariaDB. La clave por defecto es &lt;code&gt;123&lt;/code&gt;. También te pedirá que definas la clave del usuario &lt;code&gt;Administrator&lt;/code&gt; que se usará para logearse en Frappe.&lt;br&gt;&lt;br&gt;
Esto creará un nuevo sitio y un directorio &lt;code&gt;mysite.localhost&lt;/code&gt; dentro de &lt;code&gt;frappe-bench/sites&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
La opción &lt;code&gt;--no-mariadb-socket&lt;/code&gt; configurará las credenciales de la base de datos del site para que funcionen con docker.&lt;br&gt;
Si querés ingresar por navegador con &lt;code&gt;mysite.localhost&lt;/code&gt; tenés que hacer las configuraciones correspondientes en /etc/host si estás en Linux o el equivalente de Windows.&lt;/p&gt;
&lt;h3&gt;
  
  
  Establecer el modo desarrollador de bench en el nuevo sitio
&lt;/h3&gt;

&lt;p&gt;Para desarrollar una nueva app, él último paso será poner el site en developer mode. La documentación está disponible en &lt;a href="https://frappe.io/docs/user/en/guides/app-development/how-enable-developer-mode-in-frappe"&gt;este link&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench &lt;span class="nt"&gt;--site&lt;/span&gt; mysite.localhost set-config developer_mode 1
bench &lt;span class="nt"&gt;--site&lt;/span&gt; mysite.localhost clear-cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Crear una nueva app
&lt;/h3&gt;

&lt;p&gt;Para crear una nueva app hay que correr el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench new-app sample_app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;sample_app&lt;/code&gt; es un ejemplo. Los nombre de las apps deben llevar &lt;code&gt;_&lt;/code&gt; para separar sus palabras.&lt;br&gt;&lt;br&gt;
El comando irá pidiendo los siguientes campos para rellenar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;App Name: sample_app
App Title: Sample App
App Description: This is a sample app.
App Publisher: Acme Inc.
App Icon: icon-linux
App Color: &lt;span class="c"&gt;#6DAFC9&lt;/span&gt;
App Email: info@example.com
App URL: http://example.com
App License: MIT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por último, para instalar la app en el site hay que correr el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench &lt;span class="nt"&gt;--site&lt;/span&gt; mysite.localhost install-app sample_app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para más información detallada sobre las apps de Frappe tienen el &lt;a href="https://frappeframework.com/docs/user/en/guides/basics/apps"&gt;siguiente link&lt;/a&gt; de la documentación.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instalar una app
&lt;/h3&gt;

&lt;p&gt;También se pueda instalar una app ya existente. Previamente debe estar en un repositorio git.&lt;br&gt;&lt;br&gt;
En el siguiente ejemplo se descarga una app y luego se instala en el site.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench get-app myapp https://github.com/myusername/myapp.git
bench &lt;span class="nt"&gt;--site&lt;/span&gt; mysite.localhost install-app myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Arrancar Frappe
&lt;/h3&gt;

&lt;p&gt;Ejecutar el siguiente comando dentro del directorio &lt;code&gt;frappe-bench&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bench start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora podés logearte con el usuario &lt;code&gt;Administrator&lt;/code&gt; y el password que hayas registrado cuando creaste el site.&lt;br&gt;
Tu sitio ahora será accesible desde &lt;a href="http://localhost:8000"&gt;localhost:8000&lt;/a&gt; o si configuraste tu &lt;code&gt;etc/host&lt;/code&gt; la url que le hayas definido.&lt;/p&gt;
&lt;h2&gt;
  
  
  Arrancar manualmente el contenedor
&lt;/h2&gt;

&lt;p&gt;En caso de que no uses VSCode, podés arrancar el contenedor de forma manual con el siguiente comando:&lt;/p&gt;
&lt;h3&gt;
  
  
  Corriendo los contenedores
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; .devcontainer/docker-compose.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Y entrar al shell del contenedor de desarrollo con el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"TERM=xterm-256color"&lt;/span&gt; &lt;span class="nt"&gt;-w&lt;/span&gt; /workspace/development &lt;span class="nt"&gt;-it&lt;/span&gt; devcontainer_frappe_1 bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Y luego es repetir los pasos detallados más arriba en la sección &lt;code&gt;Configurar Bench&lt;/code&gt;&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>docker</category>
      <category>frappeframework</category>
      <category>python</category>
    </item>
  </channel>
</rss>
