EC · ENRIQUE CHYRNIA / FIL-GRAMA.PRT ← Inicio
FIL-GRAMA.PRTHOJA 01/09 · EL PROBLEMAGREENBAR · 132 COL

01Por qué existe Fil-Grama

Una agencia que gestiona redes de varios clientes necesita comparar rendimiento entre cuentas y en el tiempo, pero Instagram, Facebook y TikTok no ofrecen historiales largos: cada API expone una ventana limitada. Sin una captura propia y constante, esa historia se pierde.

Fil-Grama la captura con un job diario que guarda snapshots de métricas (alcance, seguidores, interacciones, engagement) en su propia base de datos, y con esa historia arma dashboards por cliente, comparación entre cuentas y reportes en PDF.

Captura histórica propiaSnapshots diarios por cuenta, más allá de la ventana que da cada red.
Multi-cliente, multi-redCada cliente de la agencia con sus cuentas de las tres redes en un mismo panel.
Reportes y comparaciónDashboards, comparación entre cuentas y PDF por cliente y rango de fechas.
FIL-GRAMA.PRTHOJA 02/09 · ARQUITECTURAGREENBAR · 132 COL

02Backend modular, contrato de API como fuente de verdad

Backend en Java con Spring Boot, separado en módulos por dominio (auth, clientes, cuentas, OAuth, integración Meta, métricas, sincronización, reportes, media, storage). PostgreSQL con migraciones versionadas. El frontend en React consume el contrato de API con un cliente generado automáticamente (Orval), para que backend y frontend no se desincronicen.

Redes sociales TikTok API Meta Graph API Job diario sync de métricas y OAuth Backend Auth · Cuentas Métricas · Sync Reportes · Media módulos por dominio · Spring Boot Datos y archivos PostgreSQLmétricas · clientes Storage S3R2 prod · MinIO dev Cliente Frontend Reactdashboards · reportes Auth con JWT (access + refresh rotado) · servidor MCP embebido con tools de solo lectura sobre reportes Diagrama conceptual, simplificado. Refleja los módulos reales del backend sin exponer detalles de infraestructura.

Rotación de refresh tokens

Si un refresh token robado se reusa, se detecta y se revoca toda su familia — no solo ese token.

Login Access (15 min)+ Refresh (familia A) Usa refresh →rota: nuevo access+refresh refresh viejo reusado Reuso detectadotoken ya había rotado Revoca familia A enteratodas las sesiones de la cadena 401 Cada familia de tokens tiene su propia cadena de rotación; el reuso de un token ya rotado es la señal de robo.

Modelo de datos — núcleo

14 tablas en el esquema; este es el núcleo relevante para el dashboard y el job diario.

clientstimezone · archived usersrol admin/empleado employee_client_priority social_accountsIG · FB · TikTok postspor cuenta account_metric_snapshotsappend-only, diario post_metric_snapshotsappend-only sync_runsun job diario sync_account_resultspor cuenta, por corrida Todo cuelga de client_id — el eje pensado para volverse multi-tenant sin reescritura.
FIL-GRAMA.PRTHOJA 03/09 · INGENIERÍAGREENBAR · 132 COL

03Detalles concretos del backend

  • 001
    167+ testsIncluye e2e con Testcontainers contra un Postgres real, no solo mocks.
  • 002
    Refresh tokens con rotaciónSi un token robado se reusa, se detecta y se revoca toda la familia, no solo ese token.
  • 003
    Tokens OAuth cifrados en reposoAES-GCM; nunca se guardan ni se exponen en texto plano.
  • 004
    Errores en RFC 7807Un único exception handler; problem+json consistente en toda la API.
  • 005
    Multi-tenant desde el modelo14 tablas con client_id, pensado para escalar a SaaS sin reescritura.
FIL-GRAMA.PRTHOJA 04/09 · INTEGRACIONESGREENBAR · 132 COL

04TikTok y Meta, con su estado real

Integraciones implementadas en modo sandbox; la aprobación de las APIs de métricas de Meta está en proceso. Cuento el estado tal cual está, sin inflar: esto es un producto en construcción.

TikTok — OAuth + métricas[ OK ] sandbox completo

OAuth de punta a punta con PKCE, refresh de token con rotación y flujo de conexión con QR de marca. Es la integración más madura: la única probada completa, desde autorización hasta lectura de métricas. La API de publicación requiere una auditoría aparte de TikTok, todavía no habilitada.

Meta — Instagram / Facebook[PEND] App Review

Implementada en código (OAuth, lectura de métricas), pero Meta exige App Review con Advanced Access y verificación de negocio antes de habilitarla con cuentas de clientes reales. Hoy funciona en modo Development, solo con cuentas propias de prueba, mientras avanza la aprobación.

