Emprendedor Tecnológico & Backend Developer mis preferencias
son Python/Django & Entusiasta de JavaScript.
@kevinzeladacl
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Empresas & Startups
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
www.appfactory.cl
Cofounder Creativo
Partner tecnológico de negocios
Desarrollamos Web/Mobile Apps
www.findfounders.com
Cofounder & Developer
Plataforma para encontrar socios
de negocios e inversionistas.
www.primerocotiza.cl
CTO
Plataforma para cotizar servicios
a través de un formulario único
Comunidades
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
www.programadores.cl
Cofounder & Organizador
Red de programadores e
informáticos de Chile
www.suricataorg.com
Cofounder
ONG dedicada a entregar un
valor agregado a la educación
www.kevinzelada.cl
Developer
Web/Blog personal con tips,
articulos, consejos, etc.
Caso de ejemplo : FindFounders.com
Tema de Charla
“Creando un
MVP con DJANGO”
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Qué es Django?
Un framework web de alto nivel escrito en Python
que fomenta el desarrollo rápido y limpio
y el diseño pragmático.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Quiénes usan Django?
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Django es Python
● Python es un lenguaje de script de código abierto.
● Es multiplataforma: Linux, Mac OS X y Windows.
● Es multiparadigma: Funcional y orientado a objetos
● Es muy legible y conciso
● Es interpretado: No necesitamos compilar nuestros programas
● Python es fuertemente tipado pero tiene tipos dinámicos:
○ Una variable puede cambiar de tipo en ejecución pero el tipo se tiene en cuenta para las
operaciones
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Sigue el patrón MTV
Separa datos, interfaz de usuario y lógica de control:
★
Model → modelo de datos (models.py)
★
View →vistas de datos (views.py): qué
datos se presentan
★
Template → plantillas de páginas
(generalmente archivos HTML): cómo
se presentan los datosEl controlador es el propio framework
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Qué hace Django?
Provee una estructura de trabajo bajo el patrón Model Template View
● Mapea objetos Python con la base de datos (ORM)
● Permite diseñar URLs amigables para buscadores (útil para SEO)
● Tiene un sistema de plantillas sencillo para diseñadores
● Genera una interfaz de administración automática
● Dispone de un framework para manejar formularios
● Puede gestionar sesiones de usuario, autenticación, caché, almacenamiento,
sitemaps, internacionalización, etc.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Qué es un MVP?
● Producto mínimo viable es la versión que nos permite lanzar el producto
con el mínimo de features (características) posible pero que siga
entregando el valor agregado de nuestro producto o servicio.
● Nos permite aprender información relevante de su lanzamiento y uso de
los usuarios mediante una serie de métricas.
● Tratamos de comprobar si los early adopter estan dispuestos a pagar por
nuestra solución a su problema y si entregamos el producto o servicio
adecuado?
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Qué necesito para crear un MVP?
1. Tener una idea
2. Aterrizar tu idea
3. Establece un plazo
4. Evita perfecciones
5. Lanza rápido
6. Analiza tus feedback
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
¿Qué es FindFounders.com?
● Es una plataforma que permite encontrar socios de negocios o
inversionistas. Donde publicas tu aviso/oferta y esta puede ser
respondida por los usuarios de la plataforma.
● Stack
○ Django Framework
○ PostgreSQL y Redis
○ Digital Ocean (ubuntu)
● Tiempo : 1 mes - Tiempo promedio para un MVP
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
ORM - Simpleza en la BD
Es una herramienta que te permite realizar consultas SQL a la Base de
Datos, SIN UTILIZAR SQL, ¿Cómo es eso?, un ejemplo:
Sin ORM:
SELECT * FROM “autores_autor” INNER JOIN “autor_libro” ON (“autores_autor”.”id” = “autores_libro”.”autor_id”)
INNER JOIN “autores_libro_librerias” ON (“autores_libro”.”id” = “autores_libro_librerias”.”libro_id”)
INNER JOIN “autores_libreria” ON (“autores_libro_librerias”.”libreria_id” = “autores_libreria”.”id”) WHERE “autores_libreria”.”
nombre” = “La Cultura”
Con ORM:
Autor.objects.filter(libros__libreria__nombre = “La Cultura”)
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Las Migraciones - Modelos DB
Las migraciones son cómo almacena Django cambios a sus modelos (y por
tanto el esquema de base de datos)
Son simplemente los archivos en el disco. Puedes leer la migración para su
nuevo modelo si se quiere; que es el archivo app/migrations/0001_initial.py .
Cada cambio en la DB genera un archivo de migracion solo para la app
correspondiente, permitiendo tener un historial, hacer rollback, corregir
errores, etc.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
VISTAS - Todo es Python
“Django es un framework web de alto nivel”
Eso está muy claro en la definición, pero ahora agregaremos algo:
“Django es un framework web de alto nivel escrito en Python”.
Gracias a esto Django hereda todas las características y facilidades
que nos da Python, entre ellas escribir código bastante fácil de
entender, y sobre todo te permite desarrollar aplicaciones muy
rápidas y potentes.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Modular
El ser modular permite trabajar tu aplicación de forma escalable
Permite que FindFounders pueda sumar mejoras constantemente.
Al ser modular se pueden integrar apps externas que apoyen el proyecto
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
pip install unipath # Para manejar referencias de directorios dentro del proyecto
pip install Celery # Para manejar tareas en segundo plano
pip install djangorestframework # Para crear api rest con django
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Cada Apps es un módulo
del proyecto.
Funcionan como un
ecosistema independiente lo
que permite al equipo
trabajar en funciones
distintas de forma ordenada.
Ejemplo: FindFounders
Sistema de Cache
Otra integración fundamental es Redis
Un sistema de caché permite que el impacto a tu
sistema y/o DB se vean disminuidos.
Menos consultas a la base de datos, ya que la data se
almacena temporalmente en una db secundaria
Ideal para chat, notificaciones, o muestra de data sin
cambios frecuentes.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Deploy
Recomiendo 100% Digital Ocean para MVP
También puedes usar Heroku, Openshift, etc.
Consejo : No sean RATAS! son solo 5USD
FindFounders esta en Digital Ocean, de esta
forma tengo una infraestructura estable mientras
dura mi etapa de MVP
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl
Consejos Finales
Si tienen una idea que no te detenga el diseño.
El mejor feedback es el de tus propios clientes.
Aterriza tu proyecto, hazlo simple para un tiempo razonable.
Que el lenguaje no te limite: Usa lo que mejor manejes.
Tienes una idea puedes contactarme en : www.kevinzelada.cl | www.appfactory.cl | yo@kevinzelada.cl