33. Multi-Deck Support
Status: Accepted Date: 2025-07-06
Context
The world of tarot is diverse, with many different decks, each with its own unique artwork, symbolism, and history (e.g., Rider-Waite-Smith, Thoth, Tarot de Marseille). A tarot application that only supports a single deck limits its appeal and fails to cater to the preferences of a wide range of users. To be a comprehensive tool, the application must support multiple decks.
Decision
The Arcana application will be designed from the ground up to support multiple, distinct tarot decks. The system will not be hardcoded to any single deck. Users will be able to choose their preferred deck for their readings from a list of available options. This will be enabled by the adr://dynamic-deck-loading decision, where decks are defined in a configuration file and loaded at runtime.
Consequences
Positive:
- Wider Appeal: Supporting popular and diverse decks makes the application attractive to a larger audience of tarot enthusiasts.
- Enhanced User Experience: Allows users to work with the deck they are most familiar or comfortable with, leading to a more meaningful experience.
- Flexibility & Extensibility: The architecture makes it easy to add new decks in the future without requiring significant code changes.
Negative:
- Asset Management: Each new deck adds a significant number of image assets that need to be stored, managed, and optimized.
- Data Consistency: Requires a consistent data structure for all decks to ensure that the application logic can handle any selected deck uniformly.
- UI Complexity: The user interface needs to include a mechanism for users to browse, select, and manage their preferred decks.
Mitigation:
- Asset Optimization: Implement an automated process to optimize all deck image assets for web and mobile delivery to ensure fast loading times.
- Schema Validation: Enforce a strict, validated schema for all deck data files (as per the
adr://dynamic-deck-loadingdecision) to ensure consistency. - Centralized Deck Service: A dedicated
DeckServicewill be the single point of access for all deck-related data, abstracting away the complexities of managing multiple decks from the rest of the application.