MemeCoop

Panel de control
Solo accesible para el equipo

MemeCoop PANEL DE CONTROL Plantillas →
Conectando...
Grupo
Usuario
Tienda
Estadísticas
Anuncios
—
Miembros
—
Memes hoy
—
Votos de ayer
—
Ronda actual
Grupo
Resumen
Solicitudes
Jugadores
Rondas
Memes
Votos
Temporadas
Herramientas
🔔 Notificaciones
⚙ Sandbox
Avanzado
Info y peligro
Sin publicar hoy
Selecciona un grupo...
Sin votar (ayer)
Selecciona un grupo...
Solicitudes de entrada pendientes

Miembros con isAccepted:false (status PENDING) esperando aprobación del admin del grupo.

Selecciona un grupo...
—
Miembros
—
Puntos medios
—
Puntuación máx.
Clasificación de miembros

Selecciona un grupo...
Dar marco a usuario INVENTARIO

Añade directamente un marco al inventario del usuario seleccionado.

Estado de hoy
Cargando...
Preparar votación de prueba RÁPIDO

Crea memes ficticios con fecha de ayer para activar el botón "Votar" en la app. Sin texto, sin configuración.

Simulador votación semanal SEMANA

Crea 3 memes de prueba de esta semana con votos, para que el botón de "Mejor Meme de la Semana" aparezca en la app (activa la ventana de voto en ajustes con modo tester o espera a lunes/martes).

Acciones de ronda
Borrar voto de usuario

Elimina el voto de un usuario para que pueda volver a votar.

Memes por fecha
Selecciona una fecha
Registros de votos
Selecciona una fecha
Temporada actual
Cargando...
Acciones

Cierra la temporada del mes anterior si no se ha cerrado. Archiva puntuaciones y resetea a 0.

Historial de temporadas
Haz clic en "Ver historial"
Ranking
Información del grupo
Selecciona un grupo
Ajustes editables
Ajustar puntos individuales
Transferir administración
Datos en bruto de Firestore
Selecciona qué datos ver...
Auditoría del grupo

Últimas 50 acciones de admin registradas sobre este grupo (adminLog).

Selecciona un grupo...
Zona peligrosa
Enviar notificación personalizada DEV

Escribe una notificación que llegará al dispositivo del usuario seleccionado la próxima vez que abra la app (o en tiempo real si ya está abierta).

Enviar a todo el grupo GRUPO

Envía la misma notificación a todos los miembros del grupo activo (escribe una para cada uno en Firestore).

Historial de notificaciones enviadas
Sin notificaciones enviadas aún.
Simular ronda de votación SANDBOX

Crea memes ficticios en Firestore con roundDate = ayer para que la pantalla de votación de la app se active. Los memes se marcan con isTestMeme: true para poder borrarlos fácilmente.

Memes de ejemplo que se crearán
Haz clic en "Crear memes de prueba" para ver los ejemplos
Templates disponibles en la app
drake distracted this_is_fine two_buttons change_my_mind expanding_brain one_does_not woman_cat disaster_girl harold

Estos IDs son los templates que la app carga localmente (recursos de drawable). Los memes de prueba usan estos IDs para que se vean con imagen.

Resultados
⚠ Esta cuenta ya no existe en Firebase Auth (borrada o inaccesible) — los datos de Firestore de abajo son restos.
—
Ver en Firestore ↗
Usuario
Resumen
Compras
Memes
Chat
Acciones rápidas
Raw JSON
Datos de cuenta
Cargando...
Grupos
Cargando...
Inventario / packs
Cargando...
Packs desbloqueados

Lo que el usuario tiene DE VERDAD (unlockedPackIds), con su origen. El historial de abajo solo recoge purchaseRecords, así que los packs de gacha y de promo no aparecen ahí.

Selecciona un usuario...
Historial de compras
Selecciona un usuario...
Últimos memes —
Selecciona un usuario...
Últimos mensajes de chat (máx. 50, todos los grupos)
Selecciona un usuario...
Marco (frame) adminGrantFrame

