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.
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.
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:
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.
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:
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.
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
.
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/
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
.
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:
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.
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
.
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
.
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í:
Ya puedes registrarte, crear negocios, productos, vender, etcétera. Tienes un punto de venta completo en tu teléfono y/o tableta.
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.
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).
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.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.