EveStructures - Monitor your stations out of game

Ahoy Champions,

After talking with a few people across EVE, the idea arose that an out of game Station Management tool could be useful for those who are in charge of managing the many stations that are deployed across New Eden.

Website

https://structures.eveskillboard.com

Demo

https://structures.eveskillboard.com/demo

Developer

Brock Khans
GitHub - skiedude/evestructures: An ESI/SSO backed website enabling Eve Online Corporations to view and manage all their owned Structures in New Eden

Planned Features in Development

Notification Manager + Notifications

Discord
https://discord.gg/5vUQxMP

Slack
#eveskillboard (in tweetfleet slack)

Leave any feedback here, feature requests or bug reports. Also feel free to contact me in game via mail/chat. I also hang out in the SCC and Eve-Mogul Discords.

1 Like

Reserved for updates

Codebase is now public

Discord Notifications are live!

Updates Include:

  • Background structure update every 3 hours (This ensures notifications are using accurate data)
  • Add/Update/Delete a webhook for each character
    • Multiple characters spanning multiple corporations can notify to their respective discord
  • Fixed a bug with the days left not accounting for multiple months/years of fuel
  • < 7 Day and < 24 hour fuel notification created
    • Resets when more fuel is added so you can be renotified when it hits this criteria

In Development:

  • Slack Webhook Functionality
    • One per character like discord notifications
  • If you use both Discord/Slack choose which one you prefer the notifications to be sent to

Upwell 2.0 Updates have just been pushed to Master!

If you’re hosting your own you’ll want to do the following:

git pull
php artisan migrate
php artisan queue:restart
php artisan update:structures

That will apply all the DB changes, restart the queue (which needs to happen anytime you change a job), and run a fresh update on all your structures which will pull down and store all the new data.

Heres a preview of how the new data looks

Awesome project!

I use the self-hosted version for my corp, and so far it’s been working really well!

Thats great to hear, I’ve wondered. Were my install instructions adequate enough to get it working?

Yes, I would say that the installation instructions are clearly written.

I had some problems with the Apache vhost entry configuration, but overall it works really well.

Will you add some more features later on? Like, for example, a more advanced filtering for Discord webhook so we can adjust what kind of notifications that will get pushed to the Discord? Also, a simple button to test the webhook would be great, since back then we didn’t know if the webhook was working or not until we got a sudden notification that one of our citadels is running out of fuel.

Thank you for making it open source as well!

Definitely. Still pushing updates weekly. There are a lot more notifications that I want to add and i think at that point I will need to make a page to manage them

1 Like

The Great Database Cleanup has taken place. I’d like to thank @kossaw for his help in figuring out a good solution in our discussion we had on Github.

This prevents duplicates from being created, and shares the data between characters of the same corporation_id and characters that have the is_manager role (Defined by the role check looking for Station Manager).

Relationships are now connected between characters.corporation_id <=> structures.corporation_id . And structure* relations are defined by structures.structure_id <=> *.structure_id

Since data is now shared between characters, we do not delete the structure when the character/account is deleted. We do however have a new job that runs once a week to clean up old structures that don’t have any matching characters.corporation_id

I also increased the scheduled frequency of the update:structures to every hour, the check:fuel to every hour (on the :30) and the check:orphans runs weekly.

git pull
php artisan migrate
php artisan queue:restart

I found it easiest to drop everything from structures, and structure_*, and fuel_notices and then just run update:structures and check:fuel to repopulate all the data. Just keep your characters of course.

Extractions have arrived!

With this most recent update the extraction info is now being pulled.

Important Updates
In order to pull this information, a new scope was added to the auth process. You will need to sign into developers.eveonline.com and add it to your application (if you’re self hosting, and following my fork)

  • esi-industry.read_corporation_mining.v1

I also moved the code that was duplicated between the StructureController and the Job/StructureUpdate into a traid StructureGet. No more duplicated code, each file just calls the trait.

Since there were job updates and a new table added make sure you run both:

php artisan queue:restart
php artisan migrate

Very useful! Even if it is refreshed every 3 hours only, can you add discort notification to the vulnerability status changes? Similarly, extraction notification would be useuful.

Yup that’s on the road plan. I first need to redo the notifications as they are and add a manager page where you can configure them to your liking

1 Like

The Notification Manager has arrived!
Now when you’re logged in, you will notice a new tab Notifications. Here you can define a webhook for the Alerts you wish to have sent to you.

Notifications Available:

  • Daily Extraction:
    – This is sent daily at 13:00 Eve time, contains all the extractions coming up in the next 7 days
  • Unanchoring
    – 1 alert is sent when the unanchor is first noticed by the website
    – 1 alert is sent when there is < 24hours until the unanchor is about to finish
  • Structure State Change
    – If the state of your structure changes, you will get notified about it (Went from Shield Vulnerable → Armor Reinforced)
  • Fuel Notices (no changes from existing functionality)
  • Test Webhooks
    – You can now test your webhooks to make sure they go to the desired channel, simply save a webhook, and then select it from the drop down for the desired character

There are a couple new tables so do the usual:

php artisan migrate
php artisan queue:restart

Also if you’re hosting your own to copy of the existing webhooks from the characters table into the notification_info table you can use the following query:

insert into notification_info (user_id, character_id, fuel_webhook) select user_id, character_id, discord_webhook as fuel_webhook from characters;

I removed some of the jobs and just put all the work in the command file. It didn’t make sense to queue jobs that were just doing simple math.

Here are some screenshots of the new notifications:
testunachor_starunanchor_finishstatesextractions

2 Likes

Awesome thanks! Last point, structure under attack notification - do you have it on the roadmap?

To do that I’d have to add the scope for character notifications which is doable but also not ideal for the scope of this tool.

The structure state notifications are in a sense the same thing , just not as real time. You will get s notification that your structure left shield_vulnerable and I believe it goes to armor_reinforced. That will probably be an hour behind or so it happening in game.

So not as real-time as checking notifications. But still there

Some more new features:

  • Discord notification of Fracture taking place (close to atleast)
  • User can now create their own site to view all extractions to share internally or publicly
  • User can now save the ore/value/fracture preference per structure

There were some new DB tables, so as always if you host your own:

php artisan migrate
php artisan queue:restart

The slug table is populated going forward, however to back-populate it run the following command on the database:

insert into slugs (user_id, character_id, corporation_id) select user_id, character_id, corporation_id from characters;

Pics:

Some quick minor updates just pushed.

  • refactored the auth headers to pass the token as a param and not in the url query
  • removed the 1 dependency we had on the SDE to look up system names but just hitting the universe endpiont, seemed pointless to have to import the whole SDE to just get a simple system name

As always, pull down the updates, and run a php artisan queue:restart

Thanks for the update!

1 Like

Add edsome debug to track when notices aren’t sent, reset notices on extractions that have restarted

make sure to restart the queue after pulling. I have a lot more improvements planned, hopfully coming this week or the next