Hey, I am going to write an asset / profit / worth tracker that runs on the user’s end.
It will be pretty simple : shows all your income and loss types over time (% of market, % of donations, % of rats bounty, % of mission rewards…), profit by item (for each item traded, how much isk gain and loss total), asset worth with % by type, total worth over time, etc.
I make this post as an undock-check to make sure I understand eve third-party program development before doing stupid mistakes.
So if I want ‘all’ the available historical data for one character I must chose between those ?
- Use evekit to manage saving all the historical data for a character (so I rely on third party DB / service for my software)
- Write character’s data to disk (which means you lose everything if you lose local data and have no backup)
- Save it in my own server (security responsability, cost, admin sys…)
Thanks for your time.
I think if you want it to be reliable you would have to go with option number 3.
1.) Personally I don’t know that much about evekit but as you already mentioned it introduces a dependency you have no control over.
2.) The main problem would not be data loss but the need to be executed at regular intervals in order to make sure you don’t miss any transactions.
3.) This one is gonna introduce the usual paranoia as a problem but is probably the only choice to make it reliable. But still if people change e.g. their account password without granting your app access again you easily get gaps in the history.
Just my 2 cents.
There are a few other variants. Full disclosure: I’m the blithering idiot behind EveKit.
start writing your app against EveKit, but make the account sync part pluggable. If you like how the project is going, commit to swapping out the account sync for something else. This lets you get something working quickly and will let you validate your approach. It avoids getting distracted by account sync, which can get complicated (I should know after several years). The main risk is that EveKit becomes unreliable for some reason before you have a chance to swap it out.
EveKit is open source, so you could choose to run your own instance on your own hardware. You could either do this indefinitely, or you could use this as the basis for your own account history management server (i.e. hack EveKit into something more suitable for your purposes). The upside is you could work on the app first and worry about the backend later. The downside is learning how to setup someone else’s system, dealing with code you didn’t write, etc.
All that said, if I were to do it all over again (and I may, soon enough), I would likely go with a hybrid approach:
Make a client which stores history locally. The client will download data directly from the ESI when it is online. This client can operate standalone, but it has the disadvantages of potentially missing data when offline, and risking all data if something bad happens on the client machine. To fix those issues…
(Optional) Standup a centralized server which keeps a limited history of player data retrieved from the ESI. The purpose of the server is to capture player data while clients are offline. This doesn’t need to be a lot of data, just enough to cover the usual amount of time a client is offline (say, less than a month of data). You also don’t have to get fancy: just call the ESI and store the results somewhere convenient, delete data older than a month (or whatever). Now change your client so that the next time it is online, it retrieves data from your server first, before calling the ESI directly. Make using the server optional, so paranoid types can forgo the server at the risk of missing data. And finally…
(Optional) Make your centralized server accept encrypted backups of client data. This gives clients, even paranoid ones, a way to protect against catastrophe. Evekit, now capturing data for about 700 accounts, has a database about 20GB in size, so the storage requirements aren’t very large. Of course, more savvy users could do this themselves if they wish.
Best of luck!
Thanks for your input guys. I may do a mix of client side storage and possibility to import from evekit, as I don’t feel like getting into admin sys and service availability, as this project is mainly for me to use and let other use secondarily.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.