Share and discover World of Warcraft housing designs.
Browse community-created housing layouts, copy import strings with one click, and share your own creations with fellow WoW players.
Not affiliated with Blizzard Entertainment. World of Warcraft® is a registered trademark of Blizzard Entertainment, Inc.
- Browse Designs - Explore housing creations by category (bedroom, tavern, garden, library, etc.)
- One-Click Import - Copy import strings instantly to use in-game
- Upload & Share - Share your housing designs with screenshots and import strings
- Items Database - Browse 2000+ housing decor items with Wowhead integration
- User Profiles - Follow creators, save favorites, track your uploads
- Blizzard Login - Secure authentication via Battle.net OAuth
| Layer | Technology |
|---|---|
| Frontend | Next.js 15 (App Router), React 19, TypeScript |
| Styling | Tailwind CSS 4, CSS Modules |
| Backend | Convex (serverless database + functions) |
| Auth | Blizzard OAuth 2.0 |
| Hosting | Vercel |
- Node.js 18+
- npm or pnpm
- Convex account (free)
- Blizzard Developer account
# Clone the repository
git clone https://github.com/vBaustad/GearForge.git
cd GearForge
# Install dependencies
npm install
# Set up Convex
npx convex devCreate .env.local:
# Convex (auto-generated by npx convex dev)
CONVEX_DEPLOYMENT=your-deployment
NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud
# Blizzard OAuth
NEXT_PUBLIC_BLIZZARD_CLIENT_ID=your-client-id
NEXT_PUBLIC_BLIZZARD_REDIRECT_URI=http://localhost:3000/auth/callbackIn the Convex Dashboard → Environment Variables:
BLIZZARD_CLIENT_ID=your-client-id
BLIZZARD_CLIENT_SECRET=your-client-secret
# Start both Next.js and Convex dev servers
npm run dev
# Or run separately:
npm run dev:frontend # Next.js on :3000
npm run dev:backend # Convex dev server| Command | Description |
|---|---|
npm run dev |
Start development servers |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npm test |
Run tests |
npm run test:watch |
Run tests in watch mode |
├── app/ # Next.js App Router pages
│ ├── (info)/ # Info pages (about, faq, help)
│ ├── (legal)/ # Legal pages (privacy, terms)
│ ├── admin/ # Admin panel
│ ├── auth/ # OAuth callback
│ ├── browse/ # Design gallery
│ ├── decor/ # Items database
│ ├── design/[id]/ # Design detail + edit
│ ├── settings/ # User settings
│ ├── upload/ # Upload new design
│ └── user/[id]/ # User profiles
├── convex/ # Convex backend
│ ├── schema.ts # Database schema
│ ├── auth.ts # Authentication
│ ├── creations.ts # Design CRUD
│ ├── gameData.ts # Blizzard API sync
│ └── ... # Other functions
├── src/
│ ├── components/ # React components
│ ├── lib/ # Utilities (auth, etc.)
│ └── types/ # TypeScript types
└── tests/ # Vitest tests
- users - Battle.net authenticated users
- sessions - Auth sessions with tokens
- creations - Housing designs with metadata
- decorItems - Cached Blizzard decor items
- likes - Design likes
- saves - Saved/bookmarked designs
- follows - User follows
- reports - Content moderation
- rateLimits - Rate limiting
All backend functions are in /convex/. Key endpoints:
| Function | Description |
|---|---|
creations.list |
Get designs with filters |
creations.getById |
Get single design |
creations.create |
Upload new design |
gameData.syncFromEnv |
Sync items from Blizzard |
auth.loginWithBlizzard |
OAuth callback handler |
- Push to GitHub
- Import in Vercel
- Set environment variables
- Deploy
# Deploy Convex functions
npx convex deploy
# Build Next.js
npm run build
# Start production
npm run startSee TODO-LAUNCH.md for detailed checklist including:
- Google Search Console verification
- Blizzard production redirect URI
- Convex environment variables
- Test full OAuth flow
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open a Pull Request
MIT