CerradoAmerica/Bogota

Pixels en frontpage

3 retos en 1, sobre frontpage.sh/millions

inicio
4 jul 2026, 4:00 p.m.
cerró
4 jul 2026, 5:03 p.m.
entregas
4

Challenge brief

🏁 Dev Racing × frontpage.sh/million

60 minutos. 1,000,000 de pixeles. Dinero real.

Esta edición del Dev Racing corre sobre frontpage.sh/million: un canvas de 1000×1000 donde cada pixel está a la venta. Los compras con USDC en la red Tempo vía MPP (Machine Payments Protocol) — sin cuentas, sin API keys, sin checkout. Tu agente paga y el pixel es tuyo.

Hay 3 retos. Puedes intentar uno, dos o los tres. Se premia cada reto por separado.


Los retos

🪙 Reto 1 — One Dollar Challenge

Presupuesto máximo: $1 USD. Gana el mayor impacto creativo.

Con $1 alcanzan hasta ~200 pixeles vírgenes ($0.005 c/u). ¿Cuánta identidad, arte o ingenio cabe en eso? Pixel art minimalista, un mensaje, un patrón, algo que la gente quiera clickear — tú decides.

  • Regla: tu entrega es una sola compra (un buy) de máximo $1.00 USD — el totalUsd del quote de esa compra debe ser ≤ $1.00. Puedes hacer todas las pruebas que quieras antes; al final señalas cuál buy es tu entrega (guarda el buyId o el previewUrl).
  • Jueceo: creatividad + impacto visual + uso inteligente del presupuesto. No gana quien pinte más pixeles, gana quien haga más con menos.

🎯 Reto 2 — One Pixel Challenge

Un solo pixel. La creatividad está en el label y el url.

Cada compra puede llevar un link y un label — y cualquier pixel con link es clickeable en el board (el label aparece en hover). El reto: hacer que un pixel sea interesante por sí solo.

Ideas del tipo que buscamos (no las copies, supéralas):

  • Un pixel cuyo label muestra el marcador en vivo de un partido (tu bot lo recompra/actualiza… ojo, recomprar tu propio pixel duplica el precio 😈).

  • Un pixel con el precio de BTC, el clima de CDMX, los días que faltan para el mundial.

  • Un pixel que linkea a algo que solo tiene sentido por su posición en el canvas.

  • Regla: tu entrega es UN pixel (puedes haber hecho pruebas antes, pero señalas uno como tu entrega final).

  • Jueceo: ingenio del concepto + ejecución técnica. Si el label se actualiza solo con datos vivos, puntos extra grandes.

⭕❌ Reto 3 — Tic Tac Toe en el canvas

Programa un gato interactivo usando el canvas como tablero. Solo necesitas 9 pixeles.

Elige 9 coordenadas (un bloque 3×3, o 3×3 espaciado para que se vea desde lejos) y construye un juego donde cada movimiento es una compra de pixel: X = un color, O = otro color, vacío = un tercero.

  • El juego debe ser interactivo: dos jugadores (o humano vs bot) alternan turnos y cada turno pinta el pixel correspondiente comprándolo vía API.
  • El estado del juego debe leerse del canvas mismo (GET /api/million/pixel o /grid), no solo de tu memoria local.
  • Ojo con la economía: cada vez que "reescribes" una casilla el precio se duplica. Diseña con eso en mente (¿tablero nuevo por partida? ¿casillas que solo se pintan una vez?).
  • Jueceo: que funcione en vivo en el demo. Puntos extra por UI/CLI bonita, por detección automática de ganador, y por un bot oponente.

Setup (esto es parte del race — hazlo primero, tarda ~5 min)

El reloj ya corre. El camino recomendado es mppx: tu agente crea su wallet en la terminal, René la fondea, y ya estás comprando pixeles. Tres pasos, cero browser:

Paso 1 — Crea la wallet de tu agente

mppx no requiere instalación, corre con npx:

npx mppx account create
npx mppx account view              # muestra tu address
npx mppx account view --show-key   # agrega la private key, por si tu bot la necesita

