Timbre
El timbre es una aplicación para timbrar Se originó como conejillo de indias para explorar tecnologías desconocidas hasta ahora en Sofhouse, en particular
- https://developers.google.com/protocol-buffers/ Protocol Buffers
- http://www.grpc.io GRPC
- https://golang.org Golang
- https://www.android.com Android
En el momento e escribir este documento, las rama de desarrollo de de los repositorios timbre-porto y timbre-android y timbre-go es la rama publico
ie, git checkout publico
Intenciones de Arquitectura
La intención de arquitectura de este proyecto es utilizar la herramienta más adecuada para el desarrollo en cada plataforma. En efecto no busca ser un desarrollo cross-platform, sino una infraestructura para facilitar el desarrollo en múltiples plataformas, cada desarrollo acudiendo a las mejores herramientas, las más adecuadas para ese entorno.
Para mensajes asíncronos entre servidor y cliente se utiliza Firebase Cloud Messaging, enviando ProtoBuffers. la especificación de cuándo se manda qué, no existe, pero todo lo que se manda es un Protobuf definido en timbre-proto.
Si se pregunta esto dónde lo leo, diríjase a timbre-go/utils/fcm.go
y luego a timbre-android/.../messaging/FCMService.java
Timbre Proto
En el repositorio bitbucket.com/sofhouse/timbre-proto
se encuentran las definiciones de los protocolos de comunicación.
adicionalmente existen scripts para generar código para java, golang, objetive-c y hay trabajo en curso para generar código en typescript con grpc-web, https://github.com/improbable-eng/grpc-web
Este repositorio sirve como la especificación sobre la cual se basarán todas las aplicaciones del sistema.
Timbre Android
El proyecto de bitbucket.org/android utiliza las librerías en Java para Android, y androide studio como IDE
git checkout publico git submodule init pushd timbre-proto git pull timbre-proto git checkout publico popd
El sistema Gradle https://gradle.org se encarga de instalar dependencias y compilar la especificación en protocol buffers para usar los endpoints desde la aplicación.
El Keystore para la publicación se encuentra en el iMac de David.
/Users/jborda/Dev/timbre/net.sofhouse.timbre.jks
ambas claves : Timbre2017 kekey alias: timbre-publico-25
Esta información le será util cuando esté generando APKs firmados para subir una nueva verisón a la playstore.
Despliegue
Consulte google para los pasos necesarios para genera apks firmados y subir versiones nuevas a la playstore. Esto es estándar para Android Studio.
Timbre Go
Es un servidor que implementa los servicios GRPC definidos en timbre-proto. Si no sabe en qué entorno trabajar este código, bien pueda instale VSStudio Code con las herramientas para GO. funcionan bastante bien.
El servidor utiliza gorm https://github.com/jinzhu/gorm para definición de modelos.
Aún no hay una propuesta de esquema para manejo de migraciones que alteren los modelos existentes destructivamente. El comando go run main.go migrate
únicamente migra aditivamente, no destrye ni altera columnas, tablas o incides.
El código está bastante probado unit-testeado (mostly happy executions). Utiliza sqlite3 y/o postges según la configuración.
El readme del proyecto explica lo necesario para ponerlo a andar, probar, compilar.
A diferencia del proyecto Android, cambios a la especificación de timbre-proto no producen una generación de código al hacer build.
Es necesario que en el momento de cambiar los protos, se ejecute en ese repositorio compile-go.sh
para generar el código en go, y luego si darle commit.
La configuración de llaves para envío de mensajes FCM asíncronos a la aplicación está quemada en el módulo encargado y sería adecuado sacarlo al archivo de configuración.
Despliegue
Existe un despliegue en tiendas playstore en la cuenta de sofhouse24 Esas apliaciones le pegan al servicio alojado en las oficinas de sofhouse con el subdominio timbre.sohfouse.net