Skip to content

Prompt 05: Card of the Day (Daily Ritual)

Goal

Build the Card of the Day standalone ritual screen. This is a high-engagement, gamified feature where users draw a single card to earn daily credits and gain a quick insight. It must feel like a "sacred pause".

Design Constraints (From Master Guide)

  • Visuals: "OLED Noir" (#000000 base) with "Ethereal Glaze". The background should feature a slow-moving, subtle radial gradient (e.g., deep amethyst to black) focused on the center of the screen.
  • Typography: Dual-typography system. Use Playfair Display for the ritual prompt ("Seek Your Daily Insight"). Use Inter for the "Draw for +5 credits" subtitle.
  • Pacing: Extreme "Slow UI". This is a micro-meditation. The entrance of the cards should be delayed, floating up slowly from the bottom.

Requirements

  1. Component: CardOfDayRitualView.
  2. Pre-Draw State:
    • Header: "Card of the Day" (Gold #c5a059).
    • Subtitle: "Draw for +5 credits" (Muted text #999490).
    • Center: Three face-down cards arrayed horizontally or in a slight arc. They should have a continuous, subtle levitation animation (sub-0.1Hz translateY and rotateZ).
  3. Interaction (The Draw):
    • When a user taps a card, the other two fade out (opacity: 0, duration: 500ms).
    • The selected card slides to the absolute center of the screen.
    • A dramatic 3D flip animation occurs (react-native-reanimated).
    • A glowing "Aura" (using expo-blur and a radial gradient) bursts behind the flipped card.
  4. Post-Draw State:
    • The card's name (Serif) and a short 1-2 sentence interpretation stream in below the card (Typewriter effect).
    • A "Claim +5 Credits" button appears.

Implementation Guidance

  • Haptics (CRITICAL):
    • impactAsync(ImpactFeedbackStyle.Light) when the three cards initially appear.
    • impactAsync(ImpactFeedbackStyle.Medium) when the user taps their chosen card.
    • A distinct, custom haptic sequence (e.g., three rapid Heavy impacts or a continuous vibration if possible via a specialized library, otherwise use a delayed Heavy impact) exactly as the card completes its 180° flip.
  • Performance: Preload the front images of the possible daily cards so the flip animation does not hitch while loading a remote image.
  • State Management: Use the previously built zustand ritual store to track if the daily draw has been completed, preventing a re-draw.

Internal documentation for MysticX team