Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thoroldvix/wotlk-economatic

EconOMatic is an API designed to give easy access to economy related data for WoW Classic WOTLK.
https://github.com/thoroldvix/wotlk-economatic

g2g java postgresql spring-boot wotlk-classic

Last synced: about 1 month ago
JSON representation

EconOMatic is an API designed to give easy access to economy related data for WoW Classic WOTLK.

Awesome Lists containing this project

README

        

# WOTLK EconOMatic
[![CI](https://github.com/Thoroldvix/WOTLK-EconOMatic/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/Thoroldvix/WOTLK-EconOMatic/actions/workflows/ci.yml)

EconOMatic is an API service designed to give easy access to economy related data for WoW Classic WOTLK.

## Table of contents

* [Project Description](#project-description)
* [Features](#features)
* [Installation](#installation)
* [Usage](#usage)
* [API Reference](#api-reference)
* [Configuration](#configuration)
* [Contributing](#contributing)
* [License](#license)

## Project Description

EconOMatic combines information about the game's economy into one easy-to-use API. It's great for players interested in
the market or for professional gold traders. The API can also be plugged into your own projects to build custom tools
and applications.
This API makes it easy for players to understand the game's economy, make smart trading decisions, and plan their gold
farming strategies. It gives all of this information in a simple and clear way, making it accessible for everyone.

## Features

EconOMatic API has a bunch of useful features. Let's take a look at some of them:

1. ### Server Information Retrieval
You can get a list of available servers for WoW Classic WOTLK, including their names, regions, and other important
details.

2. ### Item Information Retrieval
You can also get information about the items in the game, like their IDs, names, descriptions, and rarity.

3. ### Population Retrieval for Servers
Get population stats for each server, including the player count and faction distribution. This can help you choose
the
right server and get a sense of the game's demographics. Population information is provided
by [WarcraftTavern](https://www.warcrafttavern.com/population/wotlk).

4. ### Gold price Retrieval for Servers
Stay updated with the current gold prices for each server. This feature tells you when gold prices go up or down,
which can help you buy low and sell high or decide which server is better to sell gold on. Gold prices are
fetched from [G2G](https://www.g2g.com).

5. ### Auction House Information Retrieval
Get detailed auction house information for a specific server. See how much different items are selling for and how
much supply there is. This can help you spot good deals and stay ahead of the market. Auction House information is
provided
by [NexusHub](https://nexushub.co).

6. ### Server Recommendation Retrieval
Get recommendations on the best servers to farm on based on the items you're planning to farm. The recommendations
take into account population, item prices, and gold prices.

7. ### Item Deals Retrieval
This feature provides a list of the best deals for items on a specific server. It helps you identify items that you
can buy at a low price and sell at a higher price. The discount percentage is calculated based on the difference
between market value and minimum buyout price.

8. ### Data Filtering
You can customize and filter the data to get exactly the information you want. Look for specific types of items,
price ranges, server regions, and more.

9. ### Integration Flexibility
You can integrate the API into your own projects and applications. This allows you to take full advantage of all the
features and build custom tools that suit your needs.

## Installation

The EconOMatic application can be set up in multiple ways. Here are the two most common ways to run the service:

### Option 1: Local Postgres Database

Before you begin, ensure you have a running local PostgreSQL database, and JDK 17+ installed. Database could be running within a Docker container or
installed on your machine.
Next, set up the environment variables. Defaults are provided, but you can adjust according to your needs:

* `DB_URL` - Link to your database. Default: `jdbc:postgresql://localhost:5432/economatic`
* `DB_USERNAME` - Username for your database. Default: `postgres`
* `DB_PASS` - Password for your database. Default: `pass`
* `PORT` - Port to run application on. Default: `8080`

Navigate to the code directory and run:

```shell
DB_URL=your_value \
DB_USERNAME=your_value \
DB_PASS=your_value \
PORT=your_value \
./gradlew bootRun
```

Replace your_value with your values.

### Option 2: Docker Compose

Alternatively, utilize the Docker compose file provided. Before proceeding, please ensure that Docker is installed on your system.
In the code directory, use:

```shell
docker compose up -d
```

When you want to stop the application:

```shell
docker compose down
```

Docker helps in managing the application without the need for manual setup.

## Usage

Before you start, ensure the EconOMatic application is running on your machine.
You have two straightforward options to interact with the EconOMatic API:

1. **Using Postman**: This offers a user-friendly visual interface. A ready-to-use Postman collection is available,
which covers all the endpoints. This way, you can immediately start interacting and experimenting with the API after
setting it up. Follow these steps:
* Download the Postman collection using the following
link: [EconOMatic Postman Collection](https://1drv.ms/u/s!Atmv-T1c16R5jAExTVo_gup4qTpV?e=2ZJS4Y).
* Import this collection into your Postman application. If you're uncertain about this step, Postman provides a
comprehensive guide
available [here](https://learning.postman.com/docs/getting-started/importing-and-exporting-data/).
2. **Sending requests directly from your browser**: Another method is to send the requests directly from your browser.
Enter the URL with the specific endpoint you're interested in. For a complete list of available endpoints and their
usage, refer to the [API Reference](#api-reference) section.
Either way, you will find EconOMatic API a helpful tool in understanding WoW Classic WOTLK's economy, planning your
gold
farming strategies, and making smart trading decisions.

## Api Reference

Comprehensive documentation for each API endpoint is accessible through the Swagger UI, located
at http://localhost:8080/swagger-ui/index.html. If app is running on a port other than the default 8080, make
sure to update the URL accordingly.

Before attempting to access the Swagger UI, please ensure that the application is running as expected on your
machine.

## Configuration

Below are additional environmental variables that can be configured to adjust the application’s functionality:

* `GOLD_PRICE_DEFAULT_WEIGHT` Default weight for gold price recommendation calculations. Default: `1`
* `ITEM_PRICE_DEFAULT_WEIGHT` Default weight for item price recommendation calculations. Default: `1`
* `POPULATION_DEFAULT_WEIGHT`: Default weight for population recommendation calculations. Default: `0.1`
* `MIN_ALLOWED_POPULATION` Minimum allowed population when calculating recommendation scores for servers.
Default: `1000`
* `UPDATE_ON_STARTUP` Defines whether to update gold price, item price, and population data on startup. Useful to avoid
redundant fetching of data when the application is restarted frequently. Default: `true`
* `POPULATION_UPDATE_RATE`: Frequency to update population data in days. Default: `1`
* `ITEM_PRICE_UPDATE_RATE`: Frequency to update item price data in hours. Default `3`
* `GOLD_PRICE_UPDATE_RATE` Frequency to update gold price data in minutes. Default: `60`

When setting up the application, ensure these are considered and adjusted according to your use case. To keep the
defaults, no action is needed.

## Contributing

Submit a pull request