feed · 01 / 11
TikText
Historias que se leen palabra por palabra en un feed vertical
Diseño de producto y desarrollo front-end (React + TypeScript)
Lo que pasa cuando el pulgar decide
La misma consola de chat del Writing Studio, usada aquí para contar por qué existe TikText.
Leer ficción larga en el móvil compite contra formatos diseñados para el pulgar: el video vertical entrega estímulo inmediato y la lectura tradicional exige abrir un libro, encontrar la página y sostener la atención. Además, un escritor independiente no tiene una forma directa de cobrar por un capítulo suelto: publica gratis o desaparece detrás de una plataforma editorial.
TikText adopta la gramática de la red social vertical y la aplica al texto. El feed es una pila de pantallas con scroll-snap obligatorio; cada tarjeta reproduce la historia con técnica RSVP (una palabra fija en el centro, 92 ms por palabra) para eliminar el movimiento ocular, acompañada de banda sonora, carrusel de capítulos y barra de progreso. Sobre esa base el creador monta su negocio: bloquea capítulos con precio en monedas, recibe propinas, sigue sus ingresos en una billetera con analíticas semanales y genera texto y portadas con herramientas asistidas por IA dentro de la misma app.
Dead Frequency
Seis técnicos, una antena que no debería seguir transmitiendo.
@nova.writesVerified
Feed de lectura RSVP
Una palabra fija, cero movimiento ocular
Cyberpunk nocturno: negro absoluto, violeta eléctrico y verde neón con vidrio esmerilado, halos difuminados y oro para todo lo que cuesta dinero. Inter para la interfaz, JetBrains Mono en negrita a 48 px para la palabra que se lee.
Seis piezas que sostienen el feed
Lector RSVP a 650 WPM
Un intervalo de 92 ms avanza palabra a palabra sobre un halo violeta difuminado; el temporizador solo corre en la tarjeta activa del feed, detectada por la posición de scroll.
Feed vertical con scroll-snap
Contenedor de altura completa con snap-y mandatory y snap-always: cada historia se ancla a la pantalla y un listener de scroll calcula el índice activo para pausar el resto.
Capítulos premium y propinas
Los capítulos bloqueados se muestran con miniatura difuminada, candado y etiqueta de precio en monedas doradas; el botón de propina late con un aura radial animada.
Cuatro herramientas de creación
StoryLab agrupa en pestañas el AI Lab (semilla, género, banda sonora, roadmap de capítulos), el Writing Studio, el Visual Synth y el Dashboard de métricas.
Editor con consola de IA
Writing Studio divide la pantalla 60/40: lienzo contenteditable con barra flotante al seleccionar texto (Summarize, Expand, Make Aggressive) y consola de chat con seis directivas rápidas.
Billetera con analíticas
Saldo en USDT sobre Binance Pay, gráfico semanal de ingresos y lectores con Recharts, transacciones recientes y control de precio por capítulo.
Cuatro herramientas dentro de la misma app
Las mismas tarjetas isométricas del selector de géneros, una por destino del estudio. Toca una para abrir su pantalla.
Genre Framework
Story Soundtrack
Story Roadmap
AI Story Lab
Semilla narrativa, cinco marcos de género en tarjetas isométricas, biblioteca musical y un roadmap de capítulos con score de complejidad e interruptor de monetización por capítulo.
Las maquetas reproducen la interfaz real; los datos que muestran son de ejemplo.
Todo lo que cuesta dinero se pinta en oro
Capítulos con candado, propinas que laten y una billetera que lleva la cuenta: el escritor cobra dentro de la misma pantalla donde publica.
120–180
monedas por capítulo bloqueado
USDT
saldo sobre Binance Pay
7 días
de ingresos y lectores en el gráfico
El roadmap, capítulo a capítulo
Las diecisiete funcionalidades presentadas con la misma fila que el Story Roadmap del AI Lab: manija, código monoespaciado y barra de complejidad.
Tres capas y un solo cliente HTTP
Router por estado, sin dependencia externa: la vista decide el modo, los servicios tipan la respuesta y el cliente axios centraliza los errores.
Aplicación de una sola página montada en src/main.tsx sobre createRoot. App.tsx actúa como router por estado con tres modos raíz — reader, lab y wallet — sin dependencia de router externo. El modo reader renderiza una pila de StoryCard dentro de un contenedor con snap-y mandatory; un efecto sobre el evento de scroll divide scrollTop entre la altura de ventana para calcular el índice activo, y solo esa tarjeta ejecuta el intervalo RSVP. StoryLab es un contenedor de pestañas que monta WritingStudio, VisualSynth y CreatorDashboard, con navegación inferior fija de cuatro destinos. CreatorWallet repite el patrón con sus propias cuatro pestañas (feed, studio, marketplace, wallet) y recibe callbacks para devolver al lector la portada elegida en FeedGrid. La capa de datos está separada en tres niveles: src/lib/http.ts crea la instancia axios con cabeceras X-Api-Key y X-Timezone derivada del navegador e interceptores que disparan toasts de error; src/lib/api.ts expone envoltorios genéricos get, post, put, patch y del tipados; src/services/creatorStudio.ts declara los tipos CreatorStats y CreatorContent y consume los dos endpoints del estudio con el sobre paginado genérico PaginatedResponse<T> definido en src/lib/types.ts. La biblioteca visual vive aparte en src/app/components/ui con 46 primitivos shadcn/ui, de modo que los 9 módulos de dominio suman unas 4.195 líneas propias sin mezclarse con el sistema de diseño.
Cinco cosas que no salieron a la primera
Cinco lectores RSVP simultáneos en el DOM significaban cinco temporizadores de 92 ms corriendo a la vez, consumiendo CPU y desincronizando las historias que el usuario no estaba viendo.
El estado de tarjeta activa se calcula en el contenedor padre a partir del scroll y se propaga como prop isActive; el efecto que crea el setInterval retorna temprano si la tarjeta no está activa y limpia el intervalo al desmontar, de forma que solo hay un temporizador vivo.
Cambiar de capítulo dentro de una historia obligaba a reiniciar el flujo de palabras sin dejar el índice apuntando fuera del nuevo arreglo, lo que producía palabras vacías en pantalla.
Un efecto observa el índice de capítulo, sustituye el arreglo de palabras por el del capítulo seleccionado con recaída al texto base de la historia y reinicia el índice de palabra a cero antes de que el intervalo vuelva a avanzar.
Cada pantalla necesitaba manejar sus propios errores de API — errores estándar, errores de validación 422 con arreglo de detalles y caídas de red sin respuesta — lo que multiplicaba el try/catch por componente.
Un interceptor de respuesta único dispara toastError en cualquier fallo y reenvía el error; el parser de src/lib/toast.ts distingue las tres formas de payload y construye un título y una descripción legibles, dejando el manejo local como opcional.
La identidad visual de TikText — negro absoluto, violeta y verde neón — no coincidía con el tema por defecto de shadcn/ui incluido en la exportación de Figma Make, definido en tokens oklch claros.
Los módulos de dominio se pintan con hex literales de marca en las utilidades de Tailwind y con gradientes en línea, mientras theme.css se conserva intacto para que los 46 primitivos de la biblioteca sigan funcionando sin reescribir el sistema de tokens.
El feed de descubrimiento y el lector vertical son dos vistas distintas, pero al abrir una historia desde la rejilla la portada debía acompañar la lectura sin duplicar el estado de la historia.
FeedGrid emite el identificador y la URL de portada hacia CreatorWallet, que los eleva a App; el estado selectedFeedStory mapea el id al índice del feed y pasa coverImage a la StoryCard correspondiente, que la usa como fondo bajo una capa negra al 85 por ciento con desenfoque.
El prototipo en cifras
9
Módulos de dominio propios
4.195
Líneas de TypeScript propias
650
Palabras por minuto del lector RSVP
46
Primitivos shadcn/ui integrados
11
Vistas y pestañas navegables
16
Presets de estilo en Visual Synth
Con qué está construido
TikText traslada la mecánica del feed vertical de las redes sociales al texto: cada historia ocupa una pantalla completa con scroll-snap y se lee mediante un lector RSVP que proyecta una sola palabra al centro a 650 palabras por minuto.
Alrededor del lector hay una capa social completa — perfil de creador, likes, drawer de comentarios, propinas en monedas y capítulos premium con precio — y una capa de creación con cuatro herramientas: AI Lab, Writing Studio, Visual Synth y Dashboard.
El proyecto nació como diseño de alta fidelidad en Figma Make y se convirtió en una app React 18 + Vite + Tailwind v4 con 9 módulos de dominio propios sobre 46 primitivos shadcn/ui.
La capa de datos ya está conectada: un cliente axios con interceptores, toasts tipados de error y el servicio de Creator Studio que consume estadísticas y contenido paginado del creador.
TikText
¿Quieres algo así para tu producto?
Un front-end completo: feed con scroll-snap, lector RSVP sincronizado, cuatro herramientas de creación y una capa de datos tipada con manejo central de errores. Si tienes un producto que necesita interfaz de verdad, este es el terreno.