Hey, wanted to give an update.
Currently, Dynamic has been hard at work stylizing the crowdfunding/main website that we plan on launching on Feb 16th when we kick off the crowdfunding process. We'll be looking to get some Twitter activity going soon which means setting up our initial Twitter account and then getting some sort of campaign going relatively soon.
While Dynamic has been working on this, Shaikat and myself have been working on the server-side of things for Phase I - III as well as doing research on how to tackle some of the important issues in Phase IV which involves decentralizing the platform. Everything client-side is done through a web sockets API which not only alleviates a load from the server having to be the one to create the final render of the html but it makes the client a lot more robust and flexible in terms of easily being able to simply change the api endpoint. This means even though we're currently developing in a centralized testing environment, the client-side code we develop should be entirely reusable with decentralized gateways in the future.
Confused as to who some of the names I mentioned above are? Join the Discord:
https://discord.gg/PtXzUVrHere's some code from some of the testing we've been doing, it's nothing fancy but should give you an idea of the direction we're headed if you're a developer.
var gateway = $.connection.gatewayHub;
novus.initialize();
$.connection.hub.start().done(function () {
// define some arbitrary user define meta data...
var testMeta =
{
"Backdrop": "",
"Poster": "",
"Genres": ["Action", "Animated"],
"ReleaseDate": "2017-02-10",
"Runtime": 20.0,
"VideoType": 2,
"Title": "Xintel",
"Type": "video",
"Hash": "QmU3o9bvfenhTKhxUakbYrLDnZU7HezAVxPM6Ehjw9test",
"Description": "Sintel"
};
// a bit hacky atm... but this will be improved later.
var query = [
['WHERE', 'JsonValue', '$.Title', '~=', 'Xin'], // title contains
['WHERE', 'JsonValue', '$.VideoType', '=', '2'], // video is movie
['ORDERBY_IN', 'JsonQuery', '$.Genres', 'DESC', 'Action', 'Mystery']
];
gateway.server.addIndexedFile(JSON.stringify(testMeta))
.done(function (result) {
console.log(result);
if (result == 'Added') {
// successful, ok lets search for it!
gateway.server.searchQuery(query)
.done(function (data) {
// print search results
for (var i = 0; i < data.length; i++) {
var obj = JSON.parse(data[i]);
console.log(obj);
}
});
}
});
});
So a few things are going on here which is when a user adds a file, meta data is supplied with it. The most minimalist form of meta data is currently defined as an object containing these fields,
public class FileMetaData
{
public string Title { get; set; }
public string Type { get; set; }
public string Hash { get; set; }
public string Description { get; set; }
public string PreferredNode { get; set; }
}
however, above you can see we've defined a supplementary data structure which builds upon this and extends it more so resembling
public enum VideoMetaDataType
{
Other,
Episodes,
Film
}
public class VideoMetaData : FileMetaData
{
public string Backdrop { get; set; }
public string Poster { get; set; }
public string[] Genres { get; set; }
public DateTime? ReleaseDate { get; set; }
public decimal? Runtime { get; set; }
public VideoMetaDataType VideoType { get; set; }
}
the point is that a user can define the meta data in any way shape or form and there's no true "structure" to it. Given they can define it however they want, they can then build a SFSI (Specific File Search Index) based around their defined schema. We'll of course be defining some standards to follow for typical formats but the system will be robust enough that a developer should be able to index whatever content they want, however they want.
Reminder that crowdfunding starts on February the 16th.
Thanks for your support!