FIL-GRAMA.PRTHOJA 05/09 · ESTADOGREENBAR · 132 COL

05En desarrollo activo, camino a SaaS

Fil-Grama todavía no tiene clientes reales operando en producción: el foco está en dejar bien resuelta la base — arquitectura, integraciones, infraestructura — antes de sumar usuarios. El próximo hito importante es la integración de Meta habilitada por completo.

  • [x]
    Backend y frontend desplegadosVPS en Vultr + Cloudflare Pages, funcionando.
  • [x]
    TikTok integradoOAuth y lectura de métricas en sandbox.
  • [~]
    Meta en revisiónApp Review y verificación de negocio en proceso.
  • [~]
    Reportes automáticosgeneración en PDF por cliente y rango de fechas.
  • [ ]
    Publicación de contenidopendiente de la auditoría de la API de TikTok.
  • [ ]
    SaaS multi-tenantevolucionar de herramienta interna a producto.
FIL-GRAMA.PRTHOJA 06/09 · INFRAESTRUCTURAGREENBAR · 132 COL

06Cómo está desplegado

Alquilé el servidor, hice las conexiones y desplegué las dos partes del sistema: backend en un VPS de Vultr, con Docker Compose detrás de Caddy como proxy y PostgreSQL, y frontend en Cloudflare Pages, con despliegue automático en cada push a la rama principal.

Para desarrollo uso un túnel de Cloudflare hacia el backend local: pruebo contra un dominio real sin exponer la máquina de desarrollo. Por seguridad, esta página no incluye IPs, credenciales, tokens ni URLs internas.

BackendVPS Vultr · Docker Compose · Caddy · PostgreSQL
FrontendCloudflare Pages · despliegue automático vía git push
StorageCloudflare R2 (S3-compatible) en prod · MinIO en dev
FIL-GRAMA.PRTHOJA 07/09 · RECORRIDOGREENBAR · 132 COL

07Los flujos y pantallas, navegables

Una selección curada de las 50 pantallas diseñadas: analítica, comparación de cuentas, publicaciones, reportes y plataforma. Cada una se abre interactiva, tal como fue diseñada, en escritorio y móvil.

Del wireframe a la alta fidelidad

La misma pantalla (Audiencia): estructura primero, identidad visual después.

Wireframe de baja fidelidad de la pantalla de Audiencia
Fase 1 · Wireframe — estructura y jerarquía, sin color.
Versión de alta fidelidad de la pantalla de Audiencia
Fase 2 · Alta fidelidad — paleta, tipografía y componentes aplicados.
FIL-GRAMA.PRTHOJA 08/09 · PRODUCTOGREENBAR · 132 COL

08Capturas reales de la plataforma funcionando

La app corriendo en producción, no mockups: dashboard por cliente, detalle de una publicación, comparación entre cuentas y el generador de reportes exportable a PDF.

Dashboard de cliente en Fil-Grama con métricas de alcance, interacciones, engagement y seguidores
Fig. 01 — Dashboard por cliente: alcance, interacciones, engagement y seguidores, con el historial armado por el job diario.
Detalle de una publicación de Instagram con su métrica de comentarios en el tiempo
Fig. 02 — Detalle de publicación: contenido real de la API de Instagram, con la evolución de una métrica en el tiempo.
Comparación de alcance y seguidores entre las cuentas conectadas de un cliente, en gráfico de barras
Fig. 03 — Comparar cuentas: alcance, seguidores, interacciones y engagement lado a lado, en tabla o en barras.
Generador de reporte automático por cliente con KPIs por red social, exportable a PDF o Markdown
Fig. 04 — Reporte automático: KPIs por red con variación vs. período anterior, exportable a PDF o Markdown.

Capturas tomadas sobre Oh My Bunny — mi propio emprendimiento, que uso como cuenta de prueba en producción mientras avanza la aprobación de Meta. Los números son bajos porque es una cuenta real recién conectada, no una demo con datos inflados.

FIL-GRAMA.PRTHOJA 09/09 · STACKGREENBAR · 132 COL

09Inventario de tecnologías

Backend

  • Java · Spring Boot
  • APIs REST · JWT

Datos

  • PostgreSQL · Flyway
  • Modelado relacional

Frontend

  • React 19 · TypeScript
  • Vite · TanStack Query

Integraciones

  • OAuth 2.0 · PKCE
  • TikTok API · Meta Graph API

Infraestructura

  • Vultr VPS · Docker Compose
  • Caddy · Cloudflare Pages · R2

IA

  • Servidor MCP embebido
  • Tools de solo lectura sobre reportes