Diseño y desarrollo de un árbol genealógico donde registrar y almacenar recetas familiares.
[Link a la web]Herramientas
“¿Qué os apetece comer hoy?” “¿Se os antoja algo?” “No se me ocurre nada...” Son algunas de las frases recurrentes de mi padre en el día a día. Y cuando nos pregunta, el resto de la familia nos quedamos tan en blanco como él.
“¿Cuál era el truco para que quede la tortilla tan jugosa?” “¿Tienes por ahí la receta del pollo que hacía la abuela?” Son otras preguntas que solemos hacerle nosotros a él. Ya que hay millones de recetas en Internet, pero seguro que ninguna sabe igual que como lo hacía la abuela.
¿Cómo podríamos crear un árbol genealógico para registrar las recetas de cada miembro de una familia, de forma que estén accesibles para todos los familiares, y que a lo largo de las generaciones se pueda conservar y transmitir ese legado culinario.?
Tecnologías y arquitectura
El frontend está desarrollado con React y Vite, organizado en páginas (árbol, familias, colecciones, favoritos, perfil, receta...) y con la comunicación con la API centralizada en un único módulo. El backend es una API REST con Node.js y Express, con CORS configurado para permitir las peticiones desde el frontend, y los datos se guardan en MongoDB. Las imágenes se gestionan con Multer y Cloudinary, y todo el proyecto, frontend y backend, está desplegado en Vercel.
Autenticación y seguridad
El registro y el inicio de sesión funcionan de forma manual o con Google OAuth. Las contraseñas nunca se guardan en claro: se cifran con bcrypt antes de almacenarlas. Tras iniciar sesión, la API emite un token JWT (con jsonwebtoken) que el frontend envía en cada petición, y las rutas privadas lo verifican antes de responder. Se usa crypto para generar los tokens de las invitaciones.
Familias y árbol genealógico
Cualquier usuario puede crear una familia, sea o no miembro de ella. Dentro de cada familia se construye el árbol creando nuevos miembros a partir de otros ya existentes, y la aplicación calcula las relaciones de parentesco entre ellos. Es la parte más característica del proyecto y la que más lógica concentra.
Recetas, favoritos y colecciones
Las recetas se crean atribuidas a un miembro de la familia, con su propia página de detalle. Los usuarios pueden guardarlas como favoritas y organizarlas en colecciones propias. Hay además un buscador general sobre todas las familias y otro específico dentro de cada una.
Colaboración y compartir
Las familias, colecciones y recetas se pueden compartir mediante invitaciones. Además, un usuario real puede vincularse a un miembro del árbol y tomar el control de ese perfil, pudiendo editar igual que el resto de sus familiares. El sistema envía notificaciones cuando un familiar realiza acciones en la familia.