---
title: "Afoma | Caso de Estudio de Wavect"
canonical: https://wavect.io/es/case-studies/afoma/
language: es
description: "Afoma es un marketplace en producción que se expande a Web3: primitivas on-chain sin romper la experiencia de usuarios que no saben qué es una wallet."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

[← Todos los casos de estudio](/es/case-studies/)

![Afoma logo](/img/clients/webp/afoma.webp)

CASOS DE ESTUDIO · 2024

Afoma

# Web3 añadido a un marketplace en vivo sin que el usuario viera cripto nunca.

Afoma es un marketplace en producción que se expande a [Web3](/es/glossary/web3/). El cliente quería incorporar primitivas on-chain sin romper la experiencia para usuarios que no saben qué es una wallet.

[“Nos impresionó su rapidez de entrega.” Eric Osuorah Clutch](https://clutch.co/go-to-review/f2290100-9e13-4140-a1b0-0ee301a5fd39/477125)

BLOCKCHAIN Integración Web3 y Consultoría 2024 En Vivo

Resumen

Tipo de proyecto Integración Web3 y Consultoría

Sector [Web3 / Marketplace](/es/industries/ecommerce/)

Etapa Seed

Tamaño del proyecto Precio fijo

Año 2024

Stack

Typescript Solidity Ethers.js

Estado En Vivo

En vivo [afoma.io](https://afoma.io/)

## Resumen

Afoma es un marketplace en producción que se expande a [Web3](/es/glossary/web3/). El cliente quería incorporar primitivas on-chain sin romper la experiencia para usuarios que no saben qué es una wallet.

## ¿Cuál es el reto?

Añadir Web3 a un marketplace en producción rara vez es la parte difícil. Hacer que se sienta nativo para usuarios no cripto sí lo es. La integración tenía que bajar la barrera de onboarding: social login que simplemente funciona, creación de wallet escondida tras auth familiar, cero jerga cripto en el flujo. Sin perturbar lo que ya funcionaba.

## ¿Qué decisión tomamos?

### Migrar la base de usuarios existente no era negociable.

> Social Login no era todo el trabajo. La base de usuarios existente tenía que cruzar al nuevo flujo de auth sin perder cuentas, historial ni confianza. Una rotura ahí significaba churn que ninguna feature on-chain podía recuperar. Tratamos la migración como entregable de primera clase: flujos de auth en paralelo, creación silenciosa de wallet en el primer social login, cero re-onboarding forzado. La capa on-chain se lanzó. Los usuarios existentes apenas lo notaron.

## Lo que hicimos

Marketplace en vivo, capa on-chain añadida sin que el usuario notara la costura. Empezamos con Web3 Social Login, no con un conector de wallet: la auth familiar lleva al usuario al otro lado de la frontera, la wallet se crea silenciosamente detrás. Onboarding impulsado por social login, plomería on-chain bajo el marketplace, consultoría continua sobre estrategia Web3 y dirección de producto. Features de wallet para power users aplazadas. La base de usuarios existente pudo seguir sin re-entrenamiento.

## Resultados

### Web3 Social Login - En Producción

### No Cripto - UX Amigable

¿Resultados así para tu proyecto?

Alcance fijo. Plazo fijo. SoW firmado.

[Hablemos](/es/contact/)

## Pantallas Seleccionadas

![Afoma, screen 1](/img/case-studies/afoma/001_hu_c6b3915623b39d52.webp)

![Afoma, screen 2](/img/case-studies/afoma/002_hu_c817ffa2ed256e3f.webp)

![Afoma, screen 3](/img/case-studies/afoma/003_hu_c89f25eaf60b10d5.webp)

![Afoma, screen 4](/img/case-studies/afoma/004_hu_d8c8cd62f9382ed1.webp)

![Afoma, screen 5](/img/case-studies/afoma/005_hu_47fb12f7488a2000.webp)

## Voz del Cliente

[Clutch · Verified](https://clutch.co/go-to-review/f2290100-9e13-4140-a1b0-0ee301a5fd39/477125)

> **Nos impresionó su rapidez de entrega.**

WAVECT GmbH asignó correctamente wallets Web3 a los usuarios finales, que quedaron impresionados con la transición. El equipo entregó a tiempo y demostró una gran profesionalidad. Se comunicó eficazmente mediante reuniones virtuales, correo electrónico y aplicaciones de mensajería.

Eric Osuorah CEO, AFOMA Marketplace

¿Quieres lograr el mismo impacto?

Alcance fijo. Plazo fijo. SoW firmado.

[Hablemos](/es/contact/)

## Lo que aprendimos

La forma más rápida de perder a un usuario no cripto: hacerle sentir que está usando cripto. La capa Web3 tiene que desaparecer dentro de la UX existente, no atornillarse al costado. Social login fue el punto de entrada correcto: flujo del marketplace intacto, puerta on-chain silenciosamente abierta.

## Stack Técnico

- [Typescript](https://www.typescriptlang.org/)
- [Solidity](https://soliditylang.org/)
- [Ethers.js](https://docs.ethers.org/)

## Tags

- Web3
- Marketplace
- Social Login

## Enlaces y Recursos

[Afoma](https://afoma.io/)

Servicios relacionados

- [Desarrollo Blockchain](/es/services/blockchain/)
- [Desarrollo de Software a Medida](/es/services/software-development/)

Referencias de clientes y marcas

Wavect publica estos casos de estudio sobre su propio trabajo. Los nombres, logotipos y marcas de clientes son propiedad de sus respectivos titulares y se usan aquí para identificar el trabajo, no para dar a entender una asociación, un patrocinio o un respaldo. Cada caso describe la contribución propia de Wavect dentro de un esfuerzo mayor, y otras partes, incluidos los equipos del propio cliente y otros proveedores, contribuyeron a los resultados. Las cifras atribuidas a un cliente son datos reportados por ese cliente. Las cifras sobre nuestro trabajo provienen de nuestros registros a la fecha de revisión indicada, y facilitamos evidencia si se solicita. Las reseñas se reproducen desde la plataforma indicada en cada tarjeta y enlazan a su origen. No publicamos las condiciones comerciales de ningún proyecto, y las capturas de producto siguen siendo propiedad del cliente mostrado. Si apareces aquí y quieres una corrección, un cambio o una retirada, escríbenos y lo atenderemos: [office@wavect.io](mailto:office@wavect.io)

### [Account Abstraction](/es/case-studies/account-abstraction/)

El Hybrid Compute de Boba Network permite a los smart contracts desencadenar computaciones off-chain tipo oráculo y recibir resultados trustless on-chain, …

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/es/case-studies/afoma/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-05-21",
      "inLanguage": "es",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-21",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".faq-question",
          ".faq-answer"
        ]
      },
      "url": "https://wavect.io/es/case-studies/afoma/"
    },
    {
      "@id": "https://wavect.io/verified-claims.json#afoma-invisible-wallet",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/es/case-studies/afoma/#webpage",
        "@type": "WebPage",
        "inLanguage": "es",
        "url": "https://wavect.io/es/case-studies/afoma/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "citation": {
        "@type": "WebPage",
        "url": "https://clutch.co/go-to-review/f2290100-9e13-4140-a1b0-0ee301a5fd39/477125"
      },
      "dateModified": "2026-08-04",
      "identifier": "afoma-invisible-wallet",
      "inLanguage": "en",
      "text": "On Afoma, a live marketplace, Wavect layered on-chain primitives behind social login and invisible wallet creation, so the user never sees crypto jargon."
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@id": "https://wavect.io/es/case-studies/afoma/#case-study",
  "@type": "Article",
  "about": {
    "@id": "https://wavect.io/es/case-studies/afoma/#project",
    "@type": "CreativeWork",
    "creator": {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ]
    },
    "dateCreated": "2024-01-01",
    "description": "Integración Web3 y Consultoría engagement",
    "funder": {
      "@type": "Organization",
      "name": "Afoma"
    },
    "name": "Afoma",
    "subjectOf": {
      "@id": "https://wavect.io/es/case-studies/afoma/#case-study",
      "@type": "Article"
    },
    "url": "https://afoma.io/"
  },
  "abstract": "Añadir Web3 a un marketplace en producción rara vez es la parte difícil. Hacer que se sienta nativo para usuarios no cripto sí lo es. La integración tenía que bajar la barrera de onboarding: social login que simplemente funciona, creación de wallet escondida tras auth familiar, cero jerga cripto en el flujo. Sin perturbar lo que ya funcionaba.",
  "author": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "datePublished": "2024-01-01",
  "description": "Afoma es un marketplace en producción que se expande a Web3. El cliente quería incorporar primitivas on-chain sin romper la experiencia para usuarios que no saben qué es una wallet.",
  "headline": "Afoma, Wavect Case Study",
  "image": "https://wavect.io/img/clients/webp/afoma.webp",
  "inLanguage": "es",
  "isPartOf": {
    "@type": "CollectionPage",
    "name": "Wavect Case Studies",
    "url": "https://wavect.io/es/case-studies/"
  },
  "keywords": "Web3, Marketplace, Social Login, Typescript, Solidity, Ethers.js",
  "mainEntityOfPage": "https://wavect.io/es/case-studies/afoma/",
  "mentions": [
    {
      "@type": "DefinedTerm",
      "name": "Typescript",
      "url": "https://www.typescriptlang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Solidity",
      "url": "https://soliditylang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Ethers.js",
      "url": "https://docs.ethers.org/"
    }
  ],
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/es/case-studies/afoma/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/",
      "name": "Inicio",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/case-studies/",
      "name": "Casos de Estudio",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/case-studies/afoma/",
      "name": "Afoma",
      "position": 3
    }
  ]
}
```
