An Android application that combines traditional Tarot reading practices with modern AI technology to provide comprehensive digital Tarot experiences.
- Capture photos of physical Tarot spreads with your device camera
- AI image recognition identifies cards and their positions
- Automatic deck identification with user confirmation
- Generates holistic interpretations based on card positions and eigenvalue calculations
- Handles blurry images and incomplete spreads with error detection
- Select from a curated library of Tarot decks
- Choose from various spread layouts (Celtic Cross, Three Card, Seven Card, etc.)
- Interactive card shuffling with smooth animations
- Position-specific card interpretations
- Comprehensive reading narratives combining all card meanings
- Drag-and-drop interface for designing custom spreads
- Assign custom meanings to each position in your spread
- Save and manage your personalized spread layouts
- Integration with the digital reading experience
- Maintain a comprehensive log of all your readings
- Search and filter readings by date, deck used, or spread type
- Add personal notes and reflections to each reading
- Share readings with others through social media or messaging apps
- Dynamic library of Tarot decks and cards
- Detailed card information including images, upright meanings, reversed meanings, and keywords
- Explore card symbolism and learn about different decks
- Search functionality to quickly find specific cards
- Receive a daily card draw with orientation (upright or reversed)
- Personal reflection feature to record your thoughts on the daily card
- View recent daily draws in a scrollable history
- Share daily draws with others
The app follows MVVM architecture with Clean Architecture principles, organized into three layers:
- Presentation Layer: UI components using Jetpack Compose
- Domain Layer: Business logic and use cases
- Data Layer: Data sources including Room database and Firebase
- Kotlin: Primary programming language
- Jetpack Compose: Modern UI toolkit
- Room: Local database for storing readings, decks, and cards
- Firebase: Cloud database for synchronization
- TensorFlow Lite: AI image recognition for physical spreads
- Dagger Hilt: Dependency injection
- Navigation Component: Screen navigation
The app includes comprehensive data models for:
- Tarot cards (with upright/reversed meanings and keywords)
- Tarot decks (with metadata and card collections)
- Spread positions (with custom meanings)
- Tarot spreads (collections of positions)
- Readings (complete reading sessions with interpretations)
- Daily draws (daily card selections with reflections)
- User preferences (customization settings)
The AI-powered image recognition system uses TensorFlow Lite to:
- Process images captured through the device camera
- Detect and identify Tarot cards in the image
- Map card positions according to the spread layout
- Generate interpretations based on the identified spread
- Foundation: Project setup, architecture implementation, database schema
- Digital Reading Experience: Deck/spread selection, card shuffling, reading generation
- Custom Spread Creation: Spread design canvas, position editing, saving functionality
- Reading History: Reading log database, browsing interface, filtering capabilities
- Tarot Dictionary: Card database, browsing interface, search functionality
- AI Image Recognition: Camera functionality, image processing, card detection
- Additional Features: Daily card draw, user preferences, sharing functionality
- Polishing: UI refinement, animations, accessibility features, performance optimization
The app includes unit tests for core functionality, particularly for the daily draw feature and user preferences system.
This project is licensed under the MIT License - see the LICENSE file for details.