{"id":50745511,"url":"https://github.com/edycutjong/tandot","last_synced_at":"2026-06-10T20:30:30.836Z","repository":{"id":361612847,"uuid":"1239393253","full_name":"edycutjong/tandot","owner":"edycutjong","description":"🎰 AI-managed fraud-proof rotating savings circles (tandas) on-chain using MXNB stablecoin","archived":false,"fork":false,"pushed_at":"2026-06-08T04:05:14.000Z","size":2430,"stargazers_count":0,"open_issues_count":17,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T06:08:50.155Z","etag":null,"topics":["ai","arbitrum","bitso","fintech","nextjs","stablecoin"],"latest_commit_sha":null,"homepage":"https://tandot.edycu.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edycutjong.png","metadata":{"files":{"readme":"README.es.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-15T03:45:14.000Z","updated_at":"2026-05-31T12:49:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/edycutjong/tandot","commit_stats":null,"previous_names":["edycutjong/tandot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/edycutjong/tandot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edycutjong%2Ftandot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edycutjong%2Ftandot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edycutjong%2Ftandot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edycutjong%2Ftandot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edycutjong","download_url":"https://codeload.github.com/edycutjong/tandot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edycutjong%2Ftandot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34170162,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","arbitrum","bitso","fintech","nextjs","stablecoin"],"created_at":"2026-06-10T20:30:29.903Z","updated_at":"2026-06-10T20:30:30.821Z","avatar_url":"https://github.com/edycutjong.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eTandot 🎰\u003c/h1\u003e\n  \u003cp\u003e\u003cem\u003e¿Tu organizador de tanda se fue con el dinero? Nunca más. IA + contratos inteligentes garantizan cada pago.\u003c/em\u003e\u003c/p\u003e\n  \u003cimg src=\"docs/readme-hero.png\" alt=\"Tandot\" width=\"100%\"\u003e\n\n  \u003cbr/\u003e\n\n  [![Demo en Vivo](https://img.shields.io/badge/🚀_Demo-En_Vivo-06b6d4?style=for-the-badge)](https://tandot.edycu.dev)\n  [![Presentación](https://img.shields.io/badge/📊_Presentación-f59e0b?style=for-the-badge)](https://tandot.edycu.dev/pitch)\n  [![Video de Pitch](https://img.shields.io/badge/🎬_Video-Pitch-ef4444?style=for-the-badge)](https://youtu.be/gQ0IduJwbo0)\n  [![Arbiscan](https://img.shields.io/badge/📜_Arbiscan-Contratos-28A0F0?style=for-the-badge)](https://sepolia.arbiscan.io/address/0x8413eCc78A8110D0EA05F346c9c2C7d0886B352c)\n  [![Construido para ETH México](https://img.shields.io/badge/DoraHacks-ETH_México_2026-8b5cf6?style=for-the-badge)](https://dorahacks.io/hackathon/ethmexico2026bitso/detail)\n\n  \u003cbr/\u003e\n\n  ![Next.js](https://img.shields.io/badge/Next.js_16-black?style=for-the-badge\u0026logo=next.js)\n  ![React](https://img.shields.io/badge/React_19-61DAFB?style=for-the-badge\u0026logo=react\u0026logoColor=black)\n  ![Tailwind](https://img.shields.io/badge/Tailwind_v4-38B2AC?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white)\n  ![Supabase](https://img.shields.io/badge/Supabase-3ECF8E?style=for-the-badge\u0026logo=supabase\u0026logoColor=white)\n  ![Arbitrum](https://img.shields.io/badge/Arbitrum-28A0F0?style=for-the-badge\u0026logo=arbitrum\u0026logoColor=white)\n  ![Solidity](https://img.shields.io/badge/Solidity_0.8-363636?style=for-the-badge\u0026logo=solidity\u0026logoColor=white)\n  ![OpenAI](https://img.shields.io/badge/GPT--4-412991?style=for-the-badge\u0026logo=openai\u0026logoColor=white)\n  ![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n  [![Tandot CI](https://github.com/edycutjong/tandot/actions/workflows/ci.yml/badge.svg)](https://github.com/edycutjong/tandot/actions/workflows/ci.yml)\n\n  \u003cp\u003e\n    \u003ca href=\"README.md\"\u003e🇺🇸 English Version\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## 📸 Míralo en Acción\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e1. Plataforma de Ahorro sin Confianza\u003c/h3\u003e\n  \u003cimg width=\"100%\" alt=\"tandot-landing\" src=\"https://github.com/user-attachments/assets/dfd12f15-b8a6-4933-8800-2cfcffdcdea6\" /\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n\n  \u003ch3\u003e2. Dashboard impulsado por IA\u003c/h3\u003e\n  \u003cimg width=\"100%\" alt=\"my-tandas-1\" src=\"https://github.com/user-attachments/assets/1421f154-c56d-493b-9851-b51e2449ac8d\" /\u003e\n  \u003cbr/\u003e\u003cbr/\u003e\n\n  \u003ch3\u003e3. Flujo Automatizado de Escrow en Arbitrum\u003c/h3\u003e\n  \u003cimg width=\"100%\" alt=\"tandot-flow\" src=\"https://github.com/user-attachments/assets/b7ea2d21-a853-450f-a765-78ffd2a56d8e\" /\u003e\n\u003c/div\u003e\n\n\u003e **Tres pasos, cero confianza ciega.** Únete → Contribuye en MXNB → Cobra tu turno.\n\n---\n\n## 💡 El Problema y la Solución\n\nEn México, las **tandas** son la herramienta de ahorro informal más popular, sin embargo, 1 de cada 3 tandas falla porque el organizador desaparece con el dinero. No hay recursos legales, ni seguros, ni pruebas.\n\n**Tandot** elimina al organizador humano por completo. Un agente de IA gestiona la puntuación de confianza, el emparejamiento de grupos y la detección de fraudes, mientras que el MXNB (la stablecoin del peso mexicano) fluye a través de contratos inteligentes de depósito en garantía (escrow) en Arbitrum, garantizando cada pago en cada ronda, siempre.\n\n**Características Clave:**\n- 🤖 **Puntuación de Confianza por IA:** GPT-4 evalúa la fiabilidad de cada miembro (0-100) mediante un análisis de 5 factores: historial de pagos, tasa de puntualidad, diversidad del grupo, antigüedad de la cuenta y calidad de las referencias.\n- 💰 **Escrow de MXNB en Arbitrum:** Todas las contribuciones fluyen hacia un contrato inteligente sin necesidad de confianza; los fondos se bloquean hasta que se cumplen las condiciones de pago automático.\n- 🔒 **Diseño a Prueba de Fraude:** Ninguna persona individual controla el pozo común. El contrato impone el orden de rotación y la IA marca a los miembros riesgosos antes de que se unan.\n- 🎨 **UX Premium Bilingüe:** Diseño emocional pensado primero en español con profundidad técnica en inglés. Estética fintech de glassmorphism, modo oscuro, tipografía Inter + JetBrains Mono + Outfit.\n\n## 🏗️ Arquitectura y Stack Tecnológico\n\n| Capa | Tecnología |\n|---|---|\n| **Frontend** | Next.js 16 (App Router), React 19 |\n| **Estilos** | Tailwind CSS v4 |\n| **Base de Datos** | Supabase (PostgreSQL + Realtime) |\n| **Pagos** | API de Bitso Business (Depósitos, Pagos, MXNB, Webhooks, Pagos Masivos) |\n| **Cadena** | Arbitrum Sepolia (Stablecoin MXNB, contrato inteligente de escrow) |\n| **IA** | OpenAI GPT-4 (puntuación de confianza, emparejamiento, detección de fraude) |\n| **Despliegue** | Vercel |\n\n```mermaid\ngraph TB\n    User[👤 Miembro de Tanda] --\u003e|Deposita MXNB| Bitso[Bitso Business API]\n    Bitso --\u003e|Webhook| API[Rutas API Next.js]\n    API --\u003e|Registra| DB[(Supabase PostgreSQL)]\n    API --\u003e|Bloquea Fondos| Escrow[Contrato de Escrow Arbitrum]\n    API --\u003e|Califica Miembro| AI[OpenAI GPT-4]\n    AI --\u003e|Score de Confianza| DB\n    Escrow --\u003e|Pago Automático| Bitso\n    Bitso --\u003e|Transferencia MXNB| Winner[🏆 Ganador de la Ronda]\n\n    DB --\u003e|Tiempo Real| Dashboard[UI del Dashboard]\n```\n\n## 🏆 Tracks de Patrocinadores Objetivados\n\n| Recompensa (Bounty) | Premio | Integración |\n|---|---|---|\n| **Bitso Business Startup** | $3,900 | Depósitos, Pagos, transferencias MXNB, Webhooks, Pagos Masivos — ver `src/lib/` |\n| **ETH México Principal** | $1,500 | Plataforma DeFi completa que resuelve la confianza financiera en LATAM |\n| **Arbitrum** | $650 | Contrato inteligente de escrow desplegado en Arbitrum — ver `contracts/` |\n\n\n## 🚀 Comenzando\n\n### Prerrequisitos\n- Node.js ≥ 20\n- npm\n\n### Instalación\n```bash\ngit clone https://github.com/edycutjong/tandot.git\ncd tandot\nnpm install\ncp .env.example .env.local   # Agrega tus llaves de API\nnpm run dev                  # http://localhost:3000\n```\n\n### 🧑‍⚖️ Para Jueces — Inicio Rápido\n\n\u003e **No se requiere iniciar sesión, ni desplegar, ni llaves de API para explorar el dashboard.**\n\n| Qué | Estado |\n|---|---|\n| **Wallet** | Instala [MetaMask](https://metamask.io) → cambia a **Arbitrum Sepolia** |\n| **Contratos Inteligentes** | ✅ Ya desplegados (ver direcciones abajo) |\n| **Base de Datos Supabase** | ✅ Pre-sembrada con datos de demostración |\n| **API de Bitso** | ✅ Llaves de staging incluidas en el demo — no necesitas cuenta personal |\n| **OpenAI** | ✅ La puntuación de confianza funciona con scores pre-calculados en modo demo |\n| **ETH de Prueba** | Obtén ETH gratis en el [Faucet de Arbitrum Sepolia](https://faucet.quicknode.com/arbitrum/sepolia) |\n\n### Contratos Desplegados (Arbitrum Sepolia)\n\n| Contrato | Dirección |\n|---|---|\n| **TandaEscrow** | [`0x8413eCc78A8110D0EA05F346c9c2C7d0886B352c`](https://sepolia.arbiscan.io/address/0x8413eCc78A8110D0EA05F346c9c2C7d0886B352c) |\n| **MockMXNB (ERC-20)** | [`0x0B551C18aAF6b1c1c12c026e7ABd2CFAd511BFe7`](https://sepolia.arbiscan.io/address/0x0B551C18aAF6b1c1c12c026e7ABd2CFAd511BFe7) |\n\n\u003e **Para Jueces:** Los contratos ya están en vivo; no es necesario desplegarlos. El dashboard lee estas direcciones automáticamente.\n\n### Redesplegar Contratos (Opcional)\n\nPara desplegar tu propia instancia del contrato de escrow y el token Mock MXNB:\n\n```bash\ncd contracts\nnpm install\ncp .env.example .env   # Agrega tu URL RPC de Arbitrum y Llave Privada\nnpx hardhat compile\nnpx hardhat run scripts/deploy.ts --network arbitrumSepolia\n```\n\nLuego actualiza `NEXT_PUBLIC_ESCROW_CONTRACT_ADDRESS` y `NEXT_PUBLIC_MXNB_TOKEN_ADDRESS` en `.env.local`.\n\n### API de Bitso Business (Staging)\n\n\u003e ⚠️ **Usa el entorno de staging** — nunca el de producción para pruebas de hackathon.\n\n1. Crea una cuenta en [`stage.bitso.com`](https://stage.bitso.com)\n2. Genera llaves de API en la configuración de la API\n3. Agrega `BITSO_API_KEY` y `BITSO_API_SECRET` a tu `.env.local`\n\n## 🧪 Pruebas y CI\n\n**Pipeline de 6 etapas:** Calidad (lint/typecheck/jest en frontend + tests de hardhat en contratos) → Seguridad (TruffleHog + npm audit) → Verificación de Compilación y presupuesto de bundles → Playwright E2E → Rendimiento (Lighthouse CI) → Puerta de Despliegue (Deploy Gate)\n\n```bash\n# ── Calidad de Código y Pruebas Unitarias ──\nnpm run lint          # ESLint\nnpm run lint:fix      # Auto-corregir problemas de lint\nnpm run typecheck     # Verificación estricta de TypeScript\nnpm run test          # Ejecutar pruebas Jest\nnpm run test:coverage # Reporte de cobertura de Jest\nnpm run ci            # Pipeline de calidad completo (lint + typecheck + test:coverage)\n\n# ── Calidad de Contratos Inteligentes ───────\ncd contracts\nnpx hardhat compile   # Compilación de Hardhat\nnpx hardhat test      # Pruebas unitarias de contratos en Hardhat\n\n# ── Pruebas E2E y Rendimiento Avanzadas ─────\nnpm run e2e           # Pruebas E2E de Playwright (modo demo)\nnpm run e2e:ui        # Interfaz interactiva de Playwright E2E\nnpm run lighthouse    # Auditoría de cumplimiento de Lighthouse CI\n```\n\n### Resumen del Harness de Ingeniería\n\n| Capa | Herramienta | Estado | Detalles |\n|---|---|---|---|\n| **Calidad de Código** | ESLint + TypeScript | ✅ | Modo estricto, cero errores o advertencias |\n| **Pruebas Unitarias** | Jest | ✅ | 29 suites, 100 pruebas, 100% de cobertura en líneas/ramas/funciones/declaraciones |\n| **Pruebas de Contrato** | Hardhat + Chai | ✅ | 28 pruebas de contratos inteligentes exitosas (depósitos, contabilidad aislada, pagos automáticos) |\n| **Pruebas E2E** | Playwright | ✅ | 3 suites: pruebas de humo, responsividad móvil/tablet/desktop, flujo de creación de Tanda |\n| **Seguridad (SAST)** | CodeQL | ✅ | Análisis de código estático automatizado en GitHub Actions |\n| **Seguridad (SCA)** | Dependabot + Audit | ✅ | Escaneo de dependencias semanal y actualizaciones automatizadas |\n| **Escaneo de Secretos** | TruffleHog | ✅ | Escaneo de secretos en el historial de commits en cada PR y push |\n| **Rendimiento** | Lighthouse CI | ✅ | Configuración de presupuestos locales con ejecución de servidor automático |\n\n## 📁 Estructura del Proyecto\n\n```\ntandot/\n├── docs/              # Activos del README (hero, capturas de pantalla)\n├── src/\n│   ├── app/              # Páginas del App Router de Next.js 16\n│   │   ├── page.tsx      # Página de inicio (hero bilingüe)\n│   │   └── dashboard/    # Dashboard, vistas de detalle de tanda\n│   ├── components/       # Componentes de React 19\n│   └── lib/              # Tipos, constantes, datos simulados, clientes\n├── db/\n│   └── schema.sql        # Esquema de Supabase (tandas, miembros, contribuciones, pagos)\n├── contracts/            # Contrato de escrow en Solidity\n├── public/               # Icono, imagen OG\n├── .env.example          # Plantilla de variables de entorno\n├── .github/workflows/    # Pipeline de CI\n├── README.md             # Versión en inglés\n└── README.es.md          # Estás aquí\n\n```\n\n## 📄 Licencia\n\n[MIT](LICENSE) © 2026 Edy Cu\n\n## 🙏 Agradecimientos\n\nConstruido para **DoraHacks Ethereum México 2026**. Gracias a Bitso, Arbitrum y la comunidad de ETH México por las APIs, herramientas e inspiración.\n\n¡Gracias por revisar este proyecto! 🇲🇽\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedycutjong%2Ftandot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedycutjong%2Ftandot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedycutjong%2Ftandot/lists"}