Volver al inicio

Full-stack Project

El Ritual del Tono

Encontrá el tono exacto de tu artista favorito.

Construí un motor de búsqueda inversa para guitarristas: buscás por artista y canción, y la app te devuelve la cadena de señal completa (guitarra, pedales, amplificador) para replicar ese sonido. Stack MERN, deployado en Vercel.

Hero shot — página principal de El Ritual del Tono mostrando un artista y su cadena de señal

El desafío

Hacer que un usuario agregue 5–8 productos al carrito con un solo click, sin duplicar items, respetando stock, y sincronizando estado entre backend y Context API. La transacción tenía que sentirse atómica desde la UI.

Esquema de las 3 colecciones MongoDB del proyecto: Artists con Songs como subdocumentos, Gears reutilizables y Orders

Cómo lo resolví

  1. 01

    One-Click Setup atómico

    Endpoint dedicado que recibe un array de IDs, valida disponibilidad en MongoDB, y retorna solo los ítems agregables. El frontend actualiza el carrito en una sola operación, sin que el usuario vea productos parcialmente cargados.

  2. 02

    Gear compartido entre artistas

    David Gilmour y John Mayer usan pedales similares. Si modelaba cada gear como único por artista, la base explotaba. Solución: colección Gears independiente, cada Song apunta con ObjectIds reutilizables.

  3. 03

    Scope cortado, MVP funcional

    En vez de 50 artistas × 10 tonos, me enfoqué en 13 artistas icónicos con 2 tonos cada uno. Checkout simulado en MongoDB en vez de integrar Stripe. Suficiente para demostrar la transaccionalidad sin quedar atrapado en integraciones de pago.

Página de canción mostrando la cadena de señal: guitarra, pedales y amplificador en orden

Lo entregado

  • Backend Node.js + Express con API REST y 3 colecciones MongoDB
  • Frontend Next.js + React Context API + Tailwind CSS
  • Deploy en Vercel con live demo end-to-end (artista → canción → carrito → checkout)
Carrito y checkout simulado mostrando el setup completo de un tono

Cierre

Modelar datos en MongoDB es fundamentalmente distinto a SQL. Elegí subdocumentos (Songs dentro de Artists) porque el 90% de las queries son 'dame las canciones de este artista': populate innecesario, respuestas más rápidas. Si volviera a hacerlo: autenticación + setups compartidos por usuarios para convertir curaduría personal en red social de guitarristas.