Hyperdoc project has born

A week has passed since the announcement of a pet project I was going to work on. A Serverless Content Repository. I have named the project Hyperdoc because I already own hyperdoc.io, which was another attempt to build a reactive content repository in Akka + Scala.

This is therefore the first report of the project status.

Photo by chuttersnap on Unsplash

Project structure

I have created a Git repository in my Github account and pushed the code I’ve written so far.

https://github.com/hyperdoc/hyperdoc

My idea is to build a serverless content repository that supports not only AWS, but other service providers. However, for now I’ll just focus in AWS. Node.js is supported by AWS and Azure, so it is the framework chosen to build the content repository. Python is supported in both too, but I am not proficient in that language.

The code is structured as following:

Photo by Igor Ovsyannykov on Unsplash

Service provider agnostic

In /core I am implementing most of the content repository logic. To keep it agnostic, I am defining some classes, like NodeStore, that must be extended and implemented for each service provider, like AWSNodeStore which is based on DynamoDB.

To initiate the content repository, you must pass an StoreRegistry, which will provide the repository with the service provider specific classes.

Interceptors

Each AWS Lambda function is wrapped within a super function that will execute some interceptor before and after executing the actual AWS Lambda function. This will be helpful to implement some interceptors to manage security.

Testing

Finally, to test everything is in place, I have defined a Node and some very basic services to manage them.