Registro público donde periodistas, abogados, científicos y activistas de América Latina pueden crear declaraciones firmadas criptográficamente y ancladas en Bitcoin, dejando constancia de que no tienen intención de hacerse daño.
Si algo les ocurre, sus propias palabras permanecen como evidencia pública, fechada e inmutable.
- El usuario genera una frase de 12 palabras (BIP-39) que deriva su par de claves Ed25519.
- Escribe su declaración y la sube a IPFS — el servidor nunca ve el texto.
- El backend emite un sello de tiempo RFC 3161 y ancla el hash en Bitcoin vía OpenTimestamps.
- La declaración queda pública y verificable por cualquier persona en
/declaration/:id/verify. - Opcionalmente, el usuario puede verificar su identidad con Didit (KYC biométrico). Los datos biométricos nunca tocan nuestros servidores; Didit los elimina inmediatamente tras la decisión.
consta/
├── packages/
│ ├── backend/ # API REST — Node.js + Express + PostgreSQL
│ └── frontend/ # Aplicación web — Next.js
npm install
# Backend
cp packages/backend/.env.example packages/backend/.env
# Edita packages/backend/.env con tus credenciales
# Frontend
cp packages/frontend/.env.example packages/frontend/.env.local
# Edita packages/frontend/.env.local con tus credenciales
# Ejecutar ambos en paralelo
npm run dev:backend # http://localhost:3001
npm run dev:frontend # http://localhost:3000| Capa | Tecnología |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS |
| Backend | Node.js, Express 4 |
| Base de datos | PostgreSQL (Supabase en desarrollo, Railway en producción) |
| Autenticación | JWT + Ed25519 (frase BIP-39) |
| Almacenamiento | IPFS vía Pinata |
| Sello de tiempo | RFC 3161 (FreeTSA) |
| Ancla blockchain | OpenTimestamps (Bitcoin) |
| KYC | Didit |
| Zavu |
- Backend: Railway — conecta el repositorio, agrega el plugin PostgreSQL, configura las variables de entorno.
- Frontend: Vercel — conecta el repositorio, configura
NEXT_PUBLIC_API_URL.
- El servidor nunca almacena IPs ni datos biométricos.
- Todo el texto de las declaraciones vive en IPFS, no en la base de datos.
- Las sesiones de Didit se eliminan de sus servidores en cuanto llega la decisión (Approved/Declined).
- La identidad de un usuario no puede reconstruirse a partir de la base de datos.
Construido en 72 horas para hack@latam — track DEF/ACC.