Esta es la última de las mini aplicaciones que quiero desarrollar en esta primera serie y, por tanto, es la que más complejidad quiero que añada.
Por eso, al hecho de implementar el front y el back como TypeScript, le quiero añadir la gestión de la API de recetas mediante GraphQL.
La API de recetas, además, deberá conectar con una base de datos MongoDB donde pretendo almacenar todas las recetas y sus ingredientes.
Mi intención es que el desarrollo de esta solución incluya la posibilidad de una mejora que permita integrarla en un sistema de gestión de recetas bastante más complejo, si llegase el caso.
Objetivos principales
Frontend
- Desarrollar un diseño responsive que permita su integración en dispositivos móviles.
- La aplicación va a estar gestionada desde una única página pero va a permitir el uso de rutas para acceder a las recetas.
- Todo el sistema estará desarrollado en TypeScript
Backend
- API conectada con base de datos MongoDB
- Gestión de la API mediante GraphQL estandarizando las queries y las mutations.
- El backend también estará escrito en TypeScript
Base de datos
Base de datos NoSQL con dos colecciones de documentos principales: recetas e ingredientes, relacionadas entre sí 1:n.
La gestión de los distintos elementos tipados la va a hacer la propia API, puesto que tendrá que añadir elementos de a los objetos definidos.
Así, mi idea es que los Intgredientes sean, en realidad, un objeto que incluya su ID, la cantidad y el peso.

Objetivos secundarios
La implementación del tipo Ingrediente puede abrirme a la posibilidad de introducir datos específicos de los ingredientes, esto es, información nutricional o el precio.
Aunque en la primera versión de esta aplicación no van a tener una utilidad real, quiero dejar preparada la estructura de datas para posibles futuras actualizaciones.
El problema que esto plantea es que su gestión genera alguna capa más de dificultad, tanto a nivel de la gestión de los datos, como de la interfaz de usuario a la hora de introducir nuevos ingredientes.