Tu agente (Claude Code, OpenClaw) puede correr esto solo — la cuenta queda guardada en tu keychain local.

Paso 2 — Consigue fondos

El canvas cobra USDC en la red Tempo (mainnet). René tiene presupuesto para darle $2 USD a quien lo pida. Copia la address que te dio npx mppx account view, pásasela a René, y en segundos tienes saldo. $2 alcanzan de sobra para los 3 retos ($1 del reto 1 + margen para pruebas y el gato).

Pídeselos apenas tengas la address — mientras llegan, ve pensando tu estrategia.

Paso 3 — Verifica y a jugar

npx mppx balance   # confirma que llegó el USDC

Listo. Salta a Cómo comprar pixeles.

Opción alternativa — tempo CLI + wallet.tempo.xyz

Si prefieres una wallet con passkey e interfaz web (o vas a fondearte desde un exchange), Tempo tiene su propio CLI y wallet:

curl -L https://tempo.xyz/install | bash
tempo add request
tempo wallet login         # abre wallet.tempo.xyz, creas/entras con passkey
tempo wallet whoami        # muestra tu address

Formas de fondear esta wallet:

  • Desde un exchange: entra a wallet.tempo.xyz, copia tu dirección de depósito, y en tu exchange retira USDC seleccionando la red Base — es la vía más fácil porque prácticamente todos los exchanges la soportan y wallet.tempo.xyz recibe desde ahí. Montos chicos llegan en segundos.
  • De otra persona: cualquiera con wallet en Tempo puede mandarte a esa address (René incluido).

Si el dinero cayó en tu tempo wallet pero tu bot paga con mppx, muévelo por cualquiera de las dos vías:

  • UI web: en wallet.tempo.xyz → Send → pega la address de npx mppx account view → confirma.
  • tempo-cli: directo desde la terminal:
tempo wallet send --to <address-de-mppx> --amount 2 --token usdc

¿mppx o tempo-cli? Cuándo usar cada uno

Los dos pueden pagar MPP. La diferencia es quién firma y cómo:

mppx (npx mppx)tempo-cli (tempo wallet + tempo request)
Tipo de walletCuenta local en tu keychain, key exportablePasskey, ligada a wallet.tempo.xyz
Ideal paraBots, scripts, agentes headless — todo lo automatizadoRecibir de un exchange, ver balances en UI web, pagos con humano en el loop
Interacción100% terminal, cero browserPuede abrir el browser para autorizar
En este raceEl default: crear wallet, recibir de René y comprar pixelesAlternativa si te fondeas desde exchange o quieres UI web

Regla de dedo para el race: mppx para todo; tempo-cli solo si necesitas el puente con un exchange o la interfaz web. Para el reto 3 (gato) el flujo headless de mppx es obligado.

Tip: npx mppx acepta --network mainnet|testnet. El canvas vive en mainnet — asegúrate de estar ahí.


Cómo comprar pixeles

La vía agéntica (recomendada)

Instala el skill y deja que tu agente (Claude Code, OpenClaw, etc.) haga el trabajo:

npx skills add DFectuoso/frontpage-sh-skills --copy

Luego, en lenguaje natural:

"Compra el pixel (500,500) en frontpage.sh million, color #ff0000, con link a midominio.com y label 'hola RBR'. Muéstrame el preview antes de pagar."

La vía manual (para entender el flujo, o para tu propio código)

Todo vive en https://www.frontpage.sh (contrato completo en /openapi.json). Coordenadas x,y de 0 a 999, color en hex #rrggbb.

1. Explora el board (gratis, sin auth):

curl https://www.frontpage.sh/api/million/grid
# lista todos los pixeles COMPRADOS con su precio; lo que no aparece está virgen a $0.005

curl "https://www.frontpage.sh/api/million/pixel?x=500&y=500"
# inspecciona uno: owned, nextPriceUsd, url, label, owner

2. Pide un quote (gratis):

curl -X POST https://www.frontpage.sh/api/million/quote \
  -H 'content-type: application/json' \
  -d '{"pixels":[{"x":500,"y":500,"rgb":"#ff0000"}],"url":"https://tusitio.com","label":"tu label"}'
# devuelve: quoteId, totalUsd, previewUrl (ábrelo para ver tus pixeles en el board), expira en 10 min

El url y label van a nivel del batch y aplican a todos los pixeles de esa compra. Un solo pixel con link ya es clickeable.

3. Compra (aquí sí se paga — mppx maneja el 402 solo):

npx mppx https://www.frontpage.sh/api/million/buy \
  -J '{"quoteId":"<el quoteId del paso 2>","email":"tu@email.com"}'

El email es obligatorio (ahí llega tu recibo) y se valida antes de cobrar. mppx recibe el 402 Payment Required, firma la transferencia de USDC con tu cuenta y reintenta automáticamente. Verifica el resultado re-leyendo el pixel (owned: true) o viéndolo en vivo en frontpage.sh/million.

Reglas de precios (importante para tu estrategia)

  • Pixel virgen: $0.005. Cada venta duplica el precio: $0.005 → $0.01 → $0.02 → $0.04…
  • Si alguien te compra un pixel, recibes 1.3× lo que pagaste — siempre ganas +30% cuando te "roban".
  • No calcules precios tú: el quote devuelve el total exacto.
  • Máximo 2,500 pixeles por compra.
  • Si un pixel cambió de precio entre tu quote y tu buy (alguien se te adelantó), se salta y te lo reembolsan (lostCount > 0) — re-cotiza y reintenta.

Logística del race

  • Duración: 60 minutos, cronometrados, setup incluido — parte del reto es qué tan rápido te montas el stack. El canvas es compartido y en vivo: lo que hagas lo ven todos en la pantalla grande.
  • Entrega: al minuto 60, cada racer publica en el canal del evento: (1) qué reto(s) intentó, (2) coordenadas de sus pixeles / su pixel del reto 2 / su tablero del reto 3, (3) link al repo o gist si construyó código.
  • Demo: los del reto 3 juegan una partida en vivo. Los del reto 2 muestran su pixel actualizándose (si aplica).
  • Presupuestos: reto 1 se evalúa sobre una sola compra de ≤ $1 USD (pruebas ilimitadas); retos 2 y 3 sin tope formal, pero recuerda que la economía del canvas castiga el gasto bruto — la gracia es la elegancia.
  • Todo lo que se gasta se queda en el ecosistema: el pool del canvas se gasta vía el idea board de frontpage.sh. Están literalmente fondeando el proyecto mientras compiten.

Troubleshooting rápido

  • cast/tempo no encontrado después de instalar → reabre la terminal o source ~/.bashrc / ~/.zshrc.
  • tempoup actualiza el Tempo CLI si tienes versión vieja.
  • Quote expirado (TOKEN_INVALID_OR_EXPIRED) → los tokens duran 10 min, pide otro.
  • MODERATION_FAILED en el quote → tu link/label fue rechazado por el filtro de contenido. Sé creativo, no ofensivo.
  • Fondos no llegan del exchange → confirma que retiraste USDC por red Base a la dirección de depósito de wallet.tempo.xyz.
  • ¿Sin fondos y sin exchange? → René. $2. Pídelos en cuanto tengas address, no en el minuto 40.

Nos vemos en el canvas. Release Before Ready. 🚀

Biblioteca de entregas

Entregas visibles

Ordenado por score de participantes

#entregaparticipanteslinks
01Untitled entryby Jesus Contreras0 x0
02Daniel Ordóñezby Daniel Ordóñez0 x0
03Felipe Gomezby Felipe Gomez0 x0
04juan david meloby Juan Melo0 x0
Participantes4 entries
#entregascorespark
01Untitled entryby Jesus Contreras0 x0___
02Daniel Ordóñezby Daniel Ordóñez0 x0___
03Felipe Gomezby Felipe Gomez0 x0___
04juan david meloby Juan Melo0 x0___