Evenge is an event management application, which allows us to create, notify and create reports based on the audience.
All this of course on a Cloud environment, ie an application entirely in the cloud, with all the advantages that entails.
Broadcast Social Networks, E-mail and Blogs.
Está implementado en Google App Engine y usa los framework Jinja, Webapp2 y Bootstrap
1. Desarrolladores:
● Carlos Campos Fuentes
● Francisco Javier Expósito Cruz
● Iván Ortega Alba
● Victor Coronas Lara
Evenge Gestor de eventos
1
2. ÍNDICE
1. ¿Qué es Evenge?
2. Google App Engine
1. ¿Qué es?
2. ¿Por qué lo hemos usado?
3. ¿Qué ventajas e inconvenientes que presenta?
3. Método de trabajo del equipo
1. Slack
2. GitHub
4. Diseño de la app
1. MVC(Modelo Vista Controlador)
2. Frameworks:
1. Jinja
2. Webapp2
3. Bootstrap
3. Diseños de clases
5. Construyendo unas bases sólidas de desarrollo
1. Herramientas de Provisionamiento
2. Herramientas de IC y despliegue.
3. Herramientas de Tests.
6. Pantallazos de intefaces
2
3. 1. ¿QUÉ ES EVENGE?
● Evenge es una aplicación de gestión de eventos, la cual nos
permitirá crear, notificar y crear informes en base a los
asistentes.
● Todo esto por supuesto en un entorno Cloud, es decir, en
una aplicación íntegramente en la nube, con todas las
ventajas que esto conlleva.
● Difusión por Redes Sociales, E-mail y Blogs.
3
4. ● Gestión de usuarios de la plataforma.
● Gestión de información acerca del evento (ponentes, lugar, temática, asistentes, etc).
● Inscripción por parte del asistente al evento y publicación automática en las redes
sociales.
● Publicación del material relacionado con el evento (Fotos, documentos, asistencia, etc).
● Gestión de calendario con los eventos próximos.
● Generación a partir de evento de diplomas para los asistentes e informes para los
organizadores incluyendo información acerca del evento (asistentes, ponentes, resumen
del evento, etc).
1. ¿QUÉ ES EVENGE?
1. Características
4
5. 2. Google App Engine
2.1 ¿QUÉ ES?
● Google App Engine (GAE), es una plataforma de servicio que te permite
ejecutar tus aplicaciones web en la infraestructura de Google.
5
6. 2. Google App Engine
2.2 ¿Por qué lo hemos usado?
● Usando las infraestructuras de Google de una
forma sencilla y rápida.
● Da soporte para diferentes tipos de lenguajes:
o Python
o Java
o Go
o PHP(incorporado recientemente)
6
7. 2. Google App Engine
2.3 ¿Qué ventajas e inconvenientes que presenta?
Ventajas:
● Almacenamiento de datos distribuido muy potente.
● Nos facilita la forma de administrar nuestra aplicación con un portal web.
● Generar un entorno de desarrollo local exactamente igual que GAE en la nube.
● Programar en Python. Además incluye varias API y herramientas de desarrollo
muy fácil de usar.
● En gratis te ofrece: 500MB de espacio para tu aplicación y admite 5 millones de
visitas mensuales.
● Es altamente escalable, así como la estabilidad y la seguridad.
● Tareas programadas configurables (CRON).
7
8. 2. Google App Engine
2.3 ¿Qué ventajas e inconvenientes que presenta?
Alguno de los inconvenientes que nos encontramos son:
● Para almacenar datos y archivos en modo lectura y escritura es
necesario utilizar un sistema de archivos virtual sobre el
DataStore.
● Solo se puede ejecutar código a través de consultas HTTP.
● Los usuarios de Python pueden subir módulos para su uso en la
plataforma, pero no aquellos que están completamente
desarrollados en C o Pyrex
● El soporte para SSL solo está disponible par dominios
*.appspot.com
8
9. 3. MÉTODO DE TRABAJO DEL EQUIPO
3.1 SLACK
● Unificar las comunicaciones del grupo de trabajo.
● Crear diferentes canales tanto públicos como privados.
● Nos permite integración máxima:
o GitHub
o Google docs
o Twitter
o ZenDesk
o Heroku
o Etc...
9
10. 3. MÉTODO DE TRABAJO DEL EQUIPO
3.2 GitHub
● Github es un servicio de alojamiento de repositorios de software libre
(aunque es posible la creación de repositorios privados)
● Proyecto y blog (bajo Jekyll) almacenado en el repositorio Evenge
● Nuestro método de trabajo:
o En la rama master, tenemos la versión estable.
o Cada desarrollador tiene su propia rama de trabajo.
o La mezcla con master, se realizan a través de pull request.
o Solo uno es el encargado de revisar los pull request y realizar la
mezcla con master.
10
11. 4. Diseño de la app
4.1 MVC(Modelo Vista Controlador)
11
12. 4. Diseño de la app
4.2 Diseños de clases
El modelo está dividido:
● Usuarios
● Organizaciones
● Eventos
● Asistentes
● Ponentes
Y éstas otras para poder gestionar las relaciones:
● Organizacion-usuario
● Evento-ponente
12
13. ● Es una librería que nos permite renderizar script en
Python a HTML de una forma "Python style".
● Es un motor de plantillas con todas las funciones de
Python.
● Tiene soporte completo de Unicode, un entorno de
ejecución, seguridad incorporada, utilizada por grandes
proyectos y se encuentra bajo los términos de la
licencia BSD.
4. Diseño de la app
4.3 Frameworks
13
14. ● Integrado en el SDK de App Engine.
● Se basa en request handler or simply handler: a
exigencia que contiene la lógica de la aplicación para
manejar la petición.
● La decisión de usar Webapp2 es por :
o es ligero,
o simple y
o contiene el mismo sistema de las plantillas de
Django
o además de que es totalmente compatible con GAE
4. Diseño de la app
4.2 Frameworks
14
15. ● Es el framework desarrollado por Twitter que
permite crear interfaces web con CSS y
Javascript Responsive Desing.
● Establece estilos rápidamente asignando
clases en el HTML.
4. Diseño de la app
4.3 Frameworks
15
16. 5. Construyendo unas bases sólidas de desarrollo
5.1 Herramientas de aprovisionamiento
● Docker crear imágenes preconfiguradas con SO y herramientas, en
nuestro caso, para el aprovisionamiento de un entorno de desarrollo para
Evenge
● En Evenge automatizamos la creación del Docker mediante un script
denominado Dockerfile que tenemos en nuestro repositorio.
● Así como otro script para automatizar el proceso de instalación de
Docker, todas las dependencias que requiere para su correcto
funcionamiento y instalamos la imagen producida con el Dockerfile.
16
17. 5. Construyendo unas bases sólidas de desarrollo
5.2 Herramientas de IC y despliegue
● Integración Continua:
o Este sistema de integración continua permite crear, provisionar,
testear y desplegar nuestra app en una máquina virtual, en el
servidor que queramos.
o Además trabaja con IaaS y PaaS como:
Heroku,
Amazon Elastic Beanstalk
OpsWorks AWS
o cualquier proveedor de infraestructura después de una compilación
exitosa.
17
18. 5. Construyendo unas bases sólidas de desarrollo
5.2 Herramientas de IC y despliegue
● Despliegue:
o Podemos desplegarla en local para realizar toda la
batería de pruebas que necesitemos.
o Para el despliegue final es tan sencillo como darle al
botón “Deploy”.
18
19. 5. Construyendo unas bases sólidas de desarrollo
5.3 Herramientas de Tests. NoseGae y Shippable
● Cuando Shippable llega al apartado de ejecución de test a la hora del despliegue, en nuestro
caso del archivo test.py, procede a realizar los test unitarios de este módulo. En nuestro
archivo podemos encontrar funciones como esta:
def testInsertarEvento(self):
evenge = Evenge()
evento = Evento (
evt.nombre = “Evento de prueba”
evt.tipo = 1
… )
response = evenge.testInsertarEvento(evento)
self.assertEqual(response, True)
19
20. 5. Construyendo unas bases sólidas de desarrollo
5.3 Herramientas de Tests. NoseGae y Shippable
● NoseGAE establece el entorno de desarrollo GAE antes de
su prueba, puede escribir fácilmente test funcionales sin
tener que arrancar realmente el servidor dev. El plugin
también configura e inicia una instancia TestBed
● Simplemente es la comprobación de si la respuesta a una
función dá el valor esperado. Si es así, el test es
satisfactorio, de lo contrario, el test será fallido y Shippable
no procederá al despliegue
20
21. 6. Pantallazos de interfaces
21
Desde esta pantalla podemos crear un nuevo usuario.