DesktopMof
커서를 따라다니거나, 피하거나, 화면 가장자리에서 졸기도 한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Mapucoin — plataforma turística de Chile con IA: cápsulas, gastronomía, mapa y partners. Next.js + Grok + Supabase + Stripe.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Plataforma turística de Chile: el viajero indica presupuesto y lugar, Grok arma un itinerario con cápsulas tecnológicas, gastronomía local y actividades, sobre un mapa interactivo. Partners se inscriben y Stripe cobra.
La App (PWA instalable, misma infraestructura que Kaenz / Salvazion) vive en /app: cuenta, mapa, cápsulas, viaje con Grok y gastronomía. Entrar en /login.
Logo Mapucoin)| Ruta | Qué hace |
|---|---|
/ | Hero + planificador presupuesto/destino |
/planificar | Itinerario Grok + chat concierge |
/mapa | Mapa de destinos y cápsulas |
/destinos /capsulas /gastronomia /actividades | Catálogo |
/partners | Alta de partners |
/partners/onboard | Stripe Connect Express (CL) |
/reserva | Checkout Stripe (CLP) |
/admin/partners | Admin (secret). No está en el menú |
/login /signup | Cuenta (correo, Google) |
/app | App PWA — Explorar |
/app/capsulas | Cápsulas y reserva Stripe |
/app/viaje | Itinerario Grok |
/app/mesa | Gastronomía y actividades |
/app/cuenta | Perfil y reservas |
Copia .env.example a .env.local:
XAI_API_KEY=
NEXT_PUBLIC_APP_URL=https://mapucoin.com
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
AUTH_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
MAPUCOIN_ADMIN_SECRET=
MAPUCOIN_PLATFORM_FEE_BPS=1200
Mapucoin comparte el proyecto Supabase de Kaenz (mqkyzkrpoinbvclxurfg). Las reservas van a bookings, el perfil a profiles (roles client / owner) y los partners a applications. supabase/schema.sql documenta el modelo propio si se separa el proyecto.
Google entra por el provider ya activo en ese proyecto Supabase (mismo cliente Cloud que Kaenz). Guía: docs/auth-google.md.
Sin Supabase, login/signup siguen funcionando en local (cookie de sesión). Sin XAI_API_KEY, el planificador usa el itinerario de catálogo. Sin Stripe, la reserva muestra error hasta configurar la clave.
app.mapucoin.com redirige a mapucoin.com/app. La App exige sesión.
Webhook: https://mapucoin.com/api/stripe/webhook
Eventos: checkout.session.completed, checkout.session.async_payment_succeeded, account.updated. Moneda CLP (sin decimales).
Detalle y fallback US→CL: docs/stripe-connect.md.
GET /api/partners/approved — pins públicos (slug, business, city, lat, lng, price_from_clp, offer_summary, landscape). Sin email/teléfono/Stripe IDs.POST /api/partners/approve y POST /api/partners/reject — header Authorization: Bearer $MAPUCOIN_ADMIN_SECRET (o x-admin-secret). Pasa pending → approved con geo/listing, o rejected.GET /api/partners?status=pending — listado admin (PII). No es público.POST /api/partners/connect — Express country=CL + Account Link. Partner: mismo correo de la postulación. Admin: Bearer + { "id" }./api/checkout — si el partner de la cápsula está Connect-ready (charges_enabled y payouts_enabled): payment_intent_data.application_fee_amount (12%) + transfer_data.destination. Si no, o si Stripe rechaza el destination charge: guest Checkout en la plataforma y payout_mode=manual con fee contabilizado.En el proyecto Supabase compartido con Kaenz (profiles.id es uuid → auth.users), corre supabase/p2.sql (no recasts de profiles.id). schema.sql completo también es seguro ahora. Si partners aún no existe, P2 usa applications (solo filas Mapucoin).
MAPUCOIN_ADMIN_SECRET es el header de approve/reject. Si falta, se acepta AUTH_SECRET. No hay secret por defecto: sin esas variables el admin responde 401. /api/health solo dice admin: true|false, nunca el valor.
Admin UI (sin curl): https://mapucoin.com/admin/partners — no está en la navegación. Pega el secret, lista pending y aprueba/rechaza. Coords: elige un destino del catálogo (Atacama, etc.), no inventes.
sk_test_ / whsec_ en Vercel o .env.local.MAPUCOIN_ADMIN_SECRET y MAPUCOIN_PLATFORM_FEE_BPS=1200 en el entorno./#partners (no inventar filas a mano)./admin/partners con el secret, o GET /api/partners?status=pending con Bearer → copia id.id real y coords de un destino curado, no un partner ficticio):curl -sS -X POST https://mapucoin.com/api/partners/approve \
-H "Authorization: Bearer $MAPUCOIN_ADMIN_SECRET" \
-H "Content-Type: application/json" \
-d '{"id":"<partner_id>","lat":-22.9087,"lng":-68.1997,"price_from_clp":165000,"offer_summary":"Techo de vidrio para la Vía Láctea. Climatización y Starlink.","landscape":"desierto","slug":"capsula-atacama-star"}'
GET /api/partners/approved y /#mapa filtro Partners (o Ambos). Pin extra solo si el slug no choca con el catálogo; si coincide, el pin curado se queda y el checkout igual enlaza al partner./partners/onboard con el correo de esa postulación. Completa Express con datos de test Connect.account.updated en el webhook y charges_enabled / payouts_enabled en GET /api/partners?status=approved.https://mapucoin.com/reserva?capsula=capsula-atacama-star (u otro slug curado). Nombre + correo, CTA Reservar / Pagar, Pago seguro con Stripe. Tarjeta test 4242…. Success: /reserva/exito. Cancel: vuelve a la cápsula. En el PaymentIntent: application_fee_amount = 12% CLP y transfer_data.destination si Connect-ready; si no, cargo plataforma y booking payout_mode=manual.POST /api/partners/connect responde blocked: true, deja el partner aprobado (el pin sigue) y usa el accounting manual. No fuerces destination charges.El dominio ya está añadido al proyecto Vercel mapucoin. Hoy el DNS sigue en Canva (ns*.systemdns.com → 103.169.142.0). Para que https://mapucoin.com sirva esta app, en el DNS del registrador (Canva / systemdns):
| Tipo | Nombre | Valor |
|---|---|---|
| A | @ | 216.198.79.1 |
| A | @ | 64.29.17.1 |
| CNAME | www | d73ca93feac97dc3.vercel-dns-017.com |
O cambia los nameservers a ns1.vercel-dns.com y ns2.vercel-dns.com.
Hasta que el DNS propague, la app vive en https://mapucoin.vercel.app.
npm install
npm run dev