El marco es por grupo (inventario global, pero el groupId queda registrado en la auditoría).

Pack de la tienda adminGrantPack

Regala (o retira) un pack concreto sin pasar por Google Play. Queda un registro en purchaseRecords (marcado ADMIN_GRANT) y en la auditoría.

Ajustar puntos (score)adminAdjustScore
Tokens de gachaadminAdjustGachaTokens

Global al usuario (no depende de grupo) — única vía posible de escritura, la regla de entitlements no permite escritura directa. El campo se rellena con el total actual: edítalo para subirlo, bajarlo, o ponlo a 0.

Notificación de prueba
Volcado JSON crudo
Selecciona una opción...
Packs de la tienda

Desactivar un pack solo lo oculta del catálogo de la tienda y de la ruleta. Quien ya lo tenga comprado lo sigue viendo y usando. Para cortar la venta de verdad, desactiva también el SKU en Play Console.

Cargando packs...
Snapshot diario
Cargando...
Cargando estadísticas...
Comparar con periodo anterior

Sin snapshots suficientes en adminStats para este rango — pulsa "Recalcular ahora" o espera al cálculo diario (06:30 Europe/Madrid).
Métricas adicionales
Cargando...
Mantenimiento manual CUIDADO

Estas tareas ya corren solas cada día (04:00 y 05:00 Europe/Madrid). Dispararlas a mano solo hace falta para probar o forzar una limpieza fuera de horario. El barrido de fantasmas respeta el modo simulación; la limpieza de grupos vacíos siempre borra de verdad (no tiene modo simulación en el backend).


Contadores de temporada. Las columnas Daily y Memes de la tabla en vivo ensenaban los totales DE POR VIDA del miembro, porque al cerrar temporada solo se reseteaban los puntos. Ya hay contadores propios de temporada, pero empiezan a contar desde el despliegue: esto reconstruye los de la temporada que ya esta corriendo a partir de los memes del mes y de los ganadores diarios ya registrados. Idempotente.


Si el KPI de "activos ≤3 dias" no cuadra, usa esto para ver el dato crudo: recalcula el corte de 3 días al instante (sin depender de si ya corrió el cron de hoy) y lista los miembros con el lastActivityAt más reciente que exista, dentro o fuera de la ventana — para saber si el campo se está escribiendo en absoluto.

Auditoría global
Cargando...
Anuncios in-app
Cómo llegan a la gente

Se muestran en una ventana flotante al abrir la app y quedan en el buzón del usuario. El reparto va al documento de cada usuario, así que no cuesta lecturas: el cliente ya lee su users/{uid} al arrancar.

Cargando...
Nuevo anuncio
⚠ Sin botón de cerrar. Si te equivocas al segmentar, dejas a esa gente fuera de la app sin poder hacer nada. Pruébalo antes con tu propio UID en "solo estos UIDs". Si algo sale mal, el botón Retirar de la lista lo quita de todos.
EDITANDO
Traducido desde · el texto pegado está en
Qué acepta

No se guarda solo: revísalo y dale a Guardar. La respuesta del prompt ya trae dentro el idioma y los bloques, así que el selector de arriba solo hace falta si la IA no lo dijo. Las vallas ``` y la charla alrededor se ignoran.

Bloques

Formato: **negrita** · *cursiva* · ~~tachado~~

Botón

A quién

Vacío = a todos. Si pones UIDs, se ignora todo lo demás — es el modo "pruébalo solo conmigo".

Previsualización
Qué fidelidad tiene

1dp = 1px, con las fuentes reales de la app. 320 es el caso peor para el reparto de líneas: si cabe ahí, cabe en todos. No es idéntico al píxel — Chrome y Android son motores de texto distintos, y el ajuste de tamaño de fuente del sistema lo mueve más.

Historial
Cargando...
⚠️ Confirmar acción
Escribe para confirmar: