A Virtual Tabletop (VTT) project inspired by Foundry VTT, featuring a Dart backend and EJS frontend. Uses MySQL database with connection pooling for improved performance and stability (localhost, DB: PFVTT, user: PFVTT, password: PFVTT).
frontend/— EJS-based frontendbackend/— Dart backend
- Node.js (for frontend)
- Dart SDK (for backend)
- MySQL server
- Create the database and tables using the provided
PFVTT_schema.sqlfile. - Ensure MySQL is running on localhost with user
PFVTTand passwordPFVTT. - The backend uses MySQL connection pooling (max 10 connections) for optimal performance.
Open two terminals:
Terminal 1: Backend
cd backend
dart pub get
dart run bin/backend.dartTerminal 2: Frontend
cd frontend
npm install
npm startThe backend will handle API and DB logic, while the frontend serves the EJS pages and static assets.
- Login and registration: Secure login and registration forms with error handling, validation, and password reset request (mock, UI+API)
- Password reset: Request password reset from the login page, handled by
/api/reset_passwordendpoint (mock implementation) - Session state: Login state is stored in localStorage/sessionStorage on the frontend
- Campaign management: Create, list, and delete campaigns; each campaign can be associated with a game system and metadata (title, description, image)
- Game rules management: Admin interface to add, edit, and delete game rules (Pathfinder, Pathfinder 2, D&D 5.0, D&D 3.5 supported by default)
- Map page: Interactive map with layer system (Map, Walls, Tokens, GM, Audio, Props layers) and drag-and-drop asset placement
- Layer system: Roll20-style layer management with keyboard shortcuts (1-6) and visual controls
- Asset management: Upload and organize assets by category (tokens, backgrounds, audio, props) with drag-and-drop functionality
- Drag and drop: Drag assets from the asset panel directly onto map layers with automatic layer assignment based on asset type
- Actors, scenes, journals, permissions: Backend API ready for managing actors, scenes, journals, and campaign permissions (frontend integration planned)
- Import/export: Campaign data import/export (Foundry VTT compatible, planned)
- Responsive design: All main pages are mobile-friendly
- Extensible: Modular rule management and future support for real-time features, chat, and map drawing tools
See ROADMAP.md for planned features and progress.
MIT