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>
This commit is contained in:
154
README.md
Normal file
154
README.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 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**
|
||||
Reference in New Issue
Block a user