Recusant is a React single-page application that allows players to build their own strategic team of Elden Ring bosses under a specific rune budget. Players can browse available legendary bosses, analyze their lore and gameplay mechanics, and curate a custom roster of up to four bosses while managing their budget.
This is a React single-page app for building a team of Elden Ring bosses under a rune budget. Bosses are loaded from a JSON dataset containing lore and gameplay attributes plus a price value. The UI explicitly frames two modes: "Available Bosses" versus "Selected Bosses".
- Frontend: React + ReactDOM
- Bundler & Dev Server: Vite
- Styling: Tailwind CSS v4 + DaisyUI plugin
- Notifications & Modals: react-toastify and sweetalert2
- Linting: ESLint flat config with React Hooks + React Refresh rules
- Entry Point: Mounts
<App />in strict mode. - State Management & Coordination:
App.jsxacts as the primary state owner and coordinator, tracking:- UI mode toggle
- Player budget initialized to 11,000,000 runes
- Selected roster list
- Data Fetching: Data is fetched once at module scope as a promise and consumed via React's
use()hook combined withSuspenseinside theAvailablecomponent.
Displays the application branding, logo, and the player's dynamically formatted rune balance.
Resolves the asynchronous boss dataset and renders individual cards for each boss.
Displays granular boss details and handles the selection logic when adding a boss to the roster.
Renders cards representing the currently selected roster and exposes actions to remove a boss from the team.
- Selection Cost: Choosing a boss subtracts their specific price from the player's overall rune balance.
- Insufficient Funds Guard: If a player cannot afford a boss, an alert modal is shown and the selection is aborted.
- Team Size Cap: Teams are strictly capped at a maximum of 4 bosses. Attempting to add more triggers a toast message and blocks the action.
- Selection UI State: The selection button within a card instance automatically disables immediately after being selected.
- Removal: A removal function filters the selected list by ID to delete a boss from the team, freeing up their price back into the active balance.
Each boss item in the dataset contains the following attributes:
- Identity & Visual:
id,name,image - Metadata:
place,role - Mechanics:
rating,immunity,weakness - Economy:
price
- App Shell & Config:
index.html,package.json,vite.config.js,eslint.config.js - Runtime Data & Assets:
public/bosses.json,public/favicon.svg,public/icons.svg - Source Code:
src/main.jsx,src/App.jsx, component folders undersrc/Components/*, layout styles insrc/index.cssandsrc/App.css - Media Assets: Images and assets under
src/assets/*.pngused dynamically by UI components for background decorations and icons.
- Clone the repository:
git clone [https://github.com/your-username/Recusant.git](https://github.com/your-username/Recusant.git) cd Recusant# Recusant - Elden Ring Boss Team Builder