A social feed of curated GitHub repos. Connect your account, pick your best work, and share it as procedurally generated visual cards.
Una red social para desarrolladores construida sobre GitHub. Conectas tu cuenta, eliges a mano hasta 5 repos — los que definen lo que construyes, no un volcado de toda tu cuenta — y cada uno se convierte en una ficha visual generada proceduralmente. El conjunto se navega en un feed de scroll infinito: sin swipe, sin likes. La intención es social y pasiva: seguir a un dev y ver qué construye.
Cada ficha se genera a partir de la identidad del propio repo — nada de capturas, nada de IA, nada de aleatoriedad entre recargas:
flowchart LR
A["github_repo_id"] -- "fnv1a" --> B["semilla de 32 bits"]
B -- "mulberry32" --> C["ángulo, gradiente y manchas"]
D["lenguaje dominante"] -- "GitHub Linguist" --> E["color oficial del lenguaje"]
E --> F["paleta en luminosidades bajas"]
C --> G(("ficha"))
F --> G
El hash del ID del repo (estable ante renombrados) alimenta un generador determinista, y la
paleta se ancla al color oficial de GitHub Linguist del lenguaje dominante: las tarjetas
del mismo stack comparten familia cromática. El render es JSX → imagen con @vercel/og
(Satori), cacheable por CDN — y la misma data pinta la tarjeta del feed en HTML/CSS, legible a
cualquier ancho.
| Rust | TypeScript | Python |
|---|---|---|
![]() | ![]() | ![]() |
snapstack.sh/u/<usuario>, indexable y con
su propia portada al compartir.| Capa | Tecnología |
|---|---|
| Framework + hosting | Next.js (App Router) + Vercel |
| Base de datos | Supabase Postgres + pgvector |
| Autenticación | Clerk (provider de GitHub) |
| Sincronización GitHub | Webhooks con firma HMAC (GitHub App en producción) |
| Fichas visuales | @vercel/og (Satori) + motor procedural propio |
| Estilos | Tailwind CSS |
| Analítica | Vercel Web Analytics (sin cookies, sin banner) |
Justificaciones y decisiones técnicas en docs/architecture.md.
Requisitos: Node 20.6+, pnpm v11 (corepack enable), Docker (para Supabase local).
pnpm install
supabase start # stack local en puertos 573xx
pnpm seed:trending # siembra el feed con repos trending reales
pnpm dev
Copia .env.example como .env.local y rellena los valores (el bloque local de Supabase sale
de supabase start). Tests — siempre contra localhost, nunca contra servicios reales:
pnpm test # unitarios (Vitest)
pnpm test:e2e # end-to-end (Playwright)
docs/ → Documentación viva del proyecto (leer antes de trabajar)
docs/features/ → Una ficha por unidad de trabajo, con su tabla de cobertura
changelog/ → Registro estructurado de cada cambio importante
mejoras/ → Backlog de ideas fuera del sprint actual
scripts/ → verificar-cobertura.mjs (corre en CI) y utilidades
src/ → Código de la app (estructura detallada en docs/architecture.md)
supabase/ → Config del stack local y migraciones
El proyecto sigue el protocolo de CLAUDE.md: toda sesión empieza leyendo
docs/, cada feature se acuerda en una ficha antes de construirse, cada cambio deja entrada
en changelog/, y los PRs llevan la salida real de los comandos como evidencia — no casillas
marcadas.