Code Monkey home page Code Monkey logo

exevo-pan's Introduction

Exevo Pan 🍎

Exevo Pan is an open-source web app with tons of features and utilities for the game Tibia

Exevo Pan

What's inside?

This monorepo contains the entire codebase of our project. Here is the anatomy:

β”œβ”€β”€ automations
β”œβ”€β”€ apps
β”‚Β Β  β”œβ”€β”€ bazaar-scraper
β”‚Β Β  β”œβ”€β”€ blog-worker
β”‚Β Β  β”œβ”€β”€ current-auctions-lambda
β”‚Β Β  β”œβ”€β”€ exevo-pan
β”‚Β Β  └── history-server
β”œβ”€β”€ packages
β”‚Β Β  β”œβ”€β”€ auction-queries
β”‚Β Β  β”œβ”€β”€ config
β”‚Β Β  β”œβ”€β”€ data-dictionary
β”‚Β Β  β”œβ”€β”€ logging
β”‚Β Β  β”œβ”€β”€ mock-maker
β”‚Β Β  β”œβ”€β”€ db
β”‚Β Β  β”œβ”€β”€ shared-utils
β”‚Β Β  β”œβ”€β”€ tsconfig
β”‚Β Β  └── @types
└── package.json

The entire stack is built using typescript, so you will need Node.js and yarn. If you are starting from a fresh clone of this repository, start with:

yarn

This will install and build all the apps dependencies. You will also need to install Workers CLI:

yarn global add @cloudflare/wrangler

and Serverless Framework CLI:

yarn global add serverless

Apps

Setup

It's advisible that you read every app documentation before trying to run the full stack. Still, here is a simple recipe for you to get started:

Install all the dependencies

yarn && yarn build:packages

Scraping current auctions data

At the apps/bazaar-scraper directory, run:

yarn scrap:auctions

to get current auctions data. Then, fetch for highlighted auctions:

yarn update:highlighted

Scraping history auctions data

To get some history auction data, start with:

yarn scrap:history

Scraping the entire History data will take several days, but you can skip this process as soon as HistoryAuctions.jsonl has been outputted.

Now generate some history statistics data using:

yarn update:statistics

At this point, your apps/bazaar-scraper/Output directory should have this set of data:

β”œβ”€β”€ CurrentAuctions.json
β”œβ”€β”€ HighlightedAuctions.json
β”œβ”€β”€ HistoryAuctions.jsonl
β”œβ”€β”€ HistoryStatistics.json
β”œβ”€β”€ ItemsData.json
β”œβ”€β”€ ScrapHistoryData.json
└── ServerData.json

Now you are ready to have a minimal dev environment! Go back to the repository root directory and run:

yarn dev

Now you are ready to roll! Apps will be running on:

About

This software is 100% free, open-source and unlicensed.

You can find more info about me or this project here πŸ˜„

Contact: [email protected]

exevo-pan's People

Contributors

arturhaddad avatar brunominervino avatar lucasquearis avatar mathiasbynens avatar xandjiji avatar yurieastwood 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  avatar  avatar  avatar  avatar  avatar

exevo-pan's Issues

Add filter to know if Inquisition quest are completed

It would be very useful if there have some filters to know about completed quests, like Inquisition, Children, and all other access like Scarlet and Oberon. But after read that the MinifiedCharacterData.json size could be a problem(is still?), I thought that if we have only a filter to Inquisition like the Soul War filter, it might fix the problem.

If you agreed, I could cooperate with you to develop some features as long as I have some specifications about the project limits.

And thanks for this application :)

some qol features for hunting groups

Module: Hunting Groups.

  • Ability to sort checked bosses by last check, alphabetically.
  • Ability to mark bosses as "favorites" (we usually have some bosses assigned to check and searching one by one is a little tedious)
  • Table View mode for checked bosses.
  • Log check actions.
  • Show 3 columns instead of 2 so we scroll less 🀣

Show item name on mouse hover

Cipsoft adds on div title item name, i.e.:
<div class="CVIcon CVIconObject" title="1,582x great fireball rune"></div>

This would be a cool feature to have, specially for newcomers.

Filter by min/max

As the title said, filter the level not only by the Min value, but a max value, the same for skill.

Example: I want a low lvl with high skill.

Boss Tracker stats for Feroxa are off

Feroxa currently shows up with % chance on the 12th and 14th of each month, but in reality it’s more simple: Feroxa always spawns between the server save on the 13th and the server save on the 14th of each month. Unlike other bosses, we don’t need to look at historical kill data / time since the last kill. Feroxa should only show up on one day per month, i.e. the 13th, with 100% chance. Have you considered hardcoding an exception for her?

TS2339: Property "..." does not exist on type "..."

Hi there :) I am happy that I found exevo-pans source code as I am missing a filter option for maximum tibia coins as well as an alert service for new auctions or running out auctions. I am currently trying to set up the services in a VS-Code devcontainer, i.e. docker container and run into several issues. One of which is the following one. Look below for the Dockerfile I'm using.

node@exevo-pan-dev:/src$ cd apps/backoffice/
node@exevo-pan-dev:/src/apps/backoffice$ yarn build
yarn run v1.22.19
$ webpack && ./postBuild.sh
assets by status 42.2 KiB [cached] 1 asset
orphan modules 316 bytes [orphan] 1 module
modules by path ../../node_modules/@cloudflare/kv-asset-handler/ 51.5 KiB
  modules by path ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/ 37.5 KiB
    modules by path ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/*.js 2.95 KiB
      ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/index.js 127 bytes [built] [code generated]
      ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/Mime.js 2.82 KiB [built] [code generated]
    modules by path ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/types/*.js 34.6 KiB
      ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/types/standard.js 9.31 KiB [built] [code generated]
      ../../node_modules/@cloudflare/kv-asset-handler/node_modules/mime/types/other.js 25.3 KiB [built] [code generated]
  modules by path ../../node_modules/@cloudflare/kv-asset-handler/dist/*.js 14 KiB
    ../../node_modules/@cloudflare/kv-asset-handler/dist/index.js 12.8 KiB [built] [code generated]
    ../../node_modules/@cloudflare/kv-asset-handler/dist/types.js 1.14 KiB [built] [code generated]
./src/index.ts + 1 modules 2.5 KiB [built] [code generated]

ERROR in /src/apps/backoffice/src/index.ts
30:12-21
[tsl] ERROR in /src/apps/backoffice/src/index.ts(30,13)
      TS2339: Property 'authToken' does not exist on type 'unknown'.

ERROR in /src/apps/backoffice/src/index.ts
30:26-30
[tsl] ERROR in /src/apps/backoffice/src/index.ts(30,27)
      TS2700: Rest types may only be created from object types.

ERROR in /src/apps/backoffice/src/index.ts
64:12-14
[tsl] ERROR in /src/apps/backoffice/src/index.ts(64,13)
      TS2339: Property 'id' does not exist on type 'unknown'.

ERROR in /src/apps/backoffice/src/index.ts
64:16-25
[tsl] ERROR in /src/apps/backoffice/src/index.ts(64,17)
      TS2339: Property 'authToken' does not exist on type 'unknown'.

4 errors have detailed information that is not shown.
Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it.

webpack 5.74.0 compiled with 4 errors in 2440 ms
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Dockerfile

FROM node:14

WORKDIR /src
    
# node may come with an older version of npm. Ensure we have a specific npm.
# RUN npm install -g [email protected]

# Install prerequisites
RUN apt-get update
RUN apt-get install -y \
    lsb-release \
    curl

# Install yarn
RUN npm install yarn

# Install exevo-pan dependencies
RUN yarn global add @cloudflare/wrangler serverless

Just as a side note, if you wish I can make available to you the devcontainer in a separate pull request.

Do you know how to fix the above error?
Do I need the backoffice at all?
What version of Node.js and yarn are you using?

Thanks for this nice project :)

exevopan for mir4 nft market

hello exevopan admin can you take a look at this?
https://www.xdraco.com/nft/list
it is a nft market of characters from a popular game called mir4
the page is missing many things that I miss from exevopan 😒

.
I see a lot of people advertising their characters on social networks and they even spam, a system like exevopan's can work well here, I hope you consider it

Filter bazaar history by successful auctions

It would be nice to be able to filter the bazar history by successful auctions since so many are failing.
This would make it easier for people to compare tc prices that have been paid before for a character with similar stats.

Novo Filtro: Favoritos

Ser possivel favoritar um personagem do bazar e filtrar somente os favoritos.

SugestΓ£o de UI: Colocar uma estrelinha ao lado do ja existente link de compartilhamento.
Na tela de filtros, ao lado do apenas com lances, ter opção apenas favoritos.

Objetivo: Acompanhar o leilao de personagens que voce esta interessado em comprar de forma mais facil.

Save filters

It is a good idea to save filter to reuse. For example: Every day I search by knight on green and optional worlds and it would be nice if I can reuse this filter.

Boss Tracker: consider removing `prioritizePremium`

() => prioritizePremium(listBy[listingOption](hydratedBossList)),

Why are premium bosses prioritized? As an Exevo Pro user, I would prefer all bosses to show up based on their % chance or whatever listingOption was chosen (i.e. the way it worked before this change). I understand you want to highlight premium bosses in a special way, but the styling already accomplishes that IMHO. It's not helpful to push the premium bosses to the start if the list even if there's no chance of them spawning on my server today.

Here's what I'm seeing for my list of Favorites for my server:

None of the premium bosses have any chance of spawning today, yet they take up space at the start of the list.

Would you be willing to reconsider this? The code change would be simple -- just don't use prioritizePremium at all.

Houses bazaar

Should be good have a tab to search house like we do in char bazaar tab, filtering by beds, cities, prices, time to finish the bid...

Add filter to Primal Ordeal

Going on the same as #1 , it would be good to add a filter to know if a character completed Primal Ordeal, this can be done by checking if the character has the following achievement: Royalty of Hazard

Error 404 recurrent

Greetings,

I come to report that when you try to access this url:
error
The page loops between a 404 page and the main page.

I have the intuition that it is an error with the filters, routing, and querystring management.

Group bosses by city

Maybe can be a good idea to group bosses by city. When I'm checking, I always forget some boss on the same city, maybe can be a useful tool to group them

Boss β€œchance to spawn today” percentages seem off

First off, nice work on the new boss tracker! It looks incredible and works great :) And I was excited to see you integrate our TibiaMaps.io mapper as well for the spawn locations ❀️

I did notice one potential issue: the β€œchance to spawn today” percentages seem surprisingly different from other sources. I tried a quick search but couldn't find how this is computed in this repository (maybe this part is closed source?). Perhaps if you could explain what you're doing I could give more specific input.

For example, Rukor Zad on Vunira is listed as 21.31%, but GuildStats currently lists it as 13.17%. (This is not to say that GuildStats has the correct number -- in fact, I made them aware of a flaw in their calculation back in October 2021, with a suggested corrected formula, but they haven't fixed it yet. Happy to share more details on this but perhaps this is easiest over email/Discord chat.)

What's the source of this difference? Is the % computation different from GuildStats, or is the historical kill stats data different, or both?

Thanks,
Mathias
TibiaMaps.io admin

Add filter to Soul War

Would be awesome to add a filter to check if character has Revenant Outfit, should be added as "Soul War Quest", something like that.

Soul War quest is not being filled

Hi all, I realised that some chars does not appear with Soul War concluded even with the Revenant outfit unlocked, is this a bug?
An example: auctionId=1241209

Enable permanent links for specific calculator inputs

I'd like to share my view of https://www.exevopan.com/calculators/exercise-weapons with a friend, without having to tell them to enter exactly the same values. Ideally this would be possible by encoding the input values in the URL, e.g.

https://www.exevopan.com/calculators/exercise-weapons?vocation=2&skill=magiclevel&currentSkill=39&targetSkill=40&percentageLeft=31.46&loyalty=3600

The Bazaar feature already supports this, e.g.

https://www.exevopan.com/?vocation=1&pvp=1&location=0&battleye=true&dummy=true&minLevel=584&maxLevel=1532

Please consider doing the same thing for the calculator pages.

Boss tracker: remember "list bosses by" preference

It would be nice if the boss tracker would remember the "list bosses by" preference. Currently, when setting it to e.g. "[list bosses by] favorites" and then reloading the page, it goes back to the default of "[list bosses by] chance".

Tibia Coin per Experience Ratio

I think it would be useful to se how much tibia coins per one million experience (tc/1kk exp) the current bid is at to quickly evaluate if the character is worth it, as the value generally scales per experience.

For example a character with the experience 609,410,733 and a current bid of 5000 tibia coins, should present a ratio of 8.20.

>>> 5000 / (609410733 / 1000000)
8.204647094720597

Also sort order and filer based on it would be great.

hunting groups

Would be a good idea if the hunting group considers the boss killed by the group in the statistics

Example

We killed Rotworm Queen in hellgate some days ago and we know there is no chance of spawning

image

but in the image, the group stills don't know wich Rotworm Queen was killed

[feature request] Search for char history

Hi there,

I have a quality of life feature request. You could have a feature under the char’s menu that shows the bazaar history for that character.

It could be a very handy PRO feature. I always look up for the char’s history before bidding, and currently it’s a manual process of copying its name and searching for it.

Anyways, love your work, I’m a PRO member myself πŸ˜„

Valeu!

Boss timer is off

The boss tracker lists Dracola on Vunira as "no chance (expected in 1 day)", but my team just found and killed it anyway.

I think the boss tracker should update twice per 24 hours:

  • once when the kill stats update (to update "recently killed")
  • once when server save takes place (to update the boss countdowns)

Boss count

My team has killed the Fleabringer twice this week, and they remain high in all spots:

image

The Voice of Ruin is having the same problem.

Server list is always static

After selecting the PvP mode, the BattleEye status and the location, the server list still contains all the possible servers. Shouldn't it be a dynamic list, filtered by the three above inputs?

image

If Venebra was the only option it would lead to better UX, cause that's what I'm looking for, and we can already know it by the previous inputs

actions menu displays under sort bar

The "actions menu" on a character entry, the one which can be opened by "triple vertical dots" button
The one containing: DETAILS, Copy link, Favorite, Notify, Find similar, Estimate Skills, Estimate Price
Sometimes, when it wants to display upwards, then it's displayed but underneath the grey horizontal section, the one containing FILTERS, Sorting, Pagination.

It's very simple to reproduce, just make your browser window of short height and click it.

The screenshot should say it all:

scr-230511-091654

Request: Apply CSS `image-rendering: pixelated` on Tibia sprites

Consider applying image-rendering: pixelated on any Tibia sprites used throughout the website. In particular, the boss sprites on the Boss Tracker could use this. It ensures the images look pixel-perfect and sharp. The difference is noticeable on normal zoom but especially when zooming in.

Filter by price and change value by hand

Once again I'm asking for a feature :D

Add a range slider (like the one for the level) to filter by a range of price, let's say I want to pay 100~200 tc on a lvl 1000 char (who knows Β―_(ツ)_/Β―)

And also can you make so I can manually insert the value in the slider? As I can do already in the Skill bar.
Sometimes it doesn't get the value that I want :(

image

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.