Skip to content

vBaustad/GearForge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GearForge

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.


Features

  • 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

Tech Stack

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

Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/vBaustad/GearForge.git
cd GearForge

# Install dependencies
npm install

# Set up Convex
npx convex dev

Environment Variables

Create .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/callback

In the Convex Dashboard → Environment Variables:

BLIZZARD_CLIENT_ID=your-client-id
BLIZZARD_CLIENT_SECRET=your-client-secret

Running Locally

# 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

Open http://localhost:3000


Scripts

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

Project Structure

├── 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

Database Schema

Core Tables

  • users - Battle.net authenticated users
  • sessions - Auth sessions with tokens
  • creations - Housing designs with metadata
  • decorItems - Cached Blizzard decor items

Features

  • likes - Design likes
  • saves - Saved/bookmarked designs
  • follows - User follows
  • reports - Content moderation
  • rateLimits - Rate limiting

API Endpoints

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

Deployment

Vercel (Recommended)

  1. Push to GitHub
  2. Import in Vercel
  3. Set environment variables
  4. Deploy

Manual

# Deploy Convex functions
npx convex deploy

# Build Next.js
npm run build

# Start production
npm run start

Before Launch Checklist

See TODO-LAUNCH.md for detailed checklist including:

  • Google Search Console verification
  • Blizzard production redirect URI
  • Convex environment variables
  • Test full OAuth flow

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing)
  5. Open a Pull Request

License

MIT


Support

About

World of Warcraft gear upgrade helper.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages