Implement complete inventory system with equipment database

Features:
- HP Control component with damage/heal/direct modes (mobile-optimized)
- Conditions system with PF2e condition database
- Equipment database with 5,482 items from PF2e (weapons, armor, equipment)
- AddItemModal with search, category filters, and pagination
- Bulk tracking with encumbered/overburdened status display
- Item management (add, remove, toggle equipped)

Backend:
- Equipment module with search/filter endpoints
- Prisma migration for equipment detail fields
- Equipment seed script importing from JSON data files
- Extended Equipment model (damage, hands, AC, etc.)

Frontend:
- New components: HpControl, AddConditionModal, AddItemModal
- Improved character sheet with tabbed interface
- API methods for equipment search and item management

Documentation:
- CLAUDE.md with project philosophy and architecture decisions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-19 01:55:01 +01:00
parent 94335ecd12
commit e60a8df4f0
26 changed files with 59218 additions and 315 deletions

View File

@@ -482,18 +482,41 @@ model Equipment {
id String @id @default(uuid())
name String @unique
traits String[]
itemCategory String
itemCategory String // "Weapons", "Armor", "Consumables", "Shields", etc.
itemSubcategory String?
bulk String?
bulk String? // "L" for light, "1", "2", etc.
url String?
summary String?
activation String?
hands String?
damage String?
range String?
weaponCategory String?
price Int? // In CP
level Int?
price Int? // In CP
// Weapon-specific fields
hands String?
damage String? // "1d8 S", "1d6 P", etc.
damageType String? // "S", "P", "B" (Slashing, Piercing, Bludgeoning)
range String?
reload String?
weaponCategory String? // "Simple", "Martial", "Advanced", "Ammunition"
weaponGroup String? // "Sword", "Axe", "Bow", etc.
// Armor-specific fields
ac Int?
dexCap Int?
checkPenalty Int?
speedPenalty Int?
strength Int? // Strength requirement
armorCategory String? // "Unarmored", "Light", "Medium", "Heavy"
armorGroup String? // "Leather", "Chain", "Plate", etc.
// Shield-specific fields
shieldHp Int?
shieldHardness Int?
shieldBt Int? // Broken Threshold
// Consumable/Equipment-specific fields
activation String? // "Cast A Spell", "[one-action]", etc.
duration String?
usage String?
characterItems CharacterItem[]
}