Introducing Zuuljs: Conditional Access Manager for Your Particle Devices

Hey All,

I have been tinkering around on a side project for little while now, and it is now stable enough to share. Zuul gives you the ability to give conditional access to particle devices via keys with date, time, and access frequency limits.

Zuul is opensource and can be found here
The project’s Hackster.io page can be found here

I was making a small web app for a door lock and decided the effort was best spent making something more generalized. I wanted to be able to make a lock for my buddy (who has no electronics experience) that would allow him to give access to friends/family with certain restrictions. Maybe he wanted to only give access for one month, or only during the day, or only a few times each week, or even some combination of all of those. Zuul was born from this need.

Have a look at the README or the hackster page to get an idea of what it’s all about.

Zuuljs.com is currently up if you’d like to try it out. The build works pretty much out of the box on Openshift, so if you’d like, definitely clone the github repo and push up your own copy. You’ll need node, mysql, and mongo cartridges, and you’ll need to run the db create script (./config/zuul-create.sql) on the mysql instance.

I have a lot more planned with Zuul. it’s still very much in development. I have ideas on where I’d like it to go, but if this is useful to others I am more than open to veering course to make it more broadly useful.

This was a large learning experience for myself as well, explored a lot of new concepts while making this. That being said if you see something out of wack, a security flaw, or something that could be improved please please please tell me. Some less than ideal design choices were made in the interest of rapid prototyping and protecting my mental health. Now that things are in a more stable place I plan on doing quite a bit of cleanup and removal of redundant code.

If you’d like to help contribute that would be rad, though my time is pretty limited at the moment so close collaboration is difficult for me at the moment.

My project site is located at TinkerTamper.com if you’d like to reach out or learn more. Let me know what you guys think!

13 Likes

I forgot to mention that I tried to keep the design of the site incredibly simple so it would display on as many devices as possible. I ensured it worked on my kindle, so I can turn my lamp off before going to bed.

Additionally I wanted to mention I used websockets on this project so the speeds are great and the interface actually responds when someone else manipulates the device. Additionally I did a bit of work to artificially speed up some things by through some optimistic loading. This is really going to pay off when I add the Variables module.

4 Likes

This is freakin’ awesome! Really impressive work, love the thinking behind it.

2 Likes

Phew, someone replied haha. Thanks! I lurk a lot on this forum and everyone’s so helpful I wanted to give back some how. Still a WIP, and a good amount of code to clean up, but it works well.

3 Likes

Great stuff @zuul!!

Note; Your HTTP POST info is sent over HTTP, maybe consider implementing SSL. Have a look at letsencrypt or StartSSL to obtain a free certificate.

3 Likes

Thanks!

Funny enough, I am currently making moves to do so right now. That’s been a pretty high on the list, among other things. Trying to iron everything out has taken the most time, your CISSP brain is much envied and valued. If you notice anything that could help make things more secure let me know, (albeit maybe over DM if it’s terrible) I’d like to keep the ship tight!

HTTPS can be accessed through https://zuuljs-twalch.rhcloud.com, I need to figure out some domain tricks to get this working on zuuljs.com. Will spend this weekend investigating.

1 Like