Skip to content

heyyyjisu/Taros

Repository files navigation

Taros

A dialogue-driven tarot reading experience

Vue 3 Nuxt LemonSqueezy Resend Status


About

Taros is an AI-powered tarot reading app that talks with you rather than at you. Instead of dropping a static card meaning on you, it asks follow-up questions, listens to your answers, and uses everything you share to give you a reading that actually fits your situation.

Seven cards are shuffled and surfaced at random. You pick one. The AI takes it from there.


Motivation

Tarot reading has always been something interesting to do with family or friends — whether you are spiritual or not. It opens up conversations, sometimes with other people, sometimes just with yourself. You often land on an answer just by saying a question out loud.

That quality is what this app tries to bring online. A reading you can reach for whenever you want it.


Key Features

Feature Description
Dialogue-first reading The AI asks you questions to build context before giving any interpretation
7-card shuffle Cards are drawn randomly each session. No fixed layout
Free summary Every user gets a short reading at no cost
Pay-what-you-want Full detailed readings use a flexible payment model via LemonSqueezy
Email delivery After payment, the full reading is sent to you automatically via Resend
No account needed No login, no saved data. One session, one reading — like the real thing

Tech Stack

  • Frontend — Vue 3, Nuxt
  • AI — Claude API (server-side, keys protected)
  • Payments — LemonSqueezy
  • Email — Resend

Architecture

Kept intentionally simple. No user accounts, no database, no stored reading history. The experience mirrors an in-person tarot reading — it happens, and then it is yours to keep via email. The server layer exists only to protect API keys.

server/api/reading.post.ts   — server-side handler, protects API keys
app/api/tarot.ts             — browser-side calls to the server
composables/useTarot.ts      — session and card state
composables/useReading.ts    — AI response handling
composables/useVoice.ts      — microphone logic

Challenges

Card animations — Multi-step animations need a written map before you write a single line. Even small details like fade-out timing need to be planned step by step, or they break each other.

Payment API setup — Integrating LemonSqueezy took more time than expected. Webhook timing and email triggers both needed careful handling.


Lessons Learned

When there are several steps of animation, plan every keyframe on paper first — including the small ones like when a fade starts and ends. Without that map, steps start breaking each other in ways that are hard to trace.


Current Limitations

  • English only at this stage
  • Card layout is fixed to a 3-card past / present / future spread
  • No reading history or session saving

Status

Personal project — not open for contributions.

About

Tarot reading app

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages