Git Product home page Git Product logo

tarkov-dev's Introduction

tarkov.dev ๐Ÿ’ป

deploy ci CodeQL contributors Discord

react JS

stars

This is the source code for the official tarkov.dev website.

View Escape from Tarkov information about items, barters, trades, flea market prices, quests, maps, hideout profits, and so much more!

homepage

Local Development ๐Ÿ”จ

To build and test the site locally just follow the steps below:

  1. Install dependencies:

    npm install
  2. Start development server:

    npm start
  3. Access the site: localhost:3000 ๐ŸŽ‰

Note: You can update data with: npm run prebuild

History ๐Ÿ“š

This project (tarkov-dev) is a fork of tarkov-tools.com. The original creator @kokarn decided to shut the site down. In the spirit of open source, a group of developers came together to revive the site in order to continue providing a great website for the Tarkov community and an API to power further development for creators. This project is now 100% open source (see infrastructure section below) and developer first. Our GitHub Organization (the-hideout) contains all the repos which power the API, this website, the community Discord bot, server infrastructure, and much more! We are passionate about open source and love pull requests to improve our ecosystem for all.

We โค๏ธ Pull Requests

We love pull requests and contributors looking to improve this project! Anything from simple spelling errors, icon updates, fixes for small css bugs or just posting issues to keep track of what needs to be done is greatly appreciated.

Deployment ๐Ÿš€

Deploying your changes to production is easy! Just do the following:

  1. Open a pull request with your changes
  2. Make sure CI is passing (a core member of the-hideout will run CI for you)
  3. A core member of the-hideout will run .deploy to development to deploy your changes to the development environment for final validation
  4. A review will be recieved from a reviewer if all looks good
  5. A core member of the-hideout will run .deploy on your pull request to branch deploy your changes to production
  6. If everything goes okay, your PR will be merged and your changes will be auto-deployed to production! โœจ

Updating Languages ๐ŸŒ

There are two ways to update languages on the site:

  • Updating the core translations (most common)
  • Updating the language that the GraphQL API uses (least common)

Language Translations

Rather than go into detail here, we have opened a great guide in a GitHub issue for how you can provide translation contributions to tarkov.dev!

Check out the guide here

GraphQL API Language Support

To update the supported languages used by the site with the GraphQL API, you will need to edit the following file: supported-languages.json

See this pull request for additional context

Other Parts of the Ecosystem ๐ŸŒŽ

  • Stash - The official tarkov.dev Discord bot
  • Tarkov API - The GraphQL API that powers everything
  • Tarkov Data - Open source structured data for Escape from Tarkov
  • Tarkov Image Generator - Tool to generate images from the local icon cache
  • Tarkov Data Manager - Data manager that core contributors to the project can use to update items in the database. It also contains cron jobs that sync database information to our Cloudflare workers for the GraphQL API
  • Cache - A bespoke caching service to cache frequent GraphQL API queries
  • Status - The official status page for tarkov.dev, api.tarkov.dev, and much more

Infrastructure ๐Ÿงฑ

To learn more about the infrastructure, components, and open source pieces of this project, check out our infrastructure documentation

Contributors ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘

Thank you to all of our awesome contributors! โค๏ธ

tarkov-dev's People

Contributors

akiyamov avatar aphidrs avatar austinhodak avatar blanewins avatar blightbuster avatar brjens avatar cj2tech avatar colinmyers37 avatar dependabot[bot] avatar dysektai avatar faalagorn avatar github-actions[bot] avatar grantbirki avatar gyran avatar harshwasthere avatar heybanditoz avatar khamer avatar kokarn avatar lipowskm avatar marvhh avatar ogruendel avatar oskarrisberg avatar razzmatazzz avatar reith77 avatar rm-evans avatar shebuka avatar significant-quart avatar spitefulcartographer avatar thaddeus avatar the-hideout-combine-prs[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tarkov-dev's Issues

Remove tools from total craft cost on hideout profit page

The hideout profit page currently uses the prices of ALL ingredients (including tools) for the craft costs. Since tools are not consumed in crafts, they should not be included in the overall cost of each craft. Possibly could include the total tool cost for each craft as additional information for crafts.

Language default not set

In settings, with the new update, I have no language selected, but the site is in English. Is 'en' a fallback language or we are missing a default when updating user settings?

Screenshot 2022-06-29 at 12 39 36

Make entire item row or icon clickable.

Screen Shot 2022-03-26 at 12 12 54 AM

We should go to the respective item page when the item row or icon is clicked, not just the item name. If entire row isn't possible then icon will do. Will need to apply this to all pages where items are clickable.

Price Graph

  • If the price of an item is positive the item price graph should be green ๐Ÿ“ˆ ๐ŸŸข
  • If the price of an item is negative the item price graph should be red ๐Ÿ“‰ ๐Ÿ”ด

image

"Cost" in Hideout Profit is incorrect

It seems that the "Cost" values in the Hideout Profit page are showing the SELL-To-Trader prices, not the BUY-From-Flea/Trader prices

For example:
Lavatory > Max Energy Drink > TarCola shows a Cost of 2507, which is the SELL-To-Trader Price (Therapist), however the BUY-From-Flea Price is over 39k. See below example shows Hideout Profit page showing 2,507, but Item page showing 39k
image
image

Some items are working fine, but it only seems to work correctly when there is a Trader who actually sells the item, but when no Trader sells the item, it seems to show the Sell-To-Trader Price instead. See below example of Bottle of Water, which shows correctly in the above Hideout Profit image
image

Thank you!
p34nUt

Fix Bad Text

This text is oddly placed and would be hard to read for people who are visually impaired (light gray text on gray background)

image

Map naming is inconsistent

The new Re3mr Shoreline map was recently added (AWESOME!)
But it was named as "Shoreline 3D"

The other maps available in a 2D/3D version are listed as

Map Name
Map Name 2D

Naming the new one as

Shoreline
Shoreline 3D

is inconsistent with existing content
image

Add the ability to filter ammo chart by my trader levels or price

I made this suggestion a while back on tarkov tool and there was some work done on it there before it shut down - it would be awesome to fork that work over here.

Since tarkov tools has my trader levels set in settings, and it has market data from it's API, it would be awesome to be able to set a max price, or max trader level for ammos and be able to see what ammos I should be considering.

PR from tools: kokarn/tarkov-tools#155

List of Barter Items incorrectly includes containers

Describe the Issue

When looking at list of "Barter Items" containers are also shown

Expected Behavior

Should show only barter items

To Reproduce

view list of barter items

Client

Desktop

Browser

Chrome

Relevant Console Log Output

No response

Extra Information

image

Loot tier page shows incorrect items in filters

Loot tier page shows incorrect items in filters

The loot-tier page incorrectly shows quite a few items when searching with the wearable filter. To my understanding, weapons should not be considered wearable and only things like vests, backpacks, helmets, arm bands, etc

Example ๐Ÿ“ธ

Screen Shot 2022-06-27 at 12 07 22 AM

Map naming still inconsistent

#158 was closed as fixed, but the names still inconsistent.
All the other maps have

Map
Map - 2D

i.e: the 3D version is the default

Shoreline is the only one using

Map
Map - 3D

Get item properties from API

Item category pages show properties of certain kinds of items (armor, helmets, etc.). However, these properties are currently taken from a static .json file (/data/item-props.json). Now that this information is available via the API, the site should be updated to use information supplied by the API.

Mosin does not appear in item search

Describe the Issue

When using the standard item search (ctrl+q), the mosin rifle does not appear in the listings. Attachments for the Mosin will appear. Other guns appear to show up in search results when searched for. When searching for 'bolt-action' the Mosin will appear.

Expected Behavior

Mosin is included in the search results.

To Reproduce

Open item search, type in "mosin", observe search results

Client

Desktop

Browser

Chrome

Relevant Console Log Output

No response

Extra Information

No response

Hideout build costs should use hideoutStations query

Currently, the hideout build costs page (/hideout) uses the hideoutModules query in hideoutSlice.js. The source for that data is a static json file in the tarkovdata repo. This page should be updated to use the hideoutStations query, which is dynamically updated from the game data.

Note that any other pages that also use hideoutSlice.js will also need to be updated to be compatible with the changes.

Deploying tarkov.dev in Europe

Hi from France guys!
Thanks for your job. I wanted to do the same with a fork of tarkov-tools but didn't got the time.
I noticed that your website is hosted on a server in brasil? Or at least America's continent. It takes a bit of a time for the website to load back there. Even with my 2Gbps optic fiber. I'd like to host this tarkov.dev on my server and have a subdomain eu.tarkov.dev that redirects on it. If it's okay for y'all.
Thanks in advance.

Barters don't use cheapest available barter for ingredients

Describe the Issue

For example, on the Weapon Case item page, it shows the barter for the THICC Weapon Case that uses normal Weapon Cases. But for that displayed barter, it shows a "cost" of the Weapon Case requirements reflecting the Skier booze barter cost even though there are two less expensive barters.

Expected Behavior

When using a barter trade for the "cost" of a barter requirement, it should use the cheapest barter.

To Reproduce

Weapon Case page

Client

Desktop

Browser

Firefox

Relevant Console Log Output

No response

Extra Information

Reported by OmniXen on Discord:
image

Use selected language for API queries

Currently, the site queries the API for the English results of all queries. These can be changed to use the language set on the site settings page.

For example, the items query is here:

itemsByType(type:any){

itemsByType(type:any) can be changed to items(lang: ru/en/de). Someone who knows how React works could change all the relevant queries to include the lang argument.

SEO Improvements ๐Ÿ”Ž

SEO Improvements ๐Ÿ”Ž

This issue is designed to track and help facilitate SEO improvements for tarkov.dev

The tarkov.dev site is currently growing and has a lot of new users which is great! However, our Google search rankings for many of the features this site offers, don't show up as easily as they should.

That being said, there is always room for improvement when it comes to SEO. This issue is a call out for anyone of our contributors who might have magic SEO knowledge for ways that we could improve our rankings.

Taking a quick look at the site, there seems to be a few ways we could improve. For example, on the loot-tiers we don't have much text around what this page is, and what it offers. There is no <h1> elements or <p> elements that says what this page does at all.

With a little bit of SEO magic we might be able to go a long way and help get this awesome tool in front of more people through better search results โœจ

Hideout profit screen is using a different "Sell on flea" value than other pages

Hideout Profit for Workbench shows 240R @ flea
image

Item's own page shows 85R @ flea
image

Top of item's page shows 85R as suggested sell price and 240R as suggested buy price
image

This may be because the suggested sell price and buy prices are reversed?
It does seem odd that you would "Buy high" and "Sell low", rather than the obvious "Buy low" and "Sell high"

Dropdown menu issues

Some users (including myself) have experienced issues with drop down menus being "odd". Sometimes, it is difficult to hover over them with your mouse and they disappear. Usually refreshing the page fixes the issue but there is likely some sort of UI bug that is causing the menus to behave poorly.

The menus which experience issues can be seen below:

Screen Shot 2022-06-26 at 3 10 37 PM

Use API for Ammo page

Currently, the Ammo page uses a static .json file from the tarkovdata repo. Now that the API contains ammo information that is automatically updated, we should pull that data from the API.

Add parts table to preset item pages

On item pages for presets (and any other items that contain other items), it would be useful to have a table that shows all the other items contained within.

Improve Homepage Load Speed

Improve Homepage Load Speed โšก

There are a few areas we where we can greatly increase the homepage initial load speed

  • Properly size and serve images based on the device's viewport (example: small device, gets smaller image)
  • Reduce the massively large and unnecessary API call to display a handful of items on the homepage

Addressing bullet 2 above.. We are currently making an API call that returns ~400k in JSON which is effectively fetching all items and all their attributes from the API. This is excessive since we are limiting ourselves to only 20 items on the homepage to begin with. Additionally, we don't need all these attributes from the API on the homepage if we are just displaying some quick facts about 20ish items.

Right now, bullet point 2 is the largest amount of data going across the network and it is made on every call to the homepage. This is the single greatest area where we can and should reduce the size of our page to improve site performance.

"Price per Slot" should only count added slots

When looking at containers, rigs, and backpacks, the column "Price per slot" is calculated as
[Lower of Flea or Barter Price] / [Number of Inner Slots]

This doesn't match with the likely 'intent' of this stat, i.e: "How much am I paying for extra inventory slots?"

A better calculation would be
[Lower of Flea or Barter Price] / [[Number of Inner Slots] - [Size of Container]]

This way, it's the price per 'new' or 'added' slot that you're looking at. The net cost per slot, rather than the gross.

image

Weight sorting alphabetical instead of numeric

Describe the Issue

Sorting items that have a weight column by weight doesn't produce an ordering as expected
You would expect something like

  • 1.4
  • 1.45
  • 1.5
  • 1.56
  • 1.57

But the number after the '.' is seemingly being considered as a 2nd number, rather than a decimal, so you would actually see

  • 1.4
  • 1.5
  • 1.45
  • 1.56
  • 1.57

Expected Behavior

Expect numbers to be sorted numerically

To Reproduce

Go to backpacks and hit 'weight' column to sort by weight

Client

Desktop

Browser

Chrome

Relevant Console Log Output

No response

Extra Information

image

"Has Flea" still inconsistent

image
"Has Flea: False" now excludes flea pricing from components of a craft, but the end product still seems to use the flea price

Craft profit calculation seems to use "Buy for" price instead of "Sell for"

When calculating the profit for crafting an item, the site seems to use the "Best price to sell for" rather than the "Buy for price" shown.

Example:
https://tarkov.dev/item/weapon-parts
image
image
image

You can see here, it says you should be selling weapon parts for 55,420, which equates to 49,034 profit after flee fees.
However, in the craft, it says 90,752R @ flee for the sell price, which matches the "buy for price" above.
This ends up calculating the profit @ 129,839, which is the price of the VPO (32,333) subtracted from 2x the Buy price 90,752 * 2 - 32,333 = 149,171 - (whatever it's calculating the market fees @)

Hideout Profits show ingredient items that can't be purchased yet based on trader levels

Describe the Issue

Hideout Profits show ingredient items that can't be purchased yet based on trader levels

Expected Behavior

Hideout profit should use trader levels in settings to determine which prices and availabilities to show

To Reproduce

  1. Set therapist to LL2 and Med Station to L1 and observe profit calc
  2. See that calok craft shows getting calok from Therapist (requires LL3)

Client

Desktop

Browser

Chrome

Relevant Console Log Output

No response

Extra Information

image

Add a language switcher

The i18next-browser-languagedetector plugin is doing locale switching automatically for the site, without a UI component to override. Should add a language switcher component to the settings page.

Invalid fee calculation (hideout profit page)

Actual value:
Total fee = 93111 * 2 - 145471 - 8765 = 31986
Fee per item = 15993
actual
Expected:
expected

Most likely, fee calculation function arguments are in wrong order:

fleaMarketFee(
craftRow.rewardItems[0].item.basePrice,
craftRow.rewardItems[0].item[priceToUse],
craftRow.rewardItems[0].count,
) *

but should:

 fleaMarketFee( 
     craftRow.rewardItems[0].item[priceToUse], 
     craftRow.rewardItems[0].item.basePrice, 
     craftRow.rewardItems[0].count, 
 ) 

Item Page Spaghetti Code ๐Ÿ

On the item pages it looks like we are loading a whole bunch of random images. On the home page of tarkov.dev we do this to display a handful of items for people to quickly view. We should not be doing this on item pages and this should be investigated.

image

To repo:

  1. Go to an item page
  2. Press F12 to open developer tools
  3. Look at the network tab
  4. See all the glorious images loaded for no apparent reason (they are not used on the page anywhere)

Tagging as bug because something is borked here..

Use current USD/EUR prices

Currently, item pages (and the home page) use a hard-coded value for USD and EUR prices. Should be updated to use the latest Peacekeeper/Skier buy values for each.

Empty Fuel toggle on Hideout Profit does nothing

When toggling the "Empty Fuel" toggle on Hideout Profit tool page, the tooltip says it "Set[s] all fuel prices to 0"

However, toggling it doesn't change any of the numbers on the page.

So, either that toggle isn't doing anything, or the profit calculations on the page aren't taking fuel cost into consideration.

Use tasks query to show quests requiring items

Item detail pages currently use the quests query to show quests requiring that item. This should be changed to use the newer tasks query, as that query includes much more information about required items.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.