Amadeus (II) Prototipo y Base de Datos

Post continuación de Amadeus: culturízate en música clásica (I)

Vamos a cambiar la estrategia.

En lugar de preocuparnos del problema de obtener la información de manera automática – a base de scraping y filtrado – vamos a empezar a construir la aplicación desde el otro lado: del lado del usuario.

Para ello, vamos a construir un prototipo de lo que será la aplicación, y construiremos en este “episodio” la estructura de la base de datos sobre la cual trabajaremos.

Un pequeño prototipo

El prototipo es el siguiente:
prototipo(qué full queda hacerlo en boli azul y sacarle una mala foto con el móvil, dieu)

El prototipo de la app incluye:
  • Título / Logo de la app
  • Pequeño slogan / what the hell is this about (“Aprende música clásica”, le daremos un toque marketiniano)
  • Lecture / Lección: aquí vamos a añadir un desplegable con la lección que queremos aprender.
    • En un principio había pensado en un desplegable doble. En el primero, qué tipo de lección (general / compositor / época / tipo de obra). En el segundo la lección concreta (Vivaldi, Música romántica, Requiem). En lugar de ello usaremos barras separadoras en el desplegable; la idea es mantener la app lo más minimalista posible.
  • Slider música vs. aprendizaje. Este slider, que creo que puede ser curioso y usable, nos indicará el ratio de información que vamos a utilizar respecto de la música que sonará. Ejemplo: un ratio de aprendizaje bajo simplemente nos indicará el nombre de la canción antes de que esta suene. Un ratio alto nos dará 4-5 perlas informativas – veremos exactamente – antes de cada canción. Un añadido que en lugar de complejizar, me da la sensación que transmite la idea de “juego”.
  • Botón de Play: que comience la música.
El prototipo es el estado inicial de la app. Aparte de este estado, tenemos únicamente uno más, cuando la “lección/música” está en play.

Una vez que comienza la música / voz en off informativa, el play se convertirá en un pause y comenzaremos a observar el vídeo de YouTube* cuando suene la canción, y el texto informativo cuando se esté leyendo por la voz en off.

* ¿o pista de Spotify? ¿tú qué usarías? coméntame por Twitter si lees esto y tienes una preferencia

La base de datos

Bueno, vamos a construir ahora la base de datos:
database1
La base de datos está subida a GitHub:
https://github.com/ojoven/amadeus/blob/master/db/amadeus.sql

Algunas ideas:

  • Esta es una versión simplificada de la base de datos, únicamente con aquellas tablas, campos estrictamente necesarios. He renunciado a introducir de momento “épocas” de la música clásica, también estilos de composición (sinfonía, requiem, etc.). En un momento pensé en introducir instrumentos (es más, creé las tablas apropiadas) pero vamos a quedarnos en lo muy básico para comenzar; ya habrá tiempo de añadir opciones si fuera necesario.
  • Hay 2 tablas para las lecciones, unas relacionadas directamente con los compositores (lessons_composers) y otras con las obras (lessons_compositions). ¿Podríamos tenerlas todas en una misma tabla, quizás, añadiendo un campo “type_lesson”? Es otra opción, ahora mismo no veo claro cuál es mejor de ambas, aunque esta separación me resulta interesante ahora mismo – más limpia – probablemente sea menos escalable – si tenemos que crear una tabla por cada tipo de lección que podamos añadir en el futuro (lessons_instruments, lessons_periods, etc.)
  • Hemos añadido un campo “relevance” en las tablas de lecciones ya que eso sí parece básico que algunas lecciones serán mucho más relevantes que otras (cuándo nació el compositor, etc.) si queremos que la app realmente nos de buena información.
  • Como anécdota, veréis que aunque probablemente (aún no está 100% decidido, pero casi) la app sea en español (puesto que el público objetivo sois vosotros y yo, que quedará en familia, vamos) el código, y la base de datos están en inglés. Eso siempre, en todos mis proyectos, my friends.
Esto es todo por hoy.
Como pequeña reflexión decir que documentar el proceso mientras lo voy desarrollando está resultando muy interesante, aunque es cierto que me frena en el propio desarrollo. Tendré que buscar un buen equilibrio entre contar lo que estoy pensando/haciendo, y hacer ;)

Salut!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>