NickReinlein / GilGoblin

For the game Final Fantasy XIV, this app calculates the most profitable items to craft based on market prices, vendor prices and crafting component costs. It also provides a front-end to display the results

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GilGoblin

Summary

GilGoblin is a end-to-end application which calculates in-game crafting profitability in Final Fantasy XIV (FFXIV).

It calculates the most profitable items to craft based on current market prices, vendor prices and crafting component costs. It stores recent prices in a local PostgreSQL database. The prices are refreshed by a background service.

A webpage front-end is available with the resulting calculations. Filters are available per world, allowing users to see the most profitable items specific to their server.

Complete

  • ✔️ Getting the vendor cost, if available via vendor
  • ✔️ Getting the recipe to craft if the item can be crafted
  • ✔️ Calculating the cost to craft from the components, based on the recipe in the previous step
  • ✔️ The minimum price of the vendor or the crafting cost or the market board is used to calculate a minimum cost
  • ✔️ The profitability per item is calculated based on the difference of current market prices and the estimated minimum cost
  • ✔️ A crafting calculator that breaks down recipes to ingredients
  • ✔️ Calculate most profitable recipes to craft for a given FFXIV server/world
  • ✔️ A new service to pre-calculate costs and profits
  • ✔️ A website to search items, recipes, prices, and the craft summary 💰
  • ✔️ Add to website a table to display the most profitable recipes to craft for each world 📈
  • ✔️ Enhance most profitable recipes table to be sortable 💲
  • ✔️ Add arrows to profit table column headers to indicate sorting status (ascending, descending, none) ⬇️
  • ✔️ Create a Docker image of the front-end 🐋
  • ✔️ Fix existing high-priority bugs 🐛
  • ✔️ Add support for multiple worlds 🌐
  • ✔️ Add about project page ℹ️
  • ✔️ Add Gilgoblin favicon and title to header 📖
  • ✔️ Add performance tests for high-traffic bottlenecks (top-crafts) 🚥
  • ✔️ Improve performance for top-crafts endpoint ⏩

Work-in-progress

  • 🐣 Fix breaking change in external API dependency 🔧📡
  • 🐣 Make everything prettier

Upcoming

  • 🥚 Launch and test website 🚀
  • 🥚 (Expected) Live release bug fixes 🐛

Nice-to-have

  • ❓ Top things to gather 🌳🪓 🪨⛏️
  • ❓ A link/recipe details for each profit result's items, ingredients, prices, etc. in the profit table row 🕵️
  • ❓ A hover or clickable option to see the profit's ingredients & cost info ☁️
  • ❓ Advanced filtering: Enter class levels to filter available recipes 🧰
  • ❓ A website displaying the top crafts for each profession 🛠️

Not currently on the product roadmap

  • ✖️ Filter for HQ/NQ
  • ✖️ Any interactions with the market board or in-game

Technologies

  • The back-end REST API is written in C# (.NET 8)
  • The back-end tests use NUnit and NSubstitute
  • The front-end uses React, written in Typescript
  • The front-end tests use Jest
  • There are 5 Docker images (listed below) specific to GilGoblin
  • K6 benchmarks can be optionally run.
    • Results are fed to Prometheus.
    • Test results are displayed in a Grafana dashboard

Startup

From the root folder of the project, run docker-compose up -d to build the images. The database will load, and if necessary run the scripts to populate the tables. The front end is available by default over port 3000. The other services will run in the background periodically to refresh data.

The docker containers need to be running and healthy for the component tests to pass.

Docker Images

Special Thanks & References

Support:

Other Projects:

About

For the game Final Fantasy XIV, this app calculates the most profitable items to craft based on market prices, vendor prices and crafting component costs. It also provides a front-end to display the results

License:MIT License


Languages

Language:C# 82.6%Language:TypeScript 15.4%Language:CSS 1.1%Language:JavaScript 0.4%Language:Dockerfile 0.3%Language:HTML 0.1%Language:Shell 0.1%