https://github.com/alex-rosta/armory
Web application written in Go for checking your World of Warcraft character, using Blizzard API
https://github.com/alex-rosta/armory
blizzard-api blizzard-games blizzard-oauth go golang world-of-warcraft
Last synced: 25 days ago
JSON representation
Web application written in Go for checking your World of Warcraft character, using Blizzard API
- Host: GitHub
- URL: https://github.com/alex-rosta/armory
- Owner: alex-rosta
- Created: 2025-01-14T08:31:13.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-29T19:28:48.000Z (about 1 year ago)
- Last Synced: 2025-03-29T19:32:19.229Z (about 1 year ago)
- Topics: blizzard-api, blizzard-games, blizzard-oauth, go, golang, world-of-warcraft
- Language: CSS
- Homepage: https://armory.rosta.dev
- Size: 1.08 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WoW Armory
Deployed on https://fly.io
## https://wow.rosta.dev
A web application that allows users to look up World of Warcraft character and guild information using the Blizzard and Warcraftlogs API.
https://armory.rosta.dev
## Helmchart
https://github.com/alex-rosta/armory-helm
## Features
- Character lookup by region, realm, and name
- Display of character information including level, item level, achievement points, etc.
- Display of character images
- Guild lookup by region, realm, and name
- Display Guild information such as realm, region and world ranking.
- Display the WoW token price in gold for US and EU regions.
- Display recent raiders in the guild using the warcraftlogs GraphQL API.
- Global recent searches tracking with Redis (last 24 hours)
- Azure Cache for Redis (Tested, probably works on AWS or GCP aswell)
## Prerequisites
- Go 1.18 or higher
- Blizzard API credentials (Client ID and Client Secret)
- Redis server (for recent searches feature)
## Configuration
Create a `.env` file in the root directory with the following content:
```
# Blizzard API credentials
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
# Warcraft Logs API token
WARCRAFTLOGS_API_TOKEN=your_warcraftlogs_api_token
# Get it here: https://www.warcraftlogs.com/api/docs the access token is valid for a year.
# App is exposed on this port
PORT=3000
# Redis configuration
REDIS_ADDR=localhost:6379
REDIS_PASSWORD=
REDIS_DB=0
# Uncomment this if using Redis on Cloud Providers
#REDIS_CLOUD=true
```
## Running the Application
```bash
# Redis locally
docker pull redis:latest && docker run -p 6379:6379 redis
# Run directly
go run main.go
# Build and run
go build
./wowarmory
# Using Docker
docker build -t wowarmory .
docker run -p 3000:3000 --env-file .env wowarmory #pass local .env file
# Using Docker Compose (includes Redis)
docker-compose up -d --build
```
The application will be available at http://localhost:3000
## Testing
### Integration Tests
The project includes integration tests for the Blizzard API, Warcraftlogs API and Redis components. These tests verify that the application correctly integrates with external services.
To run the integration tests use:
```bash
make test
```
## Project Structure
```
wowarmory/
├── assets/ # Static assets
│ ├── css/ # CSS files
│ └── media/ # Images and other media
├── cmd/ # Application entry points
│ └── server/ # Server entry point
│ └── main.go # Main application file
├── internal/ # Private application code
│ ├── api/ # API client for Blizzard API
│ ├── config/ # Configuration management
│ ├── handlers/ # HTTP handlers
│ ├── middleware/ # HTTP middleware
│ ├── models/ # Data models
│ ├── redis/ # Redis client and logic
│ ├── router/ # HTTP router
│ └── templates/ # HTML templates
├── tests/ # Test files
│ ├── integration/ # Integration tests
├── .dockerignore # Docker ignore file
├── .env # Environment variables (not in version control)
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── Dockerfile # Docker build file
├── go.mod # Go module file
├── go.sum # Go module checksum file
├── Makefile # Makefile for common tasks
└── README.md # Project documentation
```