[API] An alternative API for the RobotEvents data (not vexdb.io)

Hey everyone,

In lieu of VexDB no longer being supported, and me getting increasingly agitated at VEX Via and the RobotEvents API, I have decided to start working on a completely custom API (with data scraped every few hours from the RobotEvents API). I’m primarily designing the API for a mobile app and website that I’m building as part of this project, to make it easier to monitor competition data (I know that “every few hours” is not very suited for a VEX Via alternative, so that’s why I have plans to make competition results completely live) and explore teams and events in an easier way.

The API is currently public with an explanation at theredalliance.xyz (just keep in mind that it might not be online 100% of time time before I release the app, notably it’ll be down for a few hours within the next few days to push an update to allow people to get award data).

I do not have a specific release date, as the amount of time I have to dedicate to this project fluctuates, but I’m doing my best to finish a production Google Play Store release of the app finished within a month (for an iOS release I will need to scope out how interested people are, because I do not want to accidentally pay $100 for an App Store developer account if people wouldn’t use the app anyway).

My plans for the app are:

  • Everything that VEX Via currently offers
  • Notifications, and live-updating data
  • A centralized feed with events that your team is registered for, and results
  • An easy search bar to find teams and events

If you want data in bulk for analytical purposes, scouting, etc, I am planning on publishing daily database exports (with history).

Any questions or suggestions are welcome as I’m doing my best to suit the needs of most teams. You could contact me here or email me [email protected]

52 Likes

Cool name :slight_smile: Love the reference to the Blue Alliance!

7 Likes

Glad your project is coming along well! I wanna be the first to use the full release lol

4 Likes

Thanks so much for creating this! I’m looking forward to using it!

1 Like

Since a lot of people used and liked vexdb.io maybe working with the owner of that to get it running again would be a faster and easier project. That way you don’t need to reinvent a lot of wheel, just hook an existing wheel to the data via the new APIs

3 Likes

GraphQL!!!
I cannot say anything except :grin: :grin: :grin: :grin:

Are you planning to publish the source code for this?

1 Like

I’m only planning on making the mobile app open source, as for the API: probably not, since it depends on some infrastructure that I don’t really want to publish, and I rather not deal with supporting people self-hosting it. I might eventually publish the scraper but idk…

6 Likes

I could, but the only thing I would reuse from vexdb is the website, but integrating it with my API is more work than it’s worth.

5 Likes

Plus I do remember hearing whispers of the creator trying to get VEXdb up and working again a couple of seasons ago (not sure if any progress was made)…

1 Like

If that’s the case then it might actually be worth discussing this with the vexdb dev, I don’t want to compete with them if I can avoid it…

2 Likes

I have a REST API available from http://vrc-data-analysis.com/ which you would be welcome to leverage.

8 Likes

All of your comments are why I suggested bringing vexdb back on line with current data. Lots of the hosting, support, etc issue are solved, all it needs is a way to scrape the “current” data stream.

I have lots of code that I use that may be useful to others, but the entire fix bugs, pull patches, do tech support, stand up more infrastructure than I need makes it all become closed source running on a raspberry pi in my robot lab.

1 Like

I already have the hosting problems solved, I’ve used this exact architecture for other projects and it’s been working fine - hosting is the least of my problems. I can’t speak for Nathan rn, but if he had wanted to support VexDB it would’ve already been migrated to the new API a while ago. I don’t really see your point other than “kedas can’t do it” and “bring back vexdb”. Tbh I would’ve been happier if VexDB was updated, but it isn’t, so I’m making an alternative. Now I’m just posting progress about my own project that I’m planning to support to the extent that I can, and you don’t have to use it if you don’t want to.

9 Likes

Didn’t mean that you couldn’t do it, was trying to get an easier path for something to get out there. API away!

1 Like

Sorry, I misinterpreted you… Either way my goal is mainly around developing an app that’s easier to use, and potentially faster, than Via - the API is kind-of a byproduct.

4 Likes

Here’s the latest update I remember seeing on VTOW:

5 Likes

Yeah but that’s like 9 months ago…

4 Likes

Quick update on the API:

I added awards to the data, and by extension the API too. I removed data from before turning point, as the RobotEvents API seems to have issues with returning consistent old data. I also improved error logging and reporting, so I should be able to identify problems with any part of Red Alliance much faster.

9 Likes

Another update:

I wasn’t able to make as much progress as I hoped (I moved between coasts, which limited most of my time), but I rebuilt a lot of the backend and improved the API.

API Changes:

  • Added data on qualifications
  • Added worlds skills rankings (you can’t see a specific team’s position, but you can see the top 150)
  • Added the ability to find events by a time frame
  • Added a required season field to a lot of the queries
  • Added more verification on some fields
  • Changed the Event.ongoing field to be more dynamic and not depend on the RobotEvents value (in preparation for completely live event results).
  • Fixed time issues (I accidentally had forced times to be in UTC, without actually parsing and changing the timezone)
  • Fixed data model (I had a lot of fields marked as nullable that shouldn’t have been)
  • Remove some useless data (specifically the event type, which was always null)

Backend changes:

  • Fixed error logging
  • Cleaned up how the scraper was adding data
  • Added a postgres trigger that sends a postgres notification when data is changed (in preparation for scraping the RobotEvents WebSocket, live data, and push notifications)

Though I was focusing on the API and backend, I made some progress with the app, primarily rebuilding its architecture (This is my first flutter project, so I’ve been finding myself rewriting a lot of the components as I learn more about the framework)

- m

17 Likes

Are you planning to add support to see a specific team’s ranking sometime in the near future? I was thinking about adding a page on my team’s website that displays our world skills ranking.

2 Likes