A Go TUI utility for D&D 5e and other tabletop RPGs. Browse SRD content, create homebrew entries, generate encounters and loot.
Loads up a sqlite db from the SRD json public stuff embedded, lets you browse and search across spells, monsters, equipment, magic items.
Features:
- Browse and search across all entity types (Spells, Monsters, Equipment, Magic Items)
- Switch between categories with ctrl+t/n (next) or ctrl+p (previous)
- Real-time detail view that updates as you navigate
- Search filters results and auto-selects first match
- Tab navigation between search, list, and detail panes with tab/shift+tab
- Create new homebrew entries from scratch
- Clone existing items as templates for homebrew variants
- Form-based editing with validation
.
├── cmd
│ └── ttlooter
│ └── main.go
├── go.mod
├── go.sum
├── initial_data
│ ├── 5e-SRD-Equipment.json
│ ├── 5e-SRD-Magic-Items.json
│ ├── 5e-SRD-Monsters.json
│ ├── 5e-SRD-Spells.json
│ └── embed.go
├── internal
│ ├── components
│ │ ├── detail_formatter.go
│ │ ├── detail_view.go
│ │ ├── form_view.go
│ │ └── listitem.go
│ ├── data
│ │ ├── entity_test.go
│ │ ├── entity.go
│ │ ├── equipment.go
│ │ ├── homebrew.go
│ │ ├── interface.go
│ │ ├── loader.go
│ │ ├── magic_items.go
│ │ ├── messages.go
│ │ ├── monsters.go
│ │ └── spells.go
│ ├── screens
│ │ ├── browse.go
│ │ ├── equipment.go
│ │ ├── homebrew_edit.go
│ │ ├── magic_items.go
│ │ ├── monsters.go
│ │ ├── screen.go
│ │ └── spells.go
│ ├── shared
│ │ └── styles.go
│ └── ui
│ ├── loader.go
│ ├── model.go
│ └── tabs.go
├── LICENSE
├── migrations
│ ├── 001_create_initial_tables.down.sql
│ ├── 001_create_initial_tables.up.sql
│ ├── 002_add_homebrew_support.down.sql
│ ├── 002_add_homebrew_support.up.sql
│ └── embed.go
├── README.md
- Homebrew Creation (v0.2)
- Create/edit custom spells
- Create/edit custom monsters
- Create/edit custom magic items
- Create/edit custom equipment
- Persist homebrew to database
- Homebrew edit screen fires and initializes
- Form fields are editable and properly sized - This is extremely broken, but the basics are in place I think
- Mark homebrew vs SRD in UI
- Refresh browse list after save
- Improve form layout and UX
- Generate random things in each category
- Generate loot tables based on params
- Generate encounter baddies based on params
- Save favourite generations
- Share homebrew content
- Added
is_homebrew,created_at,updated_atfields to all entity tables - Updated Spell, Monster, Equipment, MagicItem structs with homebrew tracking
- Created
HomebrewServicefor CRUD operations on homebrew entries
- Extended
DetailFieldwithInputTypefor dual display/form rendering - Created
FormViewcomponent for editable forms with field navigation - Added
GetFormFields()method to all entity types for form-specific field definitions
- Built
HomebrewEditScreenfor creating and editing homebrew entries - Added "Create New" and "Create From Selected" options to browse screens
- Implemented entity cloning for template-based creation
- Form validation for required fields (ID, Name)
- Keyboard shortcuts: ctrl+s (save), esc (cancel), tab (next field)
- Wired homebrew edit screens into main model
- Screen switching: browse → edit → back to browse on save/cancel
- Callbacks from browse screens trigger edit screen creation
- Form editing limited to core fields (no relations/nested types)
- Browse list doesn't auto-refresh after save
- No visual distinction between homebrew and SRD entries in list
- No multi-select or bulk operations