diff --git a/README.md b/README.md index 301ba9d..50e5e55 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,18 @@ **Tarokka** is a real-time Tarokka card reading app for _Dungeons & Dragons: Curse of Strahd_. It simulates Madam Eva’s fortune-telling, revealing a hero’s fate and Strahd’s secrets, and is built to deliver an authentic, immersive experience for DMs and players alike. -![screenshot](public/screenshot.png) +To be honest, I’d say this is overkill for what is a relatively small aspect of _Curse of Strahd_ but I had fun making it. It’s a [Next.js](https://nextjs.org/) app running a custom server in order to employ [Socket.IO](https://socket.io/). When a new session is created the DM (dungeon master) is presented a game with the cards shuffled and laid out on the table. There is a link available for sharing the session to any spectators. The DM has access to settings that allow for limiting what info spectators have access to (card purpose, prophecy, notes) and the style of cards used. + +![screenshot](public/img/screenshot.png) You can see it live at: -👉 [https://tarokka.mcmorgans.us](https://tarokka.mcmorgans.us) +👉 [https://tarokka.app](https://tarokka.app) --- ## ✨ Features -- 🔮 **Faithful to the Tarokka Deck**: Supports all cards and positions used by Madam Eva's reading. +- 🔮 **Faithful to the Tarokka Deck**: Supports all cards and positions used by Madam Eva’s reading. - 💬 Dynamic prophecy rendering based on card and position - 🎨 Multiple card styles - 🧙 Separate DM and Spectator Views diff --git a/components/BuyMeACoffee.tsx b/components/BuyMeACoffee.tsx new file mode 100644 index 0000000..a7a6547 --- /dev/null +++ b/components/BuyMeACoffee.tsx @@ -0,0 +1,13 @@ +'use client'; + +type BuyMeACoffeeProps = { + className?: string; +}; + +export default function BuyMeACoffee({ className = '' }: BuyMeACoffeeProps) { + return ( + + Buy Me A Coffee + + ); +} diff --git a/components/GitHubButton.tsx b/components/GitHubButton.tsx new file mode 100644 index 0000000..6c9421a --- /dev/null +++ b/components/GitHubButton.tsx @@ -0,0 +1,21 @@ +'use client'; + +type GitHubButtonProps = { + className?: string; +}; + +export default function GitHubButton({ className = '' }: GitHubButtonProps) { + return ( + + + + ); +} diff --git a/components/Notes.tsx b/components/Notes.tsx index 6efcd4d..36f44c5 100644 --- a/components/Notes.tsx +++ b/components/Notes.tsx @@ -53,7 +53,7 @@ export default function Notes({ gameData: { dmID, cards, settings }, show }: Not className={`transition-all duration-250 ${showNotes ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0'}`} >
note!.join('\n')).join('\n\n')} diff --git a/components/Settings.tsx b/components/Settings.tsx index c337e69..b9cbe65 100644 --- a/components/Settings.tsx +++ b/components/Settings.tsx @@ -4,7 +4,9 @@ import { useState } from 'react'; import { Settings as Gear } from 'lucide-react'; import { Cinzel_Decorative } from 'next/font/google'; +import BuyMeACoffee from '@/components/BuyMeACoffee'; import CopyButton from '@/components/CopyButton'; +import GitHubButton from '@/components/GitHubButton'; import Scrim from '@/components/Scrim'; import Switch from '@/components/Switch'; import { CardStyle, GameUpdate } from '@/types'; @@ -114,6 +116,10 @@ export default function Settings({ gameData, changeAction }: SettingsProps) { + + + +