= 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