https://github.com/azurespheredev/werewolf
Offline, LAN-based multiplayer "Werewolf" game created using Electron
https://github.com/azurespheredev/werewolf
electron eslint react webpack
Last synced: 3 months ago
JSON representation
Offline, LAN-based multiplayer "Werewolf" game created using Electron
- Host: GitHub
- URL: https://github.com/azurespheredev/werewolf
- Owner: azurespheredev
- License: mit
- Created: 2025-06-23T13:04:20.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-23T16:51:40.000Z (about 1 year ago)
- Last Synced: 2025-06-23T16:59:20.371Z (about 1 year ago)
- Topics: electron, eslint, react, webpack
- Language: TypeScript
- Homepage:
- Size: 698 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Werewolf Game - Next.js Web Application
Migrated from Electron desktop app to Next.js web application.
## What Was Changed
### ✅ Completed Migrations
1. **Removed Welcome Page** - The app now starts directly at the home page (`/`)
2. **Removed Quit Button** - No longer needed for web application
3. **Updated Home Page** - Displays only "Create Room" and "Join Room" buttons
4. **Migrated All Core Infrastructure**:
- Prisma database schema
- Redux store and state management
- API and Socket services
- All shared UI components
- Game styling and animations
### 📝 Remaining Work
To complete the migration, you need to create these page files by copying from the Electron project:
```bash
# Create these files in werewolf/app/
app/create-room/page.tsx # From Electron/src/renderer/pages/CreateRoomPage.tsx
app/join-room/page.tsx # From Electron/src/renderer/pages/JoinRoomPage.tsx
app/waiting-room/page.tsx # From Electron/src/renderer/pages/WaitingRoomPage.tsx
app/game/page.tsx # From Electron/src/renderer/pages/GamePage.tsx
```
**Important**: When copying, make sure to:
- Add `'use client';` at the top of each file
- Change `import { useNavigate } from 'react-router-dom'` to `import { useRouter } from 'next/navigation'`
- Change `navigate(RouteEnum.X)` to `router.push(RouteEnum.X)`
- Remove any `window.electron` references
## Installation
```bash
cd werewolf
npm install
```
## Database Setup
```bash
# Generate Prisma client
npm run db:generate
# Run migrations
npm run db:migrate
# (Optional) Open Prisma Studio
npm run db:studio
```
## Environment Variables
Create `.env.local`:
```
DATABASE_URL="postgresql://user:password@localhost:5432/werewolf"
```
## Assets
Copy these directories from `Electron/public/` to `werewolf/public/`:
- `images/` (all subdirectories)
- `sounds/` (optional)
## Development
```bash
npm run dev
```
Visit `http://localhost:3000`
## Key Differences from Electron Version
| Electron | Next.js |
| ------------------------------ | ----------------------- |
| Welcome page with server input | Starts at home page |
| Quit button in UI | Users close browser tab |
| `window.electron.ipcRenderer` | Regular HTTP/WebSocket |
| Desktop only | Works on all devices |
| Routes start at `/welcome` | Routes start at `/` |
## Next Steps
1. Install dependencies: `npm install`
2. Copy remaining page files as listed above
3. Copy public assets (images)
4. Setup database
5. Test the application
See `MIGRATION_GUIDE.md` for complete details.