Usar dispositivo Android como servidor de sistema de ventas

Compilar Sublime POS 3 en Android

En este post te mostraré cómo puedes usar Sublime POS 3 (punto de venta) en Android compilando por ti mismo el código fuente.

Al final vas a poder usar el sistema nativamente y en modo local en una tableta o teléfono, además de que podrás usarlo como servidor y permitir que otros dispositivos se conecten al mismo.

Por lo tanto, si cuentas con el source code de este sistema de ventas podrás usarlo nativamente en Android sin depender de un servidor, y podrás usarlo en teléfonos o tabletas.

Compilar sistema de ventas en Android

El software está hecho con Go y JavaScript usando el framework Buefy. SQLite3 es usado para el almacenamiento de datos.

Por lo tanto, este sistema puede ser compilado en cualquier plataforma (Raspberry Pi [sí, ya sé que usa Linux], MacOS, Linux, Windows, etcétera) que soporte Go, GCC, Git y Node con NPM.

Incluso podrías compilar el JavaScript en otra plataforma y solo depender de las otras herramientas.

En Android podemos usar Termux en donde podemos instalar todos estos programas y compilar, nativamente, este programa.

Así que podremos usar Sublime POS 3 en cualquier tableta, computadora o teléfono con Android e incluso usarlo como servidor.

Preparando entorno

Vamos a necesitar Termux, así que mira este tutorial para instalar Termux en Android. Igualmente configura todo como se indica ahí.

Luego vamos a instalar las siguientes herramientas:

  • git: go lo necesita para ciertas cosas, por ejemplo, descargar dependencias
  • vim: para editar archivos en caso de que sea necesario
  • go: el compilador de Go
  • gcc: el compilador de C y C++, ya que Go va a invocarlo para compilar SQLite3 que está escrito en C
  • node: intérprete de JavaScript en el lado del servidor
  • npm: gestor de dependencias de JavaScript

Comenzamos haciendo un package update y confirmamos en caso de que nos pregunte. Luego instalamos todo con:

pkg install git vim golang clang nodejs -y

Termux va a empezar a descargar todos los paquetes. El tiempo depende de la velocidad de tu internet. La opción -y es para responder Yes a todas las preguntas que nos haga antes de instalar cada paquete.

Instalando git, vim, node, go y gcc para compilar sistema de ventas para Android
Instalando git, vim, node, go y gcc para compilar sistema de ventas para Android

Copiando código fuente

Nota: si no tienes el código fuente mira cómo conseguirlo aquí.

Yo he copiado la carpeta contenedora del código a la raíz de mi teléfono (usando un cable USB) en tiendas-master.

Luego he copiado esa carpeta al almacenamiento de Termux con cp -r /storage/emulated/0 ~

Una cosa es el almacenamiento de Termux, y otra es la de nuestro teléfono. Termux no puede acceder a nuestro teléfono completamente, por eso tiene su propia “partición”.

Presta atención a que ~ es un alias de /data/data/com.termux/files/home/ así que igual podría haber quedado algo así:

cp -r /storage/emulated/0 /data/data/com.termux/files/home/

Luego de eso hice un cd para asegurarme de estar en la carpeta home, que es en donde está el código fuente en tiendas-master. Si hago un ls aparece lo siguiente:

Listar contenido de directorio - En tiendas-master está el código de Sublime POS 3
Listar contenido de directorio – En tiendas-master está el código de Sublime POS 3

Ahora ingreso a tiendas-master con cd tiendas-master. Si hago un ls ahí, deben aparecer README.md, compilar.py, etcétera.

Es decir, deben estar todos los archivos del código y no otra carpeta. Si hay otra carpeta, mueve su contenido a la carpeta superior.

Es importante estar en la ubicación donde está todo el código, porque desde ahí vamos a instalar dependencias y compilar.

Nota: te recomiendo leer también el post del código fuente para ver una guía adicional de cómo compilar para desarrollo y para producción.

Compilando lado del cliente

Comencemos instalando las dependencias de Node con npm install y luego un npm update.

Si vas a ejecutar el servidor de desarrollo ejecuta npm run start. En mi caso solo voy a compilar para producción así que no me interesa, por lo que ahora hago un npm run build.

Terminando de compilar lado del cliente de Sublime POS 3 en Android con Termux
Terminando de compilar lado del cliente de Sublime POS 3 en Android con Termux

Ahora tendremos el código del lado del cliente compilado en la carpeta dist, pero hay que hacer unas modificaciones.

Entonces ingresamos a dist con cd dist. Luego movemos la carpeta fonts a la carpeta css con mv fonts/ css.

Volvemos al directorio anterior con cd .. y finalmente movemos toda la carpeta dist a api con mv dist/ api/

Mover directorio dist a api
Mover directorio dist a api

Esto es porque ya tenemos el JS, CSS y HTML compilados. El programa de Go va a servir esa carpeta por medio de HTTP, así que deben estar en el mismo lugar que el ejecutable generado por Golang.

Ahora vamos a la carpeta api. Entramos a ella con cd api.

Sobre la verificación de archivos

Aquí hay una cosa importante, y es la verificación de archivos. He programado el servidor para que lea los archivos del cliente y compruebe que no han sido modificados (esto para evitar que alguien modifique el código JS una vez compilado).

Tú puedes analizar cómo funciona el código y ajustarlo, o simplemente deshabilitarlo. Yo lo deshabilitaré eliminando la comprobación de archivos del main.go, como lo dice el README, eliminando la línea 61, 62 y 63 con vim main.go y haciendo los ajustes necesarios:

Deshabilitar verificación de archivos en Go
Deshabilitar verificación de archivos en Go

Nota: si se te hace tedioso editar código en el teléfono o tableta puedes editarlo en tu computadora y hacer todas las pruebas necesarias para finalmente pasarlo a Android y compilar sin modificar.

Compilar lado del servidor

Ahí mismo en la carpeta api vamos a ejecutar go build -tags produccion, esto es para compilar para producción. Aquí puede que tarde un poco, todo depende del poder de tu teléfono.

Nota: si tú quieres compilar en modo desarrollo, ejecuta go build -tags desarrollo.

Luego de compilar, verifica que en ese mismo directorio se encuentre la carpeta dist, el archivo llamado tiendas y los archivos esquema_negocios_sqlite.sql y esquema_spos_sqlite.sql.

Compilar Sublime POS 3 para Android
Compilar Sublime POS 3 para Android

Si ya verificaste que todos los archivos existen, entonces ya puedes ejecutar la app con ./tiendas y te debe mostrar el mensaje que se ve arriba (el de Servidor iniciado).

Puedes detener el servidor en cualquier momento, para ello vuelve a Termux y presiona CTRL + C.

Usando punto de venta compilado en Android

Ten en cuenta que la compilación solo es necesaria la primera vez y cada que hagas cambios. Si ya no necesitas hacer cambios y quieres ejecutar el programa de nuevo, solo tienes que ir a api y ejecutar ./tiendas.

Toma en cuenta que es necesario tener a Termux ejecutándose en segundo plano. Ahora en tu navegador preferido visita http://localhost:2106/static/ y debes ver algo así:

Sublime POS 3 compilado para Android
Sublime POS 3 compilado para Android

Ya puedes registrarte, crear negocios, productos, vender, etcétera. Tienes un punto de venta completo en tu teléfono y/o tableta.

Nota sobre creación de usuarios y login

Ten cuidado con los espacios al final de las cadenas que algunos teclados de Android colocan al escribir.

En mi caso uso Swiftkey y el mismo deja un espacio extra al final de mi correo (si es ejemplo@gmail.com entonces lo pone como ejemplo@gmail.com  ); esto hace que al iniciar sesión me diga que el correo o la contraseña son incorrectos, ya que el sistema toma en cuenta los espacios.

La solución es simplemente verificar eso, y en caso de que haya un espacio hay que borrarlo.

Bonus: usar dispositivo Android como servidor

Usar dispositivo Android como servidor de sistema de ventas
Usar dispositivo Android como servidor de sistema de ventas

Ya vimos que podemos usar el sistema en modo local, pero si estamos en una LAN podemos acceder a ese servidor (teléfono o tableta) desde otro dispositivo, ya sea móvil, laptop o pc de escritorio.

Tengo un artículo explicando cómo usar Sublime POS 3 en red, te invito a leerlo por si te quedan dudas.

Para ello necesitamos averiguar la IP, entonces en una nueva sesión de Termux escribimos ifconfig y en wlan0 nos dirá una IP.

En mi caso es la 192.168.100.36, si accedo a http://192.168.100.36:2106/static/ desde otro dispositivo puedo usar el sistema y todos los datos se quedan en el servidor.

Como puedes ver en la imagen, estoy usando mi teléfono como servidor y conectando mi laptop al mismo (es el día opuesto.png).

Conclusión

Esto es lo bonito de usar herramientas multiplataformas y no confiar en lenguajes de programación o IDEs que nos ofrecen todo fácilmente pero no nos dicen cómo funciona (te estoy mirando a ti, Visual Studio y lo que tenga que ver con Microsoft).

Después de esto puedes ejecutar el punto de venta al inicio con Termux y hacer muchas cosas más como respaldos o cualquier otra cosa que Linux permite.

Recuerda que ya expliqué en otro post cómo obtener el código fuente de Sublime POS 3, y que las características de punto de venta están en mi otro artículo.

Para terminar te dejo con más artículos sobre Termux y Sublime POS 3.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario