Diario de una aplicación móvil de horóscopo (Python + React + NoSQL)

isvidal

No he estado actualizando esto porque me salio un flemon bastante gordo hace dos dias y estoy con un dolor de cabeza como si tuviera un taladro en la cabeza.

Aún asi traigo BIG NEWS.

Ya mande la aplicación para APPLE y.... como se comento paginas atras me la tiraron porque no quieren más aplicaciones de este tipo. RIP

En cuanto a Google sigo pendiente de su review, supongo que antes de fin de semana estara ya.

Una pena lo de iOS.

Hoy voy a intentar actualizar readmes y ponerlos bonitos y presentable de todos los repos involucrados.

Para el proximo proyecto estoy hecho un mar de dudas, hago un juego 2D, el proyecto de @AikonCWD me ha parecido muy interesante, y creo que podria resultar, teniendo en cuenta que suelo terminar lo que empiezo juejj. Pero claro, no es nada relacionado con mi carrera profesional...

3
covaga

pues menudo monopolio tienen los "primeros".

Kaledros

Es lo que tiene que para publicar algo en una plataforma con miles de millones de clientes potenciales tengas que pasar por el aro de un certificador. En web/desktop te basta con subirla a algún sitio y ya, en móvil estás a expensas de que Apple o Google te dejen jugar y no te quiten la pelota el día que les venga mal.

isvidal

Beta disponible en Android!

Español:
https://play.google.com/apps/testing/josep.astrale/join?hl=es

Ingles:
https://play.google.com/apps/testing/josep.astrale/join?hl=en

Una vez apuntados, enlace en el market:
https://play.google.com/store/apps/details?id=josep.astrale&ah=xNiaPQlQxNtW25WZA5rABjZTbek

1
covaga

apuntado

1
isvidal

Día 39

APP

Hoy he corregido unos temas de idiomas y del token de notificaciones push que no funcionaba en Android.

Estoy ahora mismito subiendo el .apk. Cuando me lo acepten lo lanzare ya ha producción y se finni el proyecto por el momento :3

Repositorios

3 1 respuesta
vincen

#216 Estaría guay que hicieras un resumen de todo el proceso que te ha llevado, cuantas horas creías que te iba a llevar, horas invertidas finalmente, dinero invertido, cuales son tus expectativas una vez lanzada a producción, por cuanto $$ la valoras, cosas que te han llevado mas tiempo del que esperabas, cosas que no te han gustado, etc :)

1 1 respuesta
isvidal

Día 40 🎉 LANZAMIENTO 🎉

https://play.google.com/store/apps/details?id=josep.astrale

5 1 respuesta
B

#218

Una cosilla que me he percatado. La plantilla de la play store está traducida, pero las fotos están en englando. Quizás estaría bien traducir esas fotos, ya que la gente lo primero que mira son las fotos y la información se transmite a través de ellas, la descripción no la lee nadie a penas xD

EDIT: Por cierto, buen trabajo si señor! Muy chulo

1 1 respuesta
isvidal

#219 Ya te he hecho caso:

3 1 respuesta
B

#220

Genital! Eres un currante tío

Seguramente ya lo hayas escrito por el post, pero te lo pregunto igualmente... tienes pensado descansar un poco después de este proyecto o adentrarte a otro proyecto del tirón? si la respuesta es la segunda, de que tienes pensado hacerlo?

Aprovecho y te hago otras preguntillas si no es molestia

  • está claro que has aprendido cosas en este proyecto, podrías mencionarlas?

  • que recomendarías a los novatos / recién salidos de sus estudios respecto hacer proyectos? obviamente hacer proyectos sirven para tenerlos de portfolio y es un plus de cara a la búsqueda de trabajo, pero me refiero en tema de organización etc.etc.

  • tienes intención de invertir dinero en publicidad como método de aprendizaje en lo que respecto ASO/SEO y quién sabe, a lo mejor sacarte unas monedas?

Saludos crack!!

1 respuesta
nobody1

Muy grande!!
He estado cotilleando el código, la parte del backend, el API de consulta pero no lo he encontrado (no tengo ni idea de Yii2).
Ya nos contarás que tal va de descargas y de monetización.

1 respuesta
Kaledros

¡Enhorabuena! Yo sigo pegándome con la conectividad de la mía, a ver si consigo arreglarla y la finiquito también.

Te ha quedado guapísima, la verdad. :)

1 respuesta
isvidal

#221 Merci! Luego hago un post o dos comentando todo el proceso, cosas que he aprendido, cosas que mejoraría, organización, cosas pendientes, y algun texto libre de reflexion.

De todas formas me quedan un par de cosas por hacer que estare haciendo estos días.

#222 La api esta aqui: https://github.com/jvidalv/vvadmin/blob/master/src/modules/api/controllers/AstraleController.php

#223 Grácias! He quedado contento con el resultado estético la verdad. Una pena lo de iOS

isvidal

Día 41.2 🎉

La aplicación ya esta disponible en Android: https://play.google.com/store/apps/details?id=josep.astrale

Backend

Hoy he implementado el encargado de lanzar las notificaciones push cada día, no me he complicado mucha la vida seteando interest y toda la pesca, se lanza una vez termina el scraper en python de sacar la data diaria y fin.

APP

He puesto un par de parches para que cuando alguien tiene el móbil en catalan y se baje la APP se le abra en castellano en lugar de ingles.

No estoy orgulloso, pero ir más alla me daba pereza:

Muy fan de esta línea:

Repositorios

8 días después
isvidal

POST PROYECTO

https://play.google.com/store/apps/details?id=josep.astrale

Resumen


Inicio

Llevaba con la idea de hacer una aplicación de horóscopo desde hacía unos meses, básicamente debido al auge de los frikis de instagram compartiendo estas cosas y de una articulo que leí de un crecimiento terrible de las apps de esto en el market.

Además, el año pasado me propuse sacar a producción una aplicación móvil cada año (El año pasado saqué una relacionada con eventos de pueblos pequeños).

Con estas dos cosas rondándome por la cabeza, y con las ganas de profundizar aún más en React Native me puse manos a la obra con la planificación.

Planificación

Tenía muy claro desde el principio que todo esto lo hacía para trastear con cosas nuevas, y con esto en mente planifique en consecuencia.

Necesitaria un alojamiento para mi NoSQL (Finalmente MongoDB) y un entorno donde pudiera automatizar el lanzamiento de los Scrapers (Con Python) encargados de recolectar la data y mantener mi aplicación viva.

Todos los caminos conducían a DigitalOcean y a mi Docker con CentOS que tengo montado para mi pagina web personal, blog, y backend del blog.

Pero quería llevarlo a un nivel más allá de meterme en la consola y hacer git pull origin master, quería implementar mi primer y propio entorno para poder hacer CD (Entrega continua en spanish)... Así que necesitaba un Jenkins.

Ejecución

Ya tenía todos los ingredientes preparados, Mongo para la data, Python para el scraping, React para la aplicación. Y de fondo, un Jenkins con sus pipelines orquestrando todo.

Planifique el proyecto para 1 mes de trabajo y al final fueron unos 40 días así que ni tan mal, también es cierto que acabe recortando algunas funcionalidades.

Ya había hecho muchos proyectos de React y React Native antes, así que por esa parte no tuve muchos problemas, más allá de aprender y profundizar aún más en algunos conceptos.

Los scrapers de Python no requerían de mucha complejidad, tuve guerra con Docker y Selenium (Para poder scrapear páginas que cargan el contenido en el cliente) pero fuera de esto todo fue bastante fluido.

No lleve Mongo mucho más allá, una vez me aprendí la sintaxis de los 3-4 comandos básicos para hacer querys, eliminar etc... Todo fue fluido como la seda.

Jenkins era EL MONSTRUO, trabajo con Jenkins pero nunca había montado uno de cero, y aún menos pipelines enteros.

Finalizando

Al final tambien tire de PHP para poder tener un poco de backend para poder visualizar datos y poder mandar notificaciones PUSH.

Fue una pena lo de Apple, pero bueno, en unos meses volveré a intentar subirla, y si cuela cuela.

En el tintero

Se ha quedado pendiente el poder consultar el dia anterior, o próximo, así como el horóscopo del mes y del año. Además de funcionalidades como logros por días seguidos o por días seguidos compartiendo el horóscopo para generar algo de retención.

Inversiones y expectativas


Recursos invertidos

  • Si hablamos de euros invertidos, la inversión es muy baja, por no decir 0, la maquina virtual donde corre todo está en DigitalOcean y pago 11 € por ella al mes, pero allí no solo tengo la APP si no que tengo muchas otras cosas.
  • Si hablamos de tiempo invertido, puedo estimar una media de 2 horas al día, durante 40 días = 80 horas.

Valoración económica

Teniendo en cuenta 80 horas, si valoro el precio de mis horas en 20-25 €, podríamos decir que vale unos 1500-2000 €.

Expectativas

Por ahora no voy a mover nada para sacarle crédito a la aplicación.

Conceptos en los que ahonde


Python

Nunca había trabajado con Python así que todo lo que hice fue puro aprendizaje, y para destacar cosas como BS, Selenium y cosas basicas como el venv, versiones, requirements, importación, sintaxis...

MongoDB

Era mi primera vez con NoSQL fuera de Redis, y ni tan distinto a una SQL de toda la vida. Aprendí sobre sus colecciones, organización, forma de insertar, buscar, borrar, modificar.

Jenkins

Aquí es donde creo que mas he crecido, o conseguido entender realmente el Jenkinsfile y como utilizarlo para conseguir los resultados deseados, ademas he mejorado mis skills con linux, y de paso algo de docker.

React Native

Donde mas experimentado era, no por eso he aprendido menos, cosas nuevas como AdMob y Clarifai. Y he solidificado mucho más mis skills con FlexBox y con React Native Navigation y su nueva API declarativa. Además me he llevado un extra de conocimiento en SVGS.

Futuros


El Blog

Estoy implementando (migrando) toda la lógica de wordpress wanna be de mi antiguo backend al nuevo, puede que haga un diario o seminario de esto, hay algunas cosas guays con como trata de imágenes, anchors automáticos, prismajs para los snippets de código...

C# y Godot

En paralelo estoy aprendiendo C# y Godot, y es muy posible que mi próximo y primer proyecto real con estas tecnologías sea un Flappy Bird ( Lo llamaré Flappy Bat ) para iOS y Android.

Viconsejos para gente sin experiencia


  • Picad código en cantidad, sin miedo pero con un objetivo, por pequeño que sea, sera código de mierda, no tengáis ninguna duda, pero aprendereis mucho de ello, y con cada proyecto tendréis algo más de visión global y algo más de experiencia.
  • Proyectos pequeños, cosas que aún cansados a mitad desarollo podéis terminarlo porque el final solo está unas horas allá (Un indexador de Emojis, una tienda de Colores, VUESTRA PÁGINA WEB).
  • Un commit mínimo por día, aunque un dia no tenéis ganas de programar, forzados a ni que sea corregir un string, un texto, el borde de una caja, pero hacedlo, por dos cosas, para pillar la costumbre, y otra, lo que cuesta es empezar, una vez empiezas no te das cuenta y llevas 2 horas programando.
  • Organización espartana, proyectos pequeños organización pequeña, mis dos herramientas de organización son Trello y Notepad++.
  • Nadie nace aprendido, ni nadie sabe de todo mucho, la diferencia entre alguien sin experiencia y un senior es que el senior sabe escoger las herramientas adecuadas para cada proyecto, no porque sea más inteligente, sino porque SABE que existen esas herramientas grácias a darse de ostias antes.
  • No os ralleis cuando entréis en la taberna/foro/noticia/articulo y veais a Desu/@Random escupiendo conceptos y frases de las cuales no sacais sentido alguno, yo la mayoria de veces tampoco no se ni de lo que habla pero de mis querys dependen que a personas reales les corten la luz y el gas o no. Con eso os quiero decir que no hace falta ser un leetcode expert ni un rockstar programmer para ganarse la vida bien de esto.

Repositorios

22 2 respuestas
bLaKnI

#226 Jajajaja, joder Vidal. Tienes los cojones de acero. Me he pateado tus 3 repos y hay suficiente material para cualquiera como para aprender con profundidad. Muy bien. Muchas gracias y buen trabajo.

--

  • Los dockerfiles, los jenkins configs y mucho material ahí, vale realmente la pena. :)

PD. he de reconocer que tengo varios temas pendientes... El Yii, estaría bien... Y React. React ni siquiera lo he olido. No me he movido de jQuery y NodeJS. Quizás va siendo hora...

Para multiplataforma, lo mejor React entonces? Vue? Angular? Usar sus frameworks como Native o Ionic?

1 respuesta
isvidal

#227 Yii2 es la versión China/Rusa de Laravel, y por la razón que sea en Barcelona está implantado en varias empresas importantes, entre ellas la mía. En occidente el rey de los frameworks de PHP es Laravel (Con respeto de Symfony).

En cuanto a React/Vue/Angular, no creo que haya uno mejor, sacando Angular de la ecuación, que no me gusta. React Native + Expo me parece un combo tremendo (Y ya maduro) para sacar apps para iOS y Android de forma muy fácil.

1 respuesta
alexsanro

#228 De primeras he leido un poco el post por encima y visto algunas cosillas de las que has ido poniendo. Muy grande!! Me lo apunto para leerlo mas a fondo que algunas cosas he visto para aprender.

Luego acabo de leer la primera frase de esto "Yii2" y me ha dado un no se que por dentro xD. Hace unos años trabajaba para una empresa que uno de sus clientes usaba Yii la versión primera, existiendo ya Yii2 y joder me acabo de acordar de todos los sufrimientos que pasaba para simplemente sacar unos datos de una llamada a base de datos. O puede yo fuera muy torpe que igual si xDD

2 respuestas
Zoko

#226

Eres muy grande, lo has llevado de principio a fin y yo creo que es de los mejores hilos que jamás ha habido en el subforo.

Ya nos irás contando si luego ahondas mucho en ASO y tal que tal le va a la app, y nada, quedamos a la espera de tus nuevos proyectos!

1 respuesta
bLaKnI

#229 No... yo sufrí Yii (1), y desistí.
Por eso el 2... quizás me incline mas por Laravel para catarlo alguna vez.

1 respuesta
isvidal

#229 #231 Nunca he trabajado con Yii1 así que no os puedo decir, pero Yii2 es fantástico, puedes cagar CRUDs y REST's a la velocidad del rayo. Puede que abra un diario ahora de cómo rehago el backend del blog en Yii2.

#230 Veremos, tengo varios proyectos en mente, rehacer mi página web con Nextjs y rehacer la aplicación Fiestas de Pueblo hace ya tiempo que me rondan, pero me da la pereza por ser más de lo mismo un poco por esto he estado estos días con C# y Godot.

7 días después
isvidal

Actualizo esto para decir que hoy he hecho mi primer pull request a un repo open source "grande".

Concretamente a la librería de componentes que utilizo para estilizar la app.

Pull que añade mi aplicación a su página de "showcase" y el icono de github a la misma para poder compartir la url del repo.

https://github.com/callstack/react-native-paper/pull/2011

Es una mierda de pull, pero es mi primerito pull de estas características y puessss feelsgoodman.

1 1 respuesta
bLaKnI

#233 xD mola!
¿hay manera de "capitalizar" esa app? A sabiendas de que es OS.

isvidal

Hoy me han abierto un tiquet:

https://github.com/jvidalv/astrale/issues/1

xddddddd

A ver si hago la app mas estable para continuar funcionando aún petando el scraper por los cielos.

Espero sacar tiempo este finde para hacer mas robusta esa parte.

Zoko

Ayer le pedi a un amigo que con su Android buscara tu app poniendo "Astrale" y no salia macho, la verdad que me quedé bastante rayado. Tan mal posiciona?

1 2 respuestas
isvidal

#236 Es un nombre bastante generico y más siendo tan nueva, es posible que en unos meses mejore el posicionamiento, yo para encontrarla utilizo Astrale y el nombre de desarollador, en este caso: Astrale Josep

Aqui abajo esta.

1 respuesta
Zoko

Lo que me extraña, #237, es que no hay ninguna llamada "Astrale", pensé que saldría entre las 5 primeras o así. Debe ser que no entiendo bien como funciona la Play Store para indexar.

1 1 respuesta
isvidal

#238 Supongo que "normaliza" el palabro del nombre que buscas y te lo mezcla con la categoria y tags definidos.

En este caso astrale, se parece mucho a Astrology, Astrologia y pues la IA hace el resto.

1 respuesta
QuitCat

#239 Si no recuerdo mal el nombre era de lo que mas peso tenía a la hora de la búsqueda. De hecho se aconsejan nombres mas largos, que tengan el nombre de la app y algo de descripción que te interese para búsquedas. Había algún post que no tengo localizado donde explicaban todos estos consejos
Por ejemplo:

  • eBay -> "eBay - Compra y Vende Electrónica, Moda y más"
  • Lidl -> "Lidl - Tienda online - Ofertas"
1 1 respuesta