- NestJS backend with JWT auth, Prisma ORM, Swagger docs - Vite + React 19 frontend with TypeScript - Tailwind CSS v4 with custom dark theme design system - Auth module: Login, Register, Protected routes - Campaigns module: CRUD, Member management - Full Prisma schema for PF2e campaign management - Docker Compose for PostgreSQL Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
155 lines
3.8 KiB
Markdown
155 lines
3.8 KiB
Markdown
# Dimension47
|
|
|
|
TTRPG Campaign Management Platform for Pathfinder 2e.
|
|
|
|
## Tech Stack
|
|
|
|
### Frontend
|
|
- **Vite** - Build tool
|
|
- **React 19 + TypeScript** - UI Framework
|
|
- **Tailwind CSS v4** - Styling
|
|
- **TanStack Query** - Server state management
|
|
- **Zustand** - Client state management
|
|
- **React Router** - Routing
|
|
- **Framer Motion** - Animations
|
|
- **Lucide Icons** - Icon library
|
|
|
|
### Backend
|
|
- **NestJS** - API Framework
|
|
- **Prisma ORM** - Database access
|
|
- **PostgreSQL** - Database
|
|
- **JWT** - Authentication
|
|
- **Swagger** - API Documentation
|
|
- **Socket.io** - WebSocket for real-time features
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
- Node.js 20+
|
|
- PostgreSQL 16+ (or Docker)
|
|
- npm
|
|
|
|
### 1. Start Database
|
|
|
|
Using Docker:
|
|
```bash
|
|
docker-compose up -d postgres
|
|
```
|
|
|
|
Or install PostgreSQL locally and create a database named `dimension47`.
|
|
|
|
### 2. Setup Backend
|
|
|
|
```bash
|
|
cd server
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Configure environment
|
|
cp .env.example .env
|
|
# Edit .env with your database credentials
|
|
|
|
# Generate Prisma client
|
|
npx prisma generate
|
|
|
|
# Run migrations
|
|
npx prisma db push
|
|
|
|
# Start development server
|
|
npm run start:dev
|
|
```
|
|
|
|
The API will be available at `http://localhost:5000`
|
|
API Documentation at `http://localhost:5000/api/docs`
|
|
|
|
### 3. Setup Frontend
|
|
|
|
```bash
|
|
cd client
|
|
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Start development server
|
|
npm run dev
|
|
```
|
|
|
|
The frontend will be available at `http://localhost:5173`
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
dimension47/
|
|
├── client/ # Frontend (Vite + React)
|
|
│ ├── src/
|
|
│ │ ├── app/ # App-wide config
|
|
│ │ ├── features/ # Feature modules
|
|
│ │ │ ├── auth/ # Authentication
|
|
│ │ │ ├── campaigns/ # Campaign management
|
|
│ │ │ ├── characters/ # Character management
|
|
│ │ │ ├── battle/ # Battle screen
|
|
│ │ │ └── documents/ # Document viewer
|
|
│ │ └── shared/ # Shared components & utils
|
|
│ │ ├── components/ui/ # UI Components
|
|
│ │ ├── hooks/ # Custom hooks
|
|
│ │ ├── lib/ # Utilities
|
|
│ │ └── types/ # TypeScript types
|
|
│ └── package.json
|
|
│
|
|
├── server/ # Backend (NestJS)
|
|
│ ├── src/
|
|
│ │ ├── modules/ # Feature modules
|
|
│ │ │ ├── auth/ # Authentication
|
|
│ │ │ ├── campaigns/ # Campaigns API
|
|
│ │ │ ├── characters/ # Characters API
|
|
│ │ │ ├── battle/ # Battle WebSocket
|
|
│ │ │ └── documents/ # Documents API
|
|
│ │ ├── prisma/ # Prisma service
|
|
│ │ └── common/ # Shared decorators, guards
|
|
│ ├── prisma/
|
|
│ │ └── schema.prisma # Database schema
|
|
│ └── package.json
|
|
│
|
|
├── docker-compose.yml # Docker services
|
|
└── README.md
|
|
```
|
|
|
|
## Features
|
|
|
|
### Implemented
|
|
- [x] User authentication (JWT)
|
|
- [x] User registration
|
|
- [x] Campaign management (CRUD)
|
|
- [x] Campaign member management
|
|
- [x] Dark mode design system
|
|
- [x] Responsive UI
|
|
|
|
### Planned
|
|
- [ ] Character management
|
|
- [ ] Pathbuilder 2e import
|
|
- [ ] Battle screen with WebSocket
|
|
- [ ] Document viewer with highlights
|
|
- [ ] Mobile app (Flutter)
|
|
|
|
## Design System
|
|
|
|
The design uses a dark theme with Dimension47's signature magenta as the primary color:
|
|
|
|
- **Primary**: `#c26dbc` (Magenta)
|
|
- **Secondary**: `#542e52` (Dark Purple)
|
|
- **Background**: `#0f0f12` (Near Black)
|
|
- **Text**: `#f5f5f7` (White)
|
|
|
|
## API Documentation
|
|
|
|
When the backend is running, visit `http://localhost:5000/api/docs` for the Swagger documentation.
|
|
|
|
## License
|
|
|
|
Private project - All rights reserved.
|
|
|
|
---
|
|
|
|
**Powered by Zeasy Software**
|