A custom character creator for DND 5.5 with homebrew options.
- TypeScript 95.6%
- Python 3.8%
- CSS 0.2%
- JavaScript 0.2%
- Dockerfile 0.1%
- Fix calculateProficiencies to include saving_throws from D&D API class data - Add fallback using CLASS_SAVING_THROWS when API data doesn't include saving_throws - Map D&D API abbreviated ability names (DEX, INT) to full names (Dexterity, Intelligence) - Add inferAlignment(), inferName(), inferSavingThrows() inference functions - Add alignment fallback to True Neutral when can't be inferred - Add savingThrows field to CharacterPromptParse and overview page - Display saving throw proficiencies on overview and confirm pages in AI wizard - Pass savingThrows through from parsed result to editable params - Remove useAiEnabled gate from CharacterAIGenerator - Render AI wizard as modal overlay in CharacterGenerator - Add 16 new tests for inference functions |
||
|---|---|---|
| backend | ||
| docs | ||
| frontend | ||
| mcp-server | ||
| shared | ||
| .dockerignore | ||
| .gitignore | ||
| deploy.sh | ||
| docker-compose-test.yml | ||
| docker-compose.yml | ||
| docker-nginx.conf | ||
| docker-supervisord.conf | ||
| Dockerfile | ||
| kill-services.sh | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| security.md | ||
| start-backend.sh | ||
D&D 5.5 Character Generator
A comprehensive D&D 5.5 character generator with homebrew content support.
Built with React, TypeScript, Express, and Vite as an npm workspaces monorepo.
Architecture
dnd-character-generator/
├── backend/ # Express API server (port 3001)
├── frontend/ # Vite + React SPA (port 3000)
├── shared/ # Shared TypeScript types, constants, utils
├── docker-compose.yml
├── Dockerfile # Single container: nginx (frontend) + supervisord (backend)
├── docker-nginx.conf
└── docker-supervisord.conf
- Production: Single Docker container. Nginx serves the built frontend; supervisord manages Nginx + the Express backend.
- Development:
npm run devstarts both backend (ts-node-dev) and frontend (Vite dev server) concurrently. Vite proxies/apitolocalhost:3001.
Quick Start
npm install # installs all workspaces (backend, frontend, shared)
npm run dev # starts backend + frontend concurrently
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
Testing
# Backend (Jest)
cd backend && npm test
# Frontend (Vitest)
cd frontend && npm test
Deployment
docker compose up -d --build
Environment is configured via docker-supervisord.conf (production) or backend/.env (development).
Find your default login with Owner permissions with this command: sudo docker compose exec dndgen-test cat /var/log/backend.log | grep -A4 "DEFAULT OWNER ACCOUNT"
!! This will appear only once so save it !!
API
All routes are under /api. See backend/src/routes/ for the full route tree. Key groups:
/api/dnd/*— Proxy to D&D 5.5 API/api/homebrew/*— Custom homebrew CRUD/api/characters/*— Character management/api/combined/*— Merged official + homebrew data/api/parties/*//api/party/inventory/*— Party management/api/settings— App settings/api/auth/*— Login, register, OAuth/api/users/*//api/roles/*— User and role administration