
A life counter and game utility app for Magic: The Gathering's Commander (EDH) format, built with React Native.
Rhystic Buddy is an app designed to be a simple, but feature-rich companion for your Commander games. It features life tracking and offers a suite of tools to manage board states and streamline gameplay, all wrapped in a clean, gesture-driven interface.
- Multi-Player Life Tracking: Supports games from 2 to 6 players, with clear, easily adjustable life totals.
- Commander Damage: Dedicated interface to track commander damage dealt by each player to their opponents.
- Turn Order Randomizer: Quickly determine who goes first with a single tap.
- In-App Rulings: Integrated Scryfall search to look up card rulings without leaving the app.
- Customizable Backgrounds: Personalize your player panel by searching for and setting your favorite Magic card art as a background.
- Counter Tracking: Easily manage counters like poison, energy, and floating mana.
- Intuitive Gestures: A smooth, carousel-based UI for navigating between different utility views.
- Framework: React Native
- Language: TypeScript
- State Management: Zustand & TanStack Query
- Animation & Gestures: React Native Reanimated & React Native Gesture Handler
- UI: React Native SVG for custom components & Lucide for icons.
The project uses a feature-sliced architecture to keep the codebase modular, scalable, and easy to navigate.
src/
├── consts/ # Application-wide constants (colors, layout values)
├── features/ # Self-contained feature modules
│ ├── central-menu/
│ ├── commander-damage/
│ ├── counters-menu/
│ └── player-panel/
├── helpers/ # Utility functions (e.g., API helpers)
├── hooks/ # Shared custom React Hooks
├── lib/ # Core libraries and managers (e.g., queryClient)
├── styles/ # Global styles and design tokens
└── types/ # Shared TypeScript type definitions
- Node.js (>=18)
- Yarn (v1.x)
- Watchman (macOS)
- Ruby & Bundler (iOS)
- JDK (Android)
- React Native Environment Setup completed for your OS.
-
Clone the repository:
git clone [email protected]:BrodyHughes/Rhystic_Buddy.git cd Rhystic_Buddy
-
Install all dependencies: This command handles Yarn packages, Ruby gems, and CocoaPods in one go.
yarn install-all
-
Start the Metro server:
yarn start
-
Run on a simulator or device: Keep the Metro server running in a separate terminal.
- For iOS:
yarn ios
- For Android (still in development):
yarn android
- For iOS:
Command | Description |
---|---|
yarn start |
Starts the Metro bundler. |
yarn ios |
Builds and runs the app on the iOS Simulator. |
yarn android |
Builds and runs the app on an Android emulator or device. |
yarn install-all |
Installs all JS, Ruby, and CocoaPods dependencies. |
yarn lint |
Lints the codebase with ESLint. |
yarn lint:fix |
Lints and automatically fixes issues. |
yarn typecheck |
Runs the TypeScript compiler to check for type errors. |
yarn format |
Formats code with Prettier. |
yarn clean |
Removes all generated files and caches. |
Contributions are welcome! Whether it's a bug report, a new feature, or a suggestion, please feel free to open an issue or submit a pull request.
- Fork the repository and create your feature branch:
git checkout -b <your-username>/<short-description>
- Make your changes.
- Ensure your code passes local checks before pushing:
yarn lint:fix && yarn typecheck
- Push your branch and open a Pull Request against the
main
branch.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
- Icons by Lucide
- Card data and images via the Scryfall API
Rhystic Buddy is unofficial Fan Content permitted under the Wizards of the Coast Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.
This application uses data from the Scryfall API, but is not produced by, endorsed by, supported by, or affiliated with Scryfall.