- Remove OCR noise, credits, and duplicates from rules-database.json (288→255 rules) - Add clean_rules.py script for rule cleanup - Add CLAUDE.md, docs/, and update README with documentation links Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
122 lines
5.2 KiB
Markdown
122 lines
5.2 KiB
Markdown
# Project Structure
|
|
|
|
## Directory Layout
|
|
|
|
```
|
|
dwroller/
|
|
├── backend/ # Backend API server
|
|
│ ├── src/
|
|
│ │ ├── routes/ # API route handlers
|
|
│ │ ├── controllers/ # Route controllers
|
|
│ │ ├── middleware/ # Auth, validation middleware
|
|
│ │ ├── models/ # Data models
|
|
│ │ └── utils/ # Helper functions
|
|
│ ├── server.js # Express server entry point
|
|
│ └── package.json
|
|
│
|
|
├── frontend/ # React frontend application
|
|
│ ├── src/
|
|
│ │ ├── components/ # React components
|
|
│ │ ├── pages/ # Route pages
|
|
│ │ ├── hooks/ # Custom React hooks
|
|
│ │ └── store/ # State management
|
|
│ ├── public/ # Static assets
|
|
│ ├── package.json
|
|
│ └── vite.config.js
|
|
│
|
|
├── data/ # Static data files
|
|
│ ├── gamemasters_kit/ # GM tools
|
|
│ ├── ocr_rules_*.txt # OCR extracted rules
|
|
│ ├── rules_page.png # Rules images
|
|
│ └── dwback.png # Background images
|
|
│
|
|
├── database/ # Database files
|
|
│ ├── backups/ # Database backups
|
|
│ ├── MIGRATION_*.md # Migration documentation
|
|
│ └── alexei-*.json # Canonical data
|
|
│
|
|
├── docs/ # This documentation
|
|
│ ├── SUMMARY.md # Table of contents
|
|
│ ├── api.md # API documentation
|
|
│ ├── developer-guide.md
|
|
│ ├── user-guide.md
|
|
│ └── ...
|
|
│
|
|
├── .env.example # Environment template
|
|
├── package.json # Root package.json
|
|
└── README.md # Project overview
|
|
```
|
|
|
|
## Feature Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ Deathwatch Roller │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Frontend │───▶│ API │───▶│ Database │ │
|
|
│ │ (React) │ │ (Express) │ │ (SQLite) │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
│ │ │ │ │
|
|
│ ▼ ▼ ▼ │
|
|
│ - Shop - Auth - Players │
|
|
│ - Bestiary - Sessions - Inventory │
|
|
│ - Rules - Files - Webhooks │
|
|
│ - Sessions - Validation - Backups │
|
|
└─────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
User Request
|
|
│
|
|
▼
|
|
┌───────────┐
|
|
│ Frontend │
|
|
│ (React) │
|
|
└───────────┘
|
|
│
|
|
├──────────────┬──────────────┐
|
|
▼ ▼ ▼
|
|
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
│ Shop │ │ Bestiary│ │ Sessions│
|
|
│ API │ │ API │ │ API │
|
|
└─────────┘ └─────────┘ └─────────┘
|
|
│ │ │
|
|
└──────────────┴──────────────┘
|
|
│
|
|
▼
|
|
┌───────────┐
|
|
│ Backend │
|
|
│ (Express) │
|
|
└───────────┘
|
|
│
|
|
▼
|
|
┌───────────┐
|
|
│ Database │
|
|
│ (SQLite) │
|
|
└───────────┘
|
|
```
|
|
|
|
## File Organization by Feature
|
|
|
|
### Shop/Inventory
|
|
- `backend/src/routes/shop/` - Shop API routes
|
|
- `backend/src/models/Item/` - Item model
|
|
- `backend/src/controllers/shop/` - Shop controller
|
|
- `frontend/src/components/Shop/` - Shop UI components
|
|
|
|
### Bestiary
|
|
- `backend/src/routes/bestiary/` - Bestiary routes
|
|
- `backend/src/models/Creature/` - Creature model
|
|
- `backend/src/controllers/bestiary/` - Bestiary controller
|
|
- `frontend/src/components/Bestiary/` - Bestiary UI
|
|
|
|
### Players
|
|
- `backend/src/routes/players/` - Player routes
|
|
- `backend/src/models/Player/` - Player model
|
|
- `backend/src/controllers/players/` - Player controller
|
|
- `frontend/src/components/Players/` - Player UI (GM only)
|