Skip to content
Independent productProducto independiente

ElTarot.esElTarot.es

Designed and built the product, PWA experience, bilingual content model, and validated server-side AI reading endpoint.Diseñé y construí el producto, la experiencia PWA, el modelo de contenido bilingüe y el endpoint de lectura con IA en el servidor, ya validado.

A bilingual, privacy-first tarot PWA with offline readings, a contained Claude interpretation feature, and native apps on Google Play and the App Store.Una PWA de tarot bilingüe y con la privacidad por delante, con lecturas sin conexión, una interpretación contenida con Claude y apps nativas en Google Play y el App Store.

AstroTypeScriptClaude AIPWASEOi18nWebAndroidiOSTarot
ElTarot.es website preview

A free, privacy-first Tarot de Marsella reading web app that runs entirely in the browser, with no registration and no accounts. ElTarot.es offers four reading modes (a daily card, a 3-card spread from the 22 Major Arcana, a 3-card spread from the full 78-card deck, and an AI-powered reading), all wrapped in card flip and shuffle animations that mirror a native experience. It is bilingual (Spanish/English with auto-detect) and installable as a PWA for full offline use.

Mobile apps

The native companion is Tarot Marsella, a Flutter app on Google Play and the App Store. Same deck family, daily card, and 3-card spreads, built for the phone rather than the browser.

Features

  • Four Reading Modes: Daily card (one card per calendar day with rotating messages), a 3-card spread over the 22 Major Arcana, a 3-card spread over the full 78-card deck, and an AI-powered reading (Spanish only, one per day)
  • AI-Powered Interpretations: Write a custom question and receive a Claude-generated reading of a 3-card spread, gated to one per device per day and exportable to a branded A4 PDF
  • Animated Card Mechanics: Multi-phase shuffle (collect, riffle, deal) and a 600ms card flip animation, with swipe-down and a floating refresh button to redraw spreads
  • 22 Major Arcana Library: Dedicated card detail pages with image, name, essence, and per-card sections for Meaning, Advice, and reflection questions
  • Share as Image: Generates a branded PNG of a completed spread with logo, all three card faces, and Past/Present/Future position labels
  • Bilingual & Offline-First: Full Spanish/English UI and interpretations, language switching with auto-detect, and a service-worker PWA that precaches all 78 card images and the card data for offline reading
  • Privacy-First by Design: No registration, no accounts, consent-gated analytics off by default, and a first-launch disclaimer and responsibility acceptance flow

Tech Stack

  • Astro 6 with the @astrojs/node adapter (standalone); static output with on-demand SSR for the reading API route
  • Vanilla TypeScript app layer with no UI framework (no React, Vue, or Svelte)
  • Hand-rolled Store class for state management, persisted via localStorage
  • Claude via the @anthropic-ai/sdk for AI readings, served from an /api/reading POST endpoint
  • jsPDF for PDF export and the Marcellus font (Fontsource) for typography
  • Service worker with a hashed precache version stamped by a postbuild step
  • Schema.org JSON-LD, hreflang alternates, Open Graph/Twitter cards, and an llms.txt endpoint for SEO and LLM discovery

AI-Powered Readings

The reading endpoint validates before it spends anything. A request must carry the Spanish locale, a question of one to five hundred characters, and exactly three integer card ids inside the deck range, or it is rejected with a 400 before the model is ever called. The three drawn cards are resolved server-side against the real card data and passed in as structured context, so the model interprets the cards that were actually drawn instead of inventing its own.

The system prompt is modelled on a named practitioner’s voice rather than a generic mystic, and it carries its limits in the prompt itself: no deterministic verdicts, no fatalism, no medical, legal, or financial advice, and an invitation to seek professional support on serious topics. Output is bounded to Spanish prose of 180 to 280 words. The API key is read at runtime on the server and never reaches the bundle, the model id is configurable through an environment variable, and the free reading is gated to one per device per day on the client.

Compared with the Paglipat concierge on paglipat.com, this is deliberately small. A single shot generation behind strict input validation is the right amount of machinery for one reading a day. The judgement is knowing which of the two a feature needs.

