尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Clasi Click — Marketplace Bolivia (versión 100% gratis) Tienda online multivendedor tipo Mercado Libre, con cobro por QR manual (tu propio QR bancario o de Yape) — sin ningún servicio pago de por medio. Construida con Next.js 14 (App Router) + TypeScript + Tailwind CSS, con Firebase (Firestore, plan gratuito Spark) como backend, pensada para desplegar en el plan Hobby (gratis) de Vercel. Cómo funciona el cobro (y por qué es así) Investigué las opciones de pago por QR en Bolivia antes de armar esto:檢視完整 README ↗
Tienda online multivendedor tipo Mercado Libre, con cobro por QR manual (tu propio QR bancario o de Yape) — sin ningún servicio pago de por medio. Construida con Next.js 14 (App Router) + TypeScript + Tailwind CSS, con Firebase (Firestore, plan gratuito Spark) como backend, pensada para desplegar en el plan Hobby (gratis) de Vercel.
Investigué las opciones de pago por QR en Bolivia antes de armar esto:
/admin una vez que lo viste acreditado
en tu cuenta. Cero costo, cero trámite, andando desde el día uno./ — catálogo público de productos, con buscador, filtro por categoría y carrito./servicios — directorio de servicios profesionales (contadores, odontólogos, pintores, etc.), separado del carrito de compra. Buscable por nombre/zona, filtrable por rubro, y ordenable por mejor calificados o por cercanía (usando la ubicación del navegador + fórmula de Haversine contra la lat/lng que cargaste de cada profesional)./servicios/[id] — perfil público de un profesional: descripción, botón directo a WhatsApp (con mensaje precargado), y reseñas de otros usuarios (requiere estar logueado para dejar una)./publicar-servicio — formulario público para que un profesional se autopostule (sin login). Queda con estado pendiente_revision y no aparece en /servicios hasta que lo apruebes desde /admin. No acepta foto en esta etapa (se coordina por WhatsApp después de aprobar), para no exponer el endpoint de subida de imágenes al público sin ningún tipo de autenticación./login — registro e inicio de sesión (email + contraseña, vía Firebase Auth)./vender — panel para que cualquier usuario logueado publique y borre sus propios productos, con foto real (sube a ImgBB) o ícono de respaldo si prefiere no subir imagen. Redirige a /login si no estás logueado./checkout — pide zona/dirección de entrega, separa el carrito por vendedor (si comprás productos de 2 vendedores distintos, se generan 2 pedidos, uno para cada uno), y te hace pagar a cada vendedor por separado con su propio QR/CBU (o el de la plataforma, como respaldo, si ese vendedor todavía no configuró el suyo). El costo de envío se reparte proporcional entre los pedidos según el subtotal de cada uno./admin — tu panel único como dueño de la plataforma, con cuatro pestañas:
/publicar-servicio — con botones "Aprobar y publicar" o "Rechazar"./api/productos — GET público (catálogo completo). POST requiere estar logueado y asocia el producto al usuario./producto/[id] — página de detalle de un producto: foto grande, descuento real si tiene, selector de cantidad, "Comprar ahora" o "Agregar al carrito", y productos relacionados de la misma categoría. Cada visita suma +1 a un contador de vistas (dato real usado en las métricas)./api/productos/[id] — GET público (detalle de un producto). DELETE y PATCH, solo para el usuario dueño./api/productos/[id]/vista — POST público, sin autenticación: suma +1 al contador de vistas del producto. No guarda quién lo vio./api/upload-image — sube una foto a ImgBB y devuelve la URL. Requiere estar logueado (usuario de Firebase) o la contraseña de admin (para las fotos de profesionales que cargás vos).localStorage del navegador, no en Firestore — es una preferencia liviana del dispositivo. Si en algún momento hace falta que los favoritos viajen entre dispositivos de un mismo usuario, ahí conviene moverlos a Firestore atados al usuario logueado./api/profesionales — GET público (solo aprobados) o completo si se manda ADMIN_PASSWORD (para que /admin vea también pendientes y rechazados). POST (alta directa, queda aprobada) protegido con ADMIN_PASSWORD./api/profesionales/solicitud — POST público, sin login ni contraseña: es el formulario de autopostulación. Crea el profesional con estado pendiente_revision./api/profesionales/[id] — GET público (perfil + reseñas). PATCH (cambiar estado, editar datos) y DELETE, protegidos con ADMIN_PASSWORD./api/profesionales/[id]/resenas — POST: deja una reseña, requiere estar logueado (mismo sistema de cuentas que productos). El promedio se recalcula automáticamente en cada reseña nueva./api/admin/metricas — GET protegido con ADMIN_PASSWORD: devuelve todos los números que se ven en la pestaña Métricas./api/pedidos — GET (lista completa con ADMIN_PASSWORD, o los pedidos propios como comprador/vendedor con login de Firebase) y POST (crea un pedido, lo llama el checkout — uno por cada vendedor distinto en el carrito)./api/pedidos/[id] — GET (consulta pública, usada para el polling del comprador). PATCH: el comprador marca "informado_pago" sin login; los estados de operación (pagado, en preparación, en entrega, entregado, cancelado) los puede marcar el admin (ADMIN_PASSWORD) o el vendedor de ese pedido en particular (con su login de Firebase) — porque con QR/CBU propio, es el vendedor quien recibe la plata y gestiona la entrega./api/vendedores — POST (requiere login): el vendedor carga o actualiza su propio QR/CBU/nombre de negocio./api/vendedores/[id] — GET público: perfil de cobro de un vendedor, usado por el checkout para saber a qué cuenta pagarle.npm install
southamerica-east1).
productos, pedidos) la primera vez que la app escribe en ellas. Si productos está vacía, el catálogo cae automáticamente a los datos de ejemplo de src/data/productos.ts./login no va a funcionar..json. De ahí sacás FIREBASE_PROJECT_ID, FIREBASE_CLIENT_EMAIL y FIREBASE_PRIVATE_KEY.</>). Ahí te muestran apiKey y authDomain — van en NEXT_PUBLIC_FIREBASE_API_KEY y NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN.Los vendedores suben la foto de cada producto directo desde /vender. Por atrás, la imagen se reenvía a ImgBB (hosting de imágenes gratuito, sin límite de tiempo, sin tarjeta):
IMGBB_API_KEY.Si no configurás esto, /vender sigue funcionando igual (el producto se puede publicar solo con el ícono, sin foto) — pero al intentar subir una imagen va a mostrar un error hasta que cargues la key.
Elegí una opción y completá las variables correspondientes en .env.local:
public/qr-pago.png (reemplazando el archivo public/README-qr.txt de ejemplo) y configurá NEXT_PUBLIC_QR_IMAGE_URL=/qr-pago.png.NEXT_PUBLIC_BANK_NAME, NEXT_PUBLIC_BANK_ACCOUNT_NAME y NEXT_PUBLIC_BANK_ACCOUNT_NUMBER — el checkout va a mostrar esos datos en texto.cp .env.example .env.local
Completá cada valor. Ojo con FIREBASE_PRIVATE_KEY: copiala tal cual viene en el JSON descargado, entre comillas, con los \n literales (el código ya se encarga de convertirlos). ADMIN_PASSWORD la elegís vos — es la contraseña para entrar a /admin.
Cuando alguien publica un producto (/vender) o se autopostula como profesional (/publicar-servicio), la IA evalúa el contenido y le pone una etiqueta de riesgo (bajo/medio/alto) visible en /admin, para ayudarte a priorizar qué revisar primero. Nunca aprueba, rechaza ni bloquea nada por su cuenta — la decisión final siempre es tuya.
Usa Groq (mismo proveedor que ya usa la app de consultorio), con plan gratuito real — sin tarjeta, ~14.400 requests por día:
GROQ_API_KEY.Si dejás la variable vacía, la app funciona exactamente igual, solo que sin la etiqueta de riesgo.
npm run dev
Sitio: http://localhost:3000. Panel de administración: http://localhost:3000/admin
Podés probar el catálogo y el carrito sin tener Firebase configurado todavía (cae a datos de ejemplo). Para probar el checkout y /admin de verdad, necesitás Firebase configurado.
.env.local.Lo que ya está integrado en la base del negocio:
/admin y seguimiento por estados./publicar-servicio), con cola de revisión en /admin (aprobar/rechazar)./admin: usuarios registrados, facturación, pedidos y productos por estado, reseñas totales, productos más vistos — todo con datos reales de Firestore/Firebase Auth./vender ("Cobros"), y el checkout separa automáticamente el carrito en un pedido por vendedor si compraste de varios a la vez — cada uno cobra directo a su cuenta, sin pasar la plata por la plataforma. El vendedor confirma el pago recibido y gestiona la entrega de su propio pedido desde /vender, sin necesitar la contraseña de admin.GROQ_API_KEY): etiqueta cada producto y solicitud de servicio nueva con un riesgo bajo/medio/alto, para priorizar tu revisión manual en /admin. Nunca decide por su cuenta./servicios — pide tu ubicación y muestra a los profesionales con coordenadas cargadas en un mapa real, no solo una lista ordenada por cercanía.Lo que todavía no está incluido en esta base:
/vender, sus ventas caen al QR general de la plataforma como respaldo — en ese caso, la plata te llega a vos (no al vendedor), y como no hay ninguna pasarela de pago real integrada, transferirle esa plata al vendedor es un paso manual tuyo, fuera de la app. Avisale a cada vendedor que configure su cobro apenas empiece a vender, para que esto no pase./api/productos trae todo el catálogo en cada visita a la home, así que el techo real depende de cuántos productos haya cargados — cuando esto crezca, paginar o cachear el catálogo estira mucho el plan gratuito antes de necesitar pagar nada./producto/[id] rediseñado con pestañas "Publicación" e "Info. Tienda" — foto grande, detalle del producto (talles, colores, materiales, compra mínima, rubro, hace cuánto se publicó), y una pestaña de tienda con mapa (si el vendedor cargó ubicación), horarios, tipos de venta y badge de verificado.talles, colores, materiales, compraMinima — todos opcionales, se cargan desde /vender./vender → "Mi tienda"./admin para un vendedor puntual (PATCH /api/vendedores/[id]) — nunca es automático, para que signifique algo real./publicar-servicio (antes esta última era pública sin cuenta). Navegar y explorar el catálogo y el directorio sigue siendo 100% libre, sin necesidad de cuenta.