Modify, Manage and Expose all your data from one place.

Graduate Project

Development

Nodejs

MongoDB

I've taken the site down but all can be viewed on my github.All related projects are pre-fixed with braid

In our final year of university we are tasked with the freedom, and job of making a project of our own choosing. If our supervisors give the go-ahead then we'll allowed to make it. From this Braid.io was born a service which is made from frustration and also as a concept is quite cool.

Braid is a service which allows you to manage, modify and expose all your data from one place. This data comes from other services which people use such as Youtube, or Soundcloud. It can also integrate with more personal services such as Google Drive or Dropbox. You'll given the ability to modify this content whereby you can attach new data to it. Depending on what modifier you've applied it will then change how you can interact with entries from the source of content you've provided.

By creating a system like braid, I'm hoping it is very much a case of give the people the tools and they will create. Mainly developers as you'll need to have experience with APIs. Long-term through there is a thought of releasing a widget platform where people can built their own widgets based on the data they have in braid to embed on their sites. Therefore making it much more accessible and more non-developer friendly.

Humble beginnings

Braid was first originally the idea of being another CMS, specifically for youtube actually. I think it's cool that you can use API's from services but it's sometimes frustrating when they don't choose to bake in features you wish they had.

My case was they didn't have specific tags or categories you could add and then make videos query-able by them. This isn't their fault it's up to them what they choose to put in their APIs and don't. Braid is actually a workaround to this. Instead of one service though, it was thought out to support a wide-range of services.

As of writing this braid actually one supports one service, and thats YouTube. The pure idea of braid is that we should be able to take content from popular content providers where people place their content and then be able to pull that in and manage it from one place.

Server Architecture

Braid is made up of three servers at the moment. One hosts and manages the management API, another hosts the Delivery API and the last server is the mongodb database where all the data is stored.

The thought behind this was purely for scalabality really. If demand goes up and a server starts receiving loads of requests. It will be helpful to be able to scale them up per a server dependant on the amount of requests.

Building Braid

Braid is built on nodejs and mongodb. More specifically each of the API servers are built around the express framework. Using middleware was definitely a smart way of building things and helped define and limit what each part of my servers did into neat modules. This allowed me to easily load in middleware if I needed to.

While making it I really learned a lot. Especially about express itself and middleware and how to build nice APIs. I rewrote the API endpoints several times before coming to a way of doing it that I really enjoyed. I had to learn status codes so I knew which ones to send back with the appropriate JSON data responses. It was a heck of a learning experience but it doesn't stop there.

To make it easier for people I also made a dashboard built on top of the very APIs I'd written. Currently as of writing this it's quite broken and not very functional. I know why, but simply haven't had time to fix immediately. The dashboard looks like the following.

The idea was that developers of different levels could either use the documentation and make their own requests. Or for ease of use use the dashboard. I know which one I would rather use. However being flexible is what I was going for.

To push myself I decided to write the dashboard in reactjs. I'd been meaning to play with it for a while and this was a perfect excuse. It performs very well and was quite easy to get up and running. I love how data tends to cascade down through components I think it's very powerful.

A swanky website

To go along with the dashboard an actual website was made that allows you to signup. Gives you access to the dashboard and also means you can then start making authenticated requests to the management API immediately. You can check it out at getbraid.io

Wrapping up

Learning how to make braid, and making braid has given me an enormous amount of new knowledge. I already knew some node and express knowledge but not on this much of a scale. Understanding how to write middleware and how valuable it was blew my mind. Reactjs and it's simple but componentised paradigm was also very refreshing. The idea of the single responsibility principle / modular design was very core to the idea of braid and it was reflected from the server architecture to the modules of code I've written.

Braid is still not done, I don't think it ever will be. From here I'd like to try and find contributors. I'm going to be working on it in my own time when I can. It's made of lots of parts. If you checkout my github, everything that is preceded with braid- will be part of braid.

Play with the prototype and try not to break it too much. Remember there is a live working version at getbraid.io and the documentation explains hopefully everything it needs to. Spot a problem or anything submit an issue on the braid docs repo and i'll fix it asap.

Now go forth, and modify all the things!