Shapeshifter - rollthecloudinc/hedge GitHub Wiki
Summary
The shapeshifter API is used to write non-relational data such as; JSON and image files to Github repositories. Data is enriched with automatic, organic version control, activity logging, and low latency access highly available distributed via Github pages websites. Data and files can be optionally indexed inside OpenSearch for advanced searching capabilities.
shapeshifter is part of the rtc vertigo low carbon dev toolkit
Download
Take data storage to the next level using our low carbon and carbon aware Github App. Once installed in a repo authorized users will be able to use the following API Catalog to save JSON Documents and media files directly to the Github repository.
https://github.com/apps/rtc-vertigo (preview – NON-FUNCTIONAL)
Features
Version Control
See exactly who, when, and what data changed.
Data becomes living breathing entity with full retention capabilities. No more loosing changes or needing to build your own change control and/or audit system. Its all right here in Github already.
Awareness and Activity Log
Data changes become organically part of activity within Github just like code changes.
Reduce App Api Request
Repositories that host user uploaded content can be included directly within builds. This provides the opportunity to eliminate trips to servers when data is needed. Data that is JSON can also be compiled directly into the JavaScript builds. Compiling data directly into builds can significantly reduce requests. This is the way all panel page entities are currently stored inside Druid. Druid works along side vertigo to deliver rapid development capabilities on top of platform architected from the very beginning with sustainability at center. Making it easy to produce low energy websites that run efficiently on infrastructure using renewable resources inside the cloud.
API Catalog
Entity API
This API is used to store JSON Documents.
| Method | URL | Description |
|---|---|---|
| POST | https://vertigo.druidcloud.io/{owner}/{repo}/shapeshifter/{path} | Create JSON Document entity |
| PUT | https://vertigo.druidcloud.io/{owner}/{repo}/shapeshifter/{path} | Update JSON Document entity |
| GET | https://vertigo.druidcloud.io/{owner}/{repo}/shapeshifter/{path} | Get JSON Document entity bypassing cache |
Use Case: https://classifieds-ui.com
Free market of goods, products and services on the sustainable web. Secure ecommerce that fast tracks healthy planetary growth and entrepreneurial aspirations.
Create classified ad.
Result: https://github.com/rollthecloudinc/classifieds-ui-objects-prod/tree/master/ads/realestate
{
"id" : "bc7816b7-bf8d-11ea-add0-5adf5261a303",
"images" : [ ],
"location" : [
-83.0604,
42.3474
],
"profileId" : "a6060999-b399-4f2a-9f7d-1e75d1a87c28",
"status" : 0,
"title" : "dwerwer",
"typeId" : "5665f5f8-5533-4aa1-96f4-b78e02714de0",
"attributes" : [
{
"attributes" : [ ],
"computedValue" : "10000",
"displayName" : "Asking Price",
"floatValue" : 0,
"intValue" : 10000,
"name" : "price",
"type" : 0,
"value" : "100,00.00"
},
{
"attributes" : [ ],
"computedValue" : "1",
"displayName" : "Beds",
"floatValue" : 0,
"intValue" : 1,
"name" : "beds",
"type" : 0,
"value" : "1"
},
{
"attributes" : [ ],
"computedValue" : "1",
"displayName" : "Baths",
"floatValue" : 0,
"intValue" : 1,
"name" : "baths",
"type" : 0,
"value" : "1"
},
{
"attributes" : [ ],
"computedValue" : "1234",
"displayName" : "Sqft",
"floatValue" : 0,
"intValue" : 1234,
"name" : "sqft",
"type" : 0,
"value" : "1234"
}
],
"cityDisplay" : "Detroit, Michigan (48201)",
"description" : "ewqewwr",
"featureSets" : [
{
"humanName" : "My new vocab 3",
"id" : "f85f312c-9bdc-11ea-8c16-4a848dc08ce4",
"machineName" : "my_new_cvocab 3",
"terms" : [ ],
"userId" : "e36b42fe-b09c-4514-a519-e178bb52957e"
}
]
}
Use Case: https://zingurus.com
Free exchange of media, thoughts, sarcasm and commentary without limits on the sustainable web. Strike lightening begin a storm and rain down free from the shackles of censorship.
Create a zing
Result: https://github.com/rollthecloudinc/zingurus-objects-prod/tree/master/zings
{
"id": "f6165d71-73bc-4b32-a0c0-a7ce268edfaa",
"target" : {
"url" : "https://cnn.com/whatever-story-link"
},
"comment" : "Some zinger about the story.",
"type" : "URL",
"ats" : [
{
"at" : "cnn"
}
],
"hashes" : [
{
"hash" : "cnn"
}
]
}
Media API
This API is used to store files like images below 100mb in size.
| Method | URL | Description |
|---|---|---|
| POST | https://vertigo.druidcloud.io/{owner}/{repo}/media/shapshifter/{path} | Upload file |
| GET | https://vertigo.druidcloud.io/{owner}/{repo}/media/shapshifter/{path} | Serve file bypassing cache |
Large Object API
This API will be used to store files above 100mb in size.
| Method | URL | Description |
|---|---|---|
| POST | https://vertigo.druidcloud.io/{owner}/{repo}/lo/shapshifter/{path} | Upload large file |
| GET | https://vertigo.druidcloud.io/{owner}/{repo}/lo/shapshifter/{path} | Serve large file bypassing cache |
Validation (future)
Github repos will be able to include optional json schema file used to validate incoming JSON data for entity api. Validation strategy will also be implemented for incoming media and large object files.
Authorization (future)
Github repos will be able to include optional json file with authorization rules to restrict operations to specific users or segment of users.
Notifications & Webhooks (future)
Github repos will be able to be wired-up to lifecycle push notifications via web sockets and web hooks.
Searching (future)
JSON documents and media files will be optionally indexes in open search. Open search dashboards will also be available for users to login and manage their own open search tenant.
NIST Compliance
Security controls for encoding data using key store, integration with private repositories, etc.
Anonymous Commits
Users will be able to open up specific paths in repo to unauthenticated users for storing things like submitted contact forms or anonymous surveys.
Best of all completely free but donations are welcomed.