The same applied AI portfolio includes the site assistant on davthecoder.com (Worker backed chat with curated grounding and contact handoff). Paglipat is depth. The personal site chat is a live demo. ElTarot is contained scope. All independent products, not client AI work. See applied AI product features.

Frequently Asked Questions

What is ElTarot.es?

It is a free, privacy-first Tarot de Marsella reading web app that runs entirely in the browser with no registration and no accounts. It offers four reading modes: a daily card, a 3-card spread over the 22 Major Arcana, a 3-card spread over the full 78-card deck, and an AI-powered reading. Native apps are Tarot Marsella on Google Play and the App Store.

What platform does it run on?

The website is a PWA. A service worker precaches all 78 card images and the card data, so it works fully offline once installed. The UI is bilingual (Spanish/English with auto-detect). Native Android and iOS apps are on Google Play and the App Store.

What is it built with?

Astro 6 with the @astrojs/node adapter (static output with on-demand SSR for the reading API route), a vanilla TypeScript app layer with no UI framework, and a hand-rolled Store class persisted via localStorage. The AI readings call Claude through the @anthropic-ai/sdk from an /api/reading endpoint, and PDF export uses jsPDF.

How do the AI readings work?

You write a custom question and get a Claude-generated reading of a 3-card spread, gated to one per device per day and exportable to a branded A4 PDF. The endpoint calls Claude (model claude-sonnet-4-6, configurable via TAROT_MODEL) with a Jodorowsky-informed reader persona, constrained to symbolic guidance in Spanish (180 to 280 words). It forbids predictions and diagnoses, and shows a disclaimer that it is emotional accompaniment, not fortune-telling.

Una aplicación web gratuita de lecturas de Tarot de Marsella, con la privacidad por delante, que se ejecuta por completo en el navegador, sin registro y sin cuentas. ElTarot.es ofrece cuatro modos de lectura (una carta del día, una tirada de 3 cartas con los 22 arcanos mayores, una tirada de 3 cartas con la baraja completa de 78 cartas y una lectura con IA), todo envuelto en animaciones de volteo y de barajado que imitan una experiencia nativa. Es bilingüe (español e inglés, con detección automática) y se puede instalar como PWA para usarla del todo sin conexión.

Aplicaciones móviles

La compañera nativa es Tarot Marsella, una app en Flutter en Google Play y en el App Store. La misma familia de baraja, la carta del día y las tiradas de 3 cartas, pensada para el móvil y no para el navegador.

Funciones

  • Cuatro modos de lectura: carta del día (una carta por día natural, con mensajes que rotan), una tirada de 3 cartas sobre los 22 arcanos mayores, una tirada de 3 cartas sobre la baraja completa de 78 cartas y una lectura con IA (solo en español, una al día)
  • Interpretaciones con IA: escribes una pregunta propia y recibes una lectura generada por Claude de una tirada de 3 cartas, limitada a una por dispositivo y día, y exportable a un PDF A4 con la marca
  • Mecánica animada de las cartas: barajado en varias fases (reunir, mezclar en puente, repartir) y un volteo de 600 ms, con gesto hacia abajo y un botón flotante de refresco para volver a tirar
  • Biblioteca de 22 arcanos mayores: páginas de detalle de cada carta, con imagen, nombre, esencia y secciones por carta de Significado, Consejo y preguntas de reflexión
  • Compartir como imagen: genera un PNG con la marca de una tirada terminada, con el logotipo, las tres caras y las etiquetas de posición Pasado/Presente/Futuro
  • Bilingüe y sin conexión primero: interfaz e interpretaciones completas en español y en inglés, cambio de idioma con detección automática, y una PWA con service worker que precarga las 78 imágenes y los datos de las cartas para leer sin conexión
  • Privacidad por diseño: sin registro, sin cuentas, analítica condicionada al consentimiento y apagada por defecto, y un aviso de primer arranque con un flujo de aceptación de responsabilidad

