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
- 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
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.
- nickreinlein/gilgoblin-api
- A C# REST API to get information on items, recipes, prices
- Provides the best crafts for a specific world given current prices
- nickreinlein/gilgoblin-frontend
- A React frontend that displays results from endpoints in
gilgoblin-api
- A React frontend that displays results from endpoints in
- nickreinlein/gilgoblin-database
- A PostgreSQL database which hosts the GilGoblin database
- On initialization, scripts are run to create the tables and populate with data
- nickreinlein/gilgoblin-dataupdater
- A background service that will check every 5 minutes for outdated prices to update in
gilgoblin-database
- Currently, prices are considered outdated after 48 hours
- A background service that will check every 5 minutes for outdated prices to update in
- nickreinlein/gilgoblin-accountant
- A background service that will verify every 5 minutes for costs and profits to calculate in
gilgoblin-database
- A background service that will verify every 5 minutes for costs and profits to calculate in
Support:
- Jetbrains IDEs ( https://www.jetbrains.com/ )
Other Projects:
- XIVAPI: A FINAL FANTASY XIV: Online REST API ( https://xivapi.com/ )
- Universalis: A crowdsourced market board aggregator for the game FFXIV ( https://github.com/Universalis-FFXIV/Universalis )