Airdrome

emiljtemiljt Posts: 38
edited 2020-11-22 - 22:55:39 in General Discussion
Airdrome
Some time ago I started to see a number of posts about replacing the functionality of the old Obex website. A lot of people were complaining about how difficult git was to use or how they didn't want to learn a new system just to get an object for their project. As a web developer, I decided it would be a fun project to take on, as well as a good way to give back to the Parallax community.

It's taken months of free time (really not that much time in total, but I only get free time so often, so things progressed slowly), but I'm happy to announce that today (Nevada Day!) I've deployed the first beta version of Airdrome. This is a very beta version and will probably experience a lot of downtime as I get the infrastructure all dialed in. Things will stabilize quickly though. I'm not a big fan of using web forums for project updates, but I don't have a better option at the moment, so for the time being, I'll keep this post up to date with how things are going.

First off, I want to make it clean that this website isn't meant to replace the Parallax Obex repository or even compete with it; it's meant to compliment it. I'm not looking to divide the community or subvert Parallax's ability to control the object exchange. The site uses git to pull data from, and stay in sync with, the official Parallax Obex. Parallax has a lot on their hands right now with the P2, so my hope was to be helpful to them and the community.

Current status:
- Very beta, some would even say...alpha. You should be able to reach a working website more consistently now though. The infrastructure now contains a real, managed DB, and Docker containers that make horizontal scaling very easy, and deploys are now automated.
- The current front-end is optimized for mobile (sorry, just a web best practice, mobile first...), so it doesn't look exactly the way I want in the long run on desktop, but it does work fine and look okay. I know it's probably entirely useless on mobile, but hey, it's there.
- Logo and styling aren't on the currently deployed version. They are forthcoming though.

MVP
Here are my minimum plans for this site before version 1:
1. Allow users to search for objects by name, target platforms (P1, P2, BS2, etc.), language (PASM, C, etc.), category, and keywords.
2. Allow users to download a zip file containing the object they want.
3. Keep up to date with the official Parallax Obex.

Planned Features & Ideas
- Allow users to upload their objects as an automated way to submit their work to the Parallax Obex
- Provide statistical data for objects such as total downloads, upload date, last updated, etc.
- Allow for object versioning, including the ability to download different versions of an object.
- Allow users to "subscribe" to an object of interest so that they can stay informed about updates or changes from the author.
- Allow users to upload their own objects that aren't in the official Obex (e.g. an object developed in it's own GitHub repository or even some other ex).
- CLI tool that provides most of the websites functionality for those who prefer the command line or want to use it in CI.

How to contribute
There are a lot of ways you can help out with Airdrome.
1. Use it, give feedback, and report any bugs. I prefer to use GitHub issues to manage things since it keeps everything in one place, but I understand if you can only post here.
2. Code. The whole project is entirely open source and I welcome pull requests through GitHub.
3. In the future, I may consider opening up the project to donations to help cover the infrastructure costs. This wont be considered until the MVP is reached though.

Links
Web app: airdrome.org
Repository: https://github.com/emiljt/airdrome

Why the weird name?
I like airplanes. One of my other hobbies is RC vehicles, especially the flying kind. The Parallax Propeller is also the main force behind the Obex. An airdrome is a place for airplanes to come and go (an airport is an airdrome for example), so I thought it was a creative, unique name that had some meaning behind it (and one I could actually get a domain name for ;) ).

Why am I doing this?
I've been a long time user and admirer of Parallax's products (as many of us seem to be). I've always had a love for computers and electronics, especially robotics. In high school (or middle school? I can't remember) my mom bought me the original Sumobot kit, which was my first experience with Parallax. I instantly became a fan, and after discovering their drive to manufacture as much as they could here, in the United States, I became an ardent supporter. Unfortunately, I've haven't spent as much time as I would like getting to know the Propeller or even doing embedded development. My career so far has focused on the web side of things. Although this means I'm pretty much a complete n00b at a lot of the amazing things I see so many of you doing here on the forums, it did provide me with the opportunity to help out in other ways. So long story short, this is a not so amazing web developer/Parallax fan's way of contributing. Hopefully my time on this project helps you with yours.

Comments

  • This sure looks like it could be a useful tool.

    I attempted to vist airdrome.org and received a timeout error.
  • Yep, sorry again about that. Like I mentioned earlier, there will probably be some rough spots at the beginning, but I plan to invest pretty heavily in making it reliable for users.

    In the way of an update, I've got auto-build and deployments working, which saves a lot of developer time with changes and server management. I'm currently working on the SSL cert (should be good to go soon), and moving the backend database to a managed service (more expensive, but far more reliable and less time intensive).
  • Alright, I finally got the infrastructure moved over to the new platform with auto builds and deploys working. I've also added an SSL cert, so that should be working as well. There may be some delays while the DNS changes propagate.

    My next goal is getting the frontend updated and hooked up to the functioning backend; the current frontend is basically just a dummy standin version.
  • Just deployed the latest build of Airdrome. I've hooked up the search functionality of the front-end to the back-end, so now you should be able to search for objects and see the results. I also corrected a bug that prevented the server from recognizing objects that already exist in the system and trying to add them to the database again, causing an error. I also cleaned up a few things like references to the old "Aerodome" name, and filler data for the new objects and recently updated objects list on the front page.

    My next priorities are:
    - Adding the ability to download objects so that the site is actually useful in some way
    - Add some more field gathering to the code that parses the obex objects so that we have more information on each object
  • emiljt wrote: »
    My next priorities are:
    - Adding the ability to download objects so that the site is actually useful in some way
    - Add some more field gathering to the code that parses the obex objects so that we have more information on each object

    This sounds really cool. I'll keep watching for updates.

  • Just a small update, but one that will provide some very vital functionality to the web app. I've finished adding Backblaze B2 object storage to the app, so now we'll be able to store the many objects and versions of them on their very reliable servers. Airdrome's servers will handle packaging everything up and keeping track of things, but we'll no longer need to worry about storing the results. This is the second major milestone in providing the package downloads that are key to this whole project (the first one was the packaging of objects and their files, which is already done for zip). I still need to adding some versioning domain logic to the backend before we'll be able to actually serve up any object downloads, but it is by far the smallest step in the process of making this possible.
Sign In or Register to comment.