Pila técnica

  • Astro 6 con el adaptador @astrojs/node (standalone); salida estática con SSR bajo demanda para la ruta de la API de lectura
  • Capa de aplicación en TypeScript puro, sin framework de interfaz (ni React, ni Vue, ni Svelte)
  • Una clase Store hecha a mano para el estado, persistida con localStorage
  • Claude mediante @anthropic-ai/sdk para las lecturas con IA, servidas desde un endpoint POST /api/reading
  • jsPDF para exportar a PDF y la fuente Marcellus (Fontsource) para la tipografía
  • Service worker con una versión de precarga con hash, sellada por un paso de postbuild
  • JSON-LD de Schema.org, alternates hreflang, tarjetas Open Graph/Twitter y un endpoint llms.txt para SEO y descubrimiento por LLM

Lecturas con IA

El endpoint de lectura valida antes de gastar nada. Una petición tiene que llevar el locale en español, una pregunta de entre uno y quinientos caracteres y exactamente tres identificadores enteros de carta dentro del rango de la baraja, o se rechaza con un 400 antes de llamar siquiera al modelo. Las tres cartas sacadas se resuelven en el servidor contra los datos reales de las cartas y se pasan como contexto estructurado, de modo que el modelo interpreta las cartas que de verdad salieron en lugar de inventarse las suyas.

El prompt de sistema está modelado sobre la voz de un practicante con nombre, no sobre un místico genérico, y lleva sus límites dentro del propio prompt: nada de veredictos deterministas, nada de fatalismo, nada de consejo médico, jurídico o financiero, y una invitación a buscar apoyo profesional en los temas serios. La salida queda acotada a prosa en español de 180 a 280 palabras. La clave de la API se lee en tiempo de ejecución en el servidor y no llega nunca al bundle, el identificador del modelo se configura con una variable de entorno, y la lectura gratuita se limita a una por dispositivo y día en el cliente.

Comparado con el conserje de Paglipat en paglipat.com, esto es pequeño a propósito. Una generación de un solo disparo, detrás de una validación estricta de la entrada, es la maquinaria justa para una lectura al día. El criterio está en saber cuál de las dos necesita cada función.

El mismo portfolio de IA aplicada incluye el asistente del sitio en davthecoder.com (chat respaldado por un Worker, con anclaje curado y traspaso al contacto). Paglipat es profundidad. El chat del sitio personal es una demostración en vivo. ElTarot es un alcance contenido. Todos son productos independientes, no trabajo de IA para clientes. Ver funciones de producto de IA aplicada.

Preguntas frecuentes

¿Qué es ElTarot.es?

Es una aplicación web gratuita de lecturas de Tarot de Marsella, con la privacidad por delante, que se ejecuta por completo en el navegador, sin registro y sin cuentas. Ofrece cuatro modos de lectura: una carta del día, una tirada de 3 cartas sobre los 22 arcanos mayores, una tirada de 3 cartas sobre la baraja completa de 78 cartas y una lectura con IA. Las apps nativas son Tarot Marsella, en Google Play y en el App Store.

¿En qué plataforma funciona?

El sitio web es una PWA. Un service worker precarga las 78 imágenes de las cartas y los datos de la baraja, así que, una vez instalada, funciona del todo sin conexión. La interfaz es bilingüe (español e inglés, con detección automática). Las apps nativas de Android e iOS están en Google Play y en el App Store.

¿Con qué está hecho?

Con Astro 6 y el adaptador @astrojs/node (salida estática con SSR bajo demanda para la ruta de la API de lectura), una capa de aplicación en TypeScript puro sin framework de interfaz, y una clase Store hecha a mano y persistida con localStorage. Las lecturas con IA llaman a Claude a través de @anthropic-ai/sdk desde un endpoint /api/reading, y la exportación a PDF usa jsPDF.

¿Cómo funcionan las lecturas con IA?

Escribes una pregunta propia y obtienes una lectura generada por Claude de una tirada de 3 cartas, limitada a una por dispositivo y día y exportable a un PDF A4 con la marca. El endpoint llama a Claude (modelo claude-sonnet-4-6, configurable mediante TAROT_MODEL) con una persona lectora informada por Jodorowsky, limitada a orientación simbólica en español (de 180 a 280 palabras). Prohíbe predicciones y diagnósticos, y muestra un aviso de que es acompañamiento emocional, no adivinación.