Files
Dimension-47/README.md
Alexander Zielonka 090aae53d8 Initial commit: Dimension47 project setup
- 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>
2026-01-18 16:24:18 +01:00

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**