diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 27d2dae..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*/node_modules
-*.log
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index fb1087c..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-.DS_Store
-
-node_modules
-
-lib/core/metadata.js
-lib/core/MetadataBlog.js
-
-website/translated_docs
-website/build/
-website/yarn.lock
-website/node_modules
-website/i18n/*
-
-.vscode
\ No newline at end of file
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..21c9bd9
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+dropkit.org
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index c7f1856..0000000
--- a/Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM node:lts
-
-WORKDIR /app/website
-
-EXPOSE 3000 35729
-COPY ./docs /app/docs
-COPY ./website /app/website
-RUN yarn install
-
-CMD ["yarn", "start"]
diff --git a/css/main.css b/css/main.css
new file mode 100644
index 0000000..3a37653
--- /dev/null
+++ b/css/main.css
@@ -0,0 +1 @@
+a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{border:0;font:inherit;font-size:100%;margin:0;padding:0;vertical-align:baseline}body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;word-wrap:break-word}*{box-sizing:border-box}b,strong{font-weight:600}em,i{font-style:italic}[type=checkbox]{box-sizing:border-box;padding:0}a,a:hover{color:#204b7e;text-decoration:none}a:active,a:hover{outline-width:0}a:not([href]){color:inherit;text-decoration:none}p{margin-bottom:1em;margin-top:0}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:1.5em}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}h5{font-size:14px}h6{font-size:13.6px}ol,ul{margin-bottom:1em;margin-top:0;padding-left:2em}ol ol,ul ol{list-style-type:lower-roman}ol ol,ol ul,ul ol,ul ul{margin-bottom:0;margin-top:0}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}li{word-wrap:break-all}li>p{margin-top:1em}li+li{margin-top:.25em}img{border-style:none;box-sizing:content-box;max-width:100%}img[align=right]{padding-left:1.25em}img[align=left]{padding-right:1.25em}table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:16px;margin-top:0;overflow:auto;width:100%}table tr{background-color:transparent;border-top:1px solid #dfe2e5}table tr:nth-child(2n){background-color:#f6f8fa}table td,table th{border:1px solid #dfe2e5;padding:6px 13px}table th{background-color:inherit;font-weight:600}table td,table th{color:inherit}blockquote{color:#6a737d;font-size:16px;margin:0 0 16px;padding:0 1em}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}code{background-color:rgba(27,31,35,.05);border-radius:3px;color:inherit;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:85%;margin:0;padding:3.2px 6.4px}pre{margin-bottom:16px}pre code{background-color:transparent;border:0;display:inline;font-size:85%;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;white-space:pre;word-break:normal;word-wrap:normal}kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:68.75%;line-height:10px;padding:3px 5px;vertical-align:middle}hr{border:1px solid #dfe2e5;box-sizing:content-box;margin:1.5em 0;overflow:hidden;padding:0}hr:after,hr:before{content:"";display:table}hr:after{clear:both}body{background-color:#fff;min-height:100vh;text-rendering:optimizeLegibility}@media only screen and (min-width:736px){body{display:flex;flex-direction:column}}article:after,article:before{content:"";display:table}article:after{clear:both}article>:first-child{margin-top:0}article>:last-child{margin-bottom:0}article iframe,article p img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.anchor{display:block;position:relative;top:-80px}.hash-link{line-height:1;margin-left:-20px;opacity:0;padding-right:4px;transition:opacity .3s}.hash-link:hover{opacity:1!important;transition:none}.hash-link .hash-link-icon{vertical-align:middle}.button{border:1px solid #204b7e;border-radius:3px;color:#204b7e;display:inline-block;font-size:14px;font-weight:400;line-height:1.2em;padding:10px;text-decoration:none!important;text-transform:uppercase;transition:background .3s,color .3s}.button:hover{background:#204b7e;color:#fff}h1:hover .hash-link,h2:hover .hash-link,h3:hover .hash-link,h4:hover .hash-link{opacity:.5;transition:none}blockquote{background-color:rgba(255,229,100,.3);border-left:8px solid #ffe564;padding:15px 30px 15px 15px}.wrapper{margin:0 auto;max-width:1100px;padding:0 20px}.wrapper blockquote>p:first-child{padding-top:0}.center{display:block}.center,.homeContainer{text-align:center}.homeContainer .homeWrapper{padding:2em 10px}.homeContainer .homeWrapper .wrapper{margin:0 auto;max-width:900px;padding:0 20px}.homeContainer .homeWrapper .projectLogo img{height:100px;margin-bottom:0}.homeContainer .homeWrapper #project_title{font-size:300%;letter-spacing:-.08em;line-height:1em;margin-bottom:80px}.homeContainer .homeWrapper #project_tagline{font-size:200%;letter-spacing:-.04em;line-height:1em}.projectLogo{display:none;pointer-events:none}.projectLogo img{height:100px;margin-bottom:0}.projectIntro{margin:40px 0}.projectTitle{color:#204b7e;font-size:250%;line-height:1em}.projectTitle>small{display:block;font-weight:400;font-size:50%;line-height:1em;margin:.7em 0 1.3em}@media only screen and (min-width:480px){.projectTitle{font-size:300%;margin:.3em 0}.projectLogo img{height:200px;margin-bottom:10px}.homeContainer .homeWrapper{padding-left:10px;padding-right:10px}}@media only screen and (min-width:736px){.homeContainer .homeWrapper{position:relative}.homeContainer .homeWrapper #inner{max-width:600px;padding-right:40px}}@media only screen and (min-width:1200px){.homeContainer .homeWrapper #inner{max-width:750px}.homeContainer .homeWrapper .projectLogo{align-items:center;bottom:0;display:flex;justify-content:flex-end;left:0;padding:2em 100px 4em;position:absolute;right:0;top:0}.homeContainer .homeWrapper .projectLogo img{height:100%;max-height:250px}}@media only screen and (min-width:1500px){.homeContainer .homeWrapper #inner{max-width:1100px;padding-bottom:40px;padding-top:40px}.wrapper{max-width:1400px}}.mainContainer{flex:1 1 0%;max-width:100%;padding:40px 0}.mainContainer .wrapper{text-align:left}.mainContainer .wrapper .allShareBlock{padding:10px 0}.mainContainer .wrapper .allShareBlock .pluginBlock{margin:12px 0;padding:0}.mainContainer .wrapper .post{position:relative}.mainContainer .wrapper .post.basicPost{margin-top:30px}.mainContainer .wrapper .post .postHeader{margin-bottom:16px}.mainContainer .wrapper .post .postHeaderTitle{margin-top:0;padding:0}.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:90px;margin-top:-90px;visibility:hidden;pointer-events:none}.mainContainer .wrapper .post .postSocialPlugins{padding-top:1em}.mainContainer .wrapper .post .docPagination{background:#204b7e;bottom:0;left:0;position:absolute;right:0}.mainContainer .wrapper .post .docPagination .pager{display:inline-block;width:50%}.mainContainer .wrapper .post .docPagination .pagingNext{float:right;text-align:right}.mainContainer .wrapper .post .docPagination a{border:none;color:#fff;display:block;padding:4px 12px}.mainContainer .wrapper .post .docPagination a:hover{background-color:#f9f9f9;color:#393939}.mainContainer .wrapper .post .docPagination a .pagerLabel{display:inline}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:none}@media only screen and (min-width:480px){.mainContainer .wrapper .post .docPagination a .pagerLabel{display:none}.mainContainer .wrapper .post .docPagination a .pagerTitle{display:inline}}@media only screen and (min-width:1024px){.mainContainer .wrapper .post{display:block}.mainContainer .wrapper .posts .post{width:100%}}@media only screen and (max-width:1023px){.docsContainer .wrapper .post .postHeader:before,.docsContainer .wrapper .post .postHeaderTitle:before{content:"";display:block;height:200px;margin-top:-200px;visibility:hidden;pointer-events:none}}.fixedHeaderContainer{background:#204b7e;color:#fff;min-height:50px;padding:8px 0;position:fixed;width:100%;z-index:9999;transform:translateZ(0)}@media only screen and (min-width:1024px){.fixedHeaderContainer{flex-shrink:0}}.fixedHeaderContainer a{align-items:center;border:0;color:#fff;display:flex;flex-flow:row nowrap;height:34px;z-index:10000}.fixedHeaderContainer header{display:flex;flex-flow:row nowrap;position:relative;text-align:left}.fixedHeaderContainer header img{height:100%;margin-right:10px}.fixedHeaderContainer header .headerTitle{font-size:1.25em;margin:0}.fixedHeaderContainer header .headerTitleWithLogo{display:block;font-size:1.25em;line-height:18px;margin:0;position:relative;z-index:9999}.fixedHeaderContainer header h3{color:#fff;font-size:16px;margin:0 0 0 10px;text-decoration:underline}@media (max-width:480px){.headerTitle{font-size:17px}.headerTitleWithLogo{display:none!important}}.promoSection{display:flex;flex-flow:column wrap;font-size:125%;line-height:1.6em;position:relative;z-index:99}.promoSection .promoRow{padding:10px 0}.promoSection .promoRow .pluginWrapper{display:block}.promoSection .promoRow .pluginWrapper.ghStarWrapper,.promoSection .promoRow .pluginWrapper.ghWatchWrapper{height:28px}.promoSection .promoRow .pluginRowBlock{display:flex;flex-wrap:wrap;justify-content:center;margin:0 -2px}.promoSection .promoRow .pluginRowBlock .pluginWrapper{padding:0 2px}.promoSection .promoRow .pluginRowBlock iframe{margin-left:2px;margin-top:5px}input[type=search]{-moz-appearance:none;-webkit-appearance:none}.navSearchWrapper{align-items:center;align-self:center;display:flex;justify-content:center;padding-left:10px;position:absolute;right:10px;top:10px}.navSearchWrapper:before{border:3px solid #e5e5e5;border-radius:50%;content:" ";display:block;height:6px;left:15px;position:absolute;top:50%;transform:translateY(-58%);width:6px;z-index:1}.navSearchWrapper:after{background:#e5e5e5;content:" ";height:7px;left:24px;position:absolute;top:55%;transform:rotate(-45deg);width:3px;z-index:1}.navSearchWrapper .aa-dropdown-menu{background:#f9f9f9;border:3px solid rgba(57,57,57,.25);color:#393939;font-size:14px;left:auto!important;line-height:1.2em;right:0!important}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header{background:#204b7e;color:#fff;font-size:14px;font-weight:400}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#204b7e;color:#fff}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--title .algolia-docsearch-suggestion--highlight{color:#204b7e}.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion--subcategory-column,.navSearchWrapper .aa-dropdown-menu .algolia-docsearch-suggestion__secondary{border-color:rgba(57,57,57,.3)}input#search_input_react{background-color:rgba(0,0,0,.2);border:none;border-radius:20px;color:#fff;font-size:14px;font-weight:300;line-height:20px;outline:none;padding-left:25px;position:relative;transition:width .5s ease;width:170px}.navSearchWrapper:before{left:24px}.navSearchWrapper:after{left:35px}input#search_input_react:active,input#search_input_react:focus{color:#fff;width:220px}.navigationSlider .slidingNav .navSearchWrapper .algolia-docsearch-footer a{height:auto}@media only screen and (max-width:735px){.navSearchWrapper{width:40%}}input::-webkit-input-placeholder{color:#e5e5e5}input::-moz-placeholder{color:#e5e5e5}input:-ms-input-placeholder{color:#e5e5e5}input::-ms-input-placeholder{color:#e5e5e5}input::placeholder{color:#e5e5e5}.hljs{padding:1.25rem 1.5rem}.gridBlock{padding:0}.gridBlock>*{box-sizing:border-box}.gridBlock .fourByGridBlock img,.gridBlock .threeByGridBlock img,.gridBlock .twoByGridBlock img{max-width:100%}.gridBlock .gridClear{clear:both}@media only screen and (max-width:735px){.gridBlock .fourByGridBlock{flex:1 0 26%}}@media only screen and (min-width:736px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}.gridBlock>*{margin:0 12px}.gridBlock>:first-child{margin-left:0}.gridBlock>:last-child{margin-right:0}.gridBlock .twoByGridBlock{flex:1 0 40%}.gridBlock .threeByGridBlock{flex:1 0 26%}.gridBlock .fourByGridBlock{flex:1 0 20%}h2+.gridBlock{padding-top:20px}}@media only screen and (min-width:1400px){.gridBlock{display:flex;flex-direction:row;flex-wrap:wrap}}.alignCenter{text-align:center}.alignRight{text-align:right}.imageAlignSide{display:flex;flex-flow:row wrap}.blockImage{max-width:730px}.imageAlignSide .blockImage{flex:0 1 500px;max-width:500px}@media only screen and (max-width:735px){.imageAlignSide .blockImage{display:none}}.imageAlignSide .blockContent{flex:1 1}.imageAlignBottom .blockImage{margin:0 auto 20px;max-width:730px}.imageAlignBottom.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignTop .blockImage{margin-bottom:20px;max-width:80px}.imageAlignTop.alignCenter .blockImage{margin-left:auto;margin-right:auto}.imageAlignRight .blockImage{margin-left:40px}.imageAlignLeft .blockImage{margin-right:40px}.container .gridBlock .blockContent p{padding:0}.container .wrapper .alignCenter h2{text-align:center}.container .wrapper .imageAlignSide h2{text-align:left}.container .wrapper .imageAlignSide p{margin:0 0 40px;max-width:560px}.highlightBackground{background:rgba(153,66,79,.7);color:#fff}.highlightBackground a{font-weight:800}.container.highlightBackground .wrapper h1,.container.highlightBackground .wrapper h2,.container.highlightBackground .wrapper h3,.container.highlightBackground .wrapper h4,.container.highlightBackground .wrapper h5,.highlightBackground a{border-color:#fff;color:#fff}.lightBackground{background:#f7f7f7}.darkBackground{background:grey;color:#fff}.darkBackground a,.darkBackground code{color:#d6b3b8}.container.darkBackground .wrapper h1,.container.darkBackground .wrapper h2,.container.darkBackground .wrapper h3,.container.darkBackground .wrapper h4,.container.darkBackground .wrapper h5{border-color:#fff;color:#fff}.container.paddingAll{padding:40px}.container.paddingBottom{padding-bottom:80px}.container.paddingLeft{padding-left:40px}.container.paddingRight{padding-right:40px}.container.paddingTop{padding-top:80px}@media only screen and (max-width:735px){.container.paddingBottom{padding-bottom:40px}.container.paddingTop{padding-top:20px}}@media only screen and (max-width:1023px){.responsiveList .blockContent{position:relative}.responsiveList .blockContent>div{padding-left:20px}.responsiveList .blockContent:before{content:"\2022";position:absolute}}.navigationSlider .navSlideout{cursor:pointer;padding-top:4px;position:absolute;right:10px;top:0;transition:top .3s;z-index:101}.navigationSlider .slidingNav{bottom:auto;box-sizing:border-box;left:0;position:fixed;right:0;top:0}.navigationSlider .slidingNav.slidingNavActive{height:auto;padding-top:42px;width:300px}.navigationSlider .slidingNav ul{background:#462769;box-sizing:border-box;color:#fff;display:flex;flex-wrap:nowrap;list-style:none;margin-top:50px;padding:0;width:100%}.navigationSlider .slidingNav.slidingNavActive ul{display:block}.navigationSlider .slidingNav ul li{flex:1 1 auto;margin:0;text-align:center;white-space:nowrap}.navigationSlider .slidingNav ul li a{align-items:center;box-sizing:border-box;color:#204b7e;color:inherit;display:flex;font-size:.9em;height:auto;height:50px;justify-content:center;margin:0;padding:10px;transition:background-color .3s}.navigationSlider .slidingNav ul li.siteNavGroupActive>a,.navigationSlider .slidingNav ul li.siteNavItemActive>a,.navigationSlider .slidingNav ul li>a:focus,.navigationSlider .slidingNav ul li>a:hover{background-color:#204b7e}.languages-icon{width:20px}#languages-dropdown{pointer-events:none;position:absolute;width:100%}#languages-dropdown.visible{display:flex}#languages-dropdown.hide{display:none}#languages-dropdown-items{background-color:#204b7e;display:flex;flex-direction:column;min-width:120px;pointer-events:all}#languages li{display:block}.navPusher{left:0;min-height:100%;padding-top:100px;position:relative;z-index:99}.singleRowMobileNav.navPusher{padding-top:50px}.navPusher:after{background:rgba(0,0,0,.4);content:"";height:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .5s,width .1s .5s,height .1s .5s;width:0}@media screen and (min-width:1024px){.navPusher{display:flex;flex-direction:column;min-height:calc(100vh - 50px);padding-top:50px}.navPusher,.navPusher>:first-child{flex-grow:1}}.sliderActive .navPusher:after{height:100%;opacity:1;transition:opacity .5s;width:100%;z-index:100}@media only screen and (max-width:1024px){.reactNavSearchWrapper input#search_input_react{background-color:rgba(242,196,178,.25);border:none;border-radius:20px;box-sizing:border-box;color:#393939;font-size:14px;line-height:20px;outline:none;padding-left:38px;position:relative;transition:background-color .2s cubic-bezier(.68,-.55,.265,1.55),width .2s cubic-bezier(.68,-.55,.265,1.55),color .2s ease;width:100%;height:30px}.reactNavSearchWrapper input#search_input_react:active,.reactNavSearchWrapper input#search_input_react:focus{background-color:#204b7e;color:#fff}.reactNavSearchWrapper .algolia-docsearch-suggestion--subcategory-inline{display:none}.reactNavSearchWrapper>span{width:100%}.reactNavSearchWrapper .aa-dropdown-menu{font-size:12px;line-height:2em;padding:0;border-width:1px;min-width:500px}.reactNavSearchWrapper .algolia-docsearch-suggestion__secondary{border-top:none}.aa-suggestions{min-height:140px;max-height:60vh;-webkit-overflow-scrolling:touch;overflow-y:scroll}#languages-dropdown{left:0;top:50px}#languages-dropdown-items{background-color:#204b7e;display:flex;flex-direction:row}}@media only screen and (min-width:1024px){.navSearchWrapper{padding-left:10px;position:relative;right:auto;top:auto}.reactNavSearchWrapper input#search_input_react{height:100%;padding-top:8px;padding-bottom:8px;padding-left:38px}.navSearchWrapper .algolia-autocomplete{display:block}.navigationSlider{height:34px;margin-left:auto;position:relative}.navigationSlider .navSlideout{display:none}.navigationSlider nav.slidingNav{background:none;height:auto;position:relative;right:auto;top:auto;width:auto}.navigationSlider .slidingNav ul{background:none;display:flex;flex-flow:row nowrap;margin:0;padding:0;width:auto}.navigationSlider .slidingNav ul li a{border:0;color:hsla(0,0%,100%,.8);display:flex;font-size:16px;font-size:1em;font-weight:300;height:32px;line-height:1.2em;margin:0;padding:6px 10px}.navigationSlider .slidingNav ul li.siteNavGroupActive a,.navigationSlider .slidingNav ul li.siteNavItemActive a,.navigationSlider .slidingNav ul li a:hover{color:#fff}}@media only screen and (max-width:735px){.navigationSlider .slidingNav ul{overflow-x:auto}.navigationSlider .slidingNav ul::-webkit-scrollbar{display:none}.reactNavSearchWrapper .aa-dropdown-menu{min-width:400px}}@media only screen and (max-width:475px){.reactNavSearchWrapper .aa-dropdown-menu{min-width:300px}}.docMainWrapper .wrapper{padding-left:0;padding-right:0;padding-top:10px}@media only screen and (min-width:1024px){.docMainWrapper{width:100%}.docMainWrapper>*{margin:0 24px}.docMainWrapper>:first-child{margin-left:0}.docMainWrapper>:last-child{margin-right:0}.docMainWrapper .mainContainer{min-width:0}}.edit-page-link{float:right;font-size:10px;font-weight:400;margin-top:3px;text-decoration:none}@media only screen and (max-width:1023px){.edit-page-link{display:none}}.docLastUpdate{font-size:13px;font-style:italic;margin:20px 0;text-align:right}.docs-prevnext{margin:20px 0}.docs-prevnext:after{clear:both;content:" ";display:table}.docs-next{float:right}.docs-prev{float:left}@media only screen and (max-width:735px){.docs-next{clear:both;float:left}.docs-next,.docs-prev{margin:10px 0}.arrow-next{float:right;margin-left:10px}.arrow-prev{float:left;margin-right:10px}.function-name-prevnext{width:200px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hide{display:none}.collapsible{cursor:pointer}.collapsible .arrow{float:right;margin-right:8px;margin-top:-4px;transform:rotate(90deg);transition:transform .2s linear}.collapsible .arrow.rotate{transform:rotate(180deg)}@media only screen and (max-width:1023px){.docsNavContainer{background:#fff;left:0;position:fixed;width:100%;z-index:100}}@media only screen and (min-width:1024px){.docsNavContainer{flex:0 0 240px;height:calc(100vh - 50px);position:-webkit-sticky;position:sticky;overflow-y:auto;top:50px}}.docsSliderActive.docsNavContainer{box-sizing:border-box;height:100%;-webkit-overflow-scrolling:touch;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding-bottom:50px}.docsNavContainer .toc .navBreadcrumb{background-color:#f1f1f1;box-sizing:border-box;display:flex;flex-flow:row nowrap;font-size:12px;height:48px;overflow:hidden;padding:8px 20px}.docsNavContainer .toc .navWrapper{padding:0}@media only screen and (min-width:1024px){.docsNavContainer .toc .navBreadcrumb{display:none}.navBreadcrumb h2{padding:0 10px}.separateOnPageNav .docsNavContainer{flex:0 0 240px}}.navBreadcrumb a,.navBreadcrumb span{border:0;color:#393939}@media only screen and (max-width:735px){.anchor{top:-144px}}@media only screen and (min-width:1024px){.toc{padding:40px 0}}.toc section{padding:0;position:relative}.toc section .navGroups{display:none;padding:48px 20px 60px}.toc .toggleNav{color:#393939;position:relative}.toc .toggleNav .navToggle{cursor:pointer;height:32px;margin-right:10px;position:relative;text-align:left;width:18px}.hamburger-menu{position:absolute;top:6px;width:100%}.line1,.line2,.line3{width:100%;height:3px;background-color:#393939;margin:3px 0;transition:.4s;border-radius:10px}.docsSliderActive .hamburger-menu{top:12px}.docsSliderActive .line1{position:absolute;top:50%;transform:rotate(-45deg)}.docsSliderActive .line2{display:none}.docsSliderActive .line3{position:absolute;top:50%;transform:rotate(45deg)}.toggleNav h2 i{padding:0 4px}.toc .toggleNav .navGroup{margin-bottom:16px}.toc .toggleNav .subNavGroup{margin-bottom:0}.toc .toggleNav .navGroup .navGroupCategoryTitle{color:#393939;font-size:18px;font-weight:500;line-height:1.2em;margin-bottom:8px;margin-top:0}.toc .toggleNav .navGroup .navGroupSubcategoryTitle{color:#393939;font-size:14px;font-weight:500;line-height:1.5;margin-bottom:0;margin-top:0;padding:4px 0}.toc .toggleNav .navGroup .navListItem{margin:0}.toc .toggleNav .navGroup h3 i:not(:empty){box-sizing:border-box;color:rgba(57,57,57,.5);display:inline-block;height:16px;margin-right:10px;text-align:center;transition:color .2s;width:16px}.toc .toggleNav ul{padding:0 8px}.docsSliderActive .toc .toggleNav ul{padding-left:0}.toc .toggleNav ul li{list-style-type:none;padding:0}.toc .toggleNav ul li a{border:none;color:#717171;display:block;font-size:14px;padding:4px 0;transition:color .3s}.toc .toggleNav ul li.navListItemActive a,.toc .toggleNav ul li a:focus,.toc .toggleNav ul li a:hover{color:#204b7e}.docsSliderActive .toc .navBreadcrumb,.tocActive .navBreadcrumb{border-bottom:1px solid #ccc;margin-bottom:20px;position:fixed;width:100%}.toc .toggleNav .navBreadcrumb h2{border:0;flex-grow:1;font-size:16px;font-weight:600;line-height:32px;margin:0;padding:0}.docsSliderActive .toc section .navGroups{display:block;padding-top:60px}.tocToggler{cursor:pointer;height:32px;line-height:32px;margin-right:-10px;padding:0 10px}.icon-toc{box-sizing:border-box;display:inline-block;line-height:normal;position:relative;top:-1px;vertical-align:middle}.icon-toc,.icon-toc:after,.icon-toc:before{background-color:currentColor;border:1px solid;border-radius:50%;box-sizing:border-box;height:4px;width:4px}.icon-toc:after,.icon-toc:before{content:"";position:absolute}.icon-toc:before{left:-1px;top:-7px}.icon-toc:after{left:-1px;top:5px}.tocActive .icon-toc{border-radius:0;height:16px;transform:rotate(45deg);width:3px}.tocActive .icon-toc:before{border-radius:0;height:3px;left:50%;top:50%;transform:translate(-50%,-50%);width:16px}.tocActive .icon-toc:after{content:""}@media only screen and (min-width:1024px){.docMainWrapper{display:flex;flex-flow:row nowrap}.docMainWrapper .wrapper{padding-top:0;padding-left:0;padding-right:0}}.onPageNav{display:none;margin-bottom:40px}.onPageNav::-webkit-scrollbar{width:7px}.onPageNav::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.onPageNav::-webkit-scrollbar-thumb:hover{background:#555}.onPageNav a{color:#717171}.onPageNav .toc-headings>li>a.active,.onPageNav .toc-headings>li>a.hover{font-weight:600;color:#204b7e}.onPageNav ul{list-style:none}.onPageNav ul li{font-size:12px;line-height:16px;padding-bottom:8px}.onPageNav ul ul{padding:8px 0 0 20px}.onPageNav ul ul li{padding-bottom:5px}@media only screen and (min-width:1024px){.toc section .navGroups{display:block;padding:8px 0 0}.navBreadcrumb h2{padding:0 10px}}@supports ((position: -webkit-sticky) or (position: sticky)){@media only screen and (max-width:1023px){.tocActive .onPageNav{background:#fff;bottom:0;display:block;left:0;overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding:0 20px;position:fixed;right:0;top:148px;z-index:10;margin-bottom:0}.tocActive .singleRowMobileNav .onPageNav{top:98px}.tocActive .navBreadcrumb h2,.tocActive .navToggle{visibility:hidden}.tocActive .onPageNav>.toc-headings{padding:12px 0}}@media only screen and (min-width:1024px){.separateOnPageNav .headerWrapper.wrapper,.separateOnPageNav .wrapper{max-width:1400px}.separateOnPageNav .toc{width:auto}.separateOnPageNav.sideNavVisible .navPusher .mainContainer{flex:1 auto;max-width:100%;min-width:0}.onPageNav{align-self:flex-start;display:block;flex:0 0 240px;max-height:calc(100vh - 90px);overflow-y:auto;position:-webkit-sticky;position:sticky;top:90px}.onPageNav>.toc-headings{border-left:1px solid #e0e0e0;padding:10px 0 2px 15px}.tocToggler{display:none}}}.blog .wrapper{max-width:1100px}.blogContainer .posts .post{border-bottom:1px solid #e0e0e0;border-radius:3px;margin-bottom:20px;padding-bottom:20px}.blogContainer .postHeader{margin-bottom:10px}.blogContainer .postHeaderTitle{margin-top:0}.blogContainer .postHeader p.post-meta{margin-bottom:10px;padding:0}.blogContainer .postHeader .authorBlock{display:flex}.blogContainer .postHeader .post-authorName{color:rgba(57,57,57,.7);display:flex;flex-direction:column;font-size:14px;font-weight:400;justify-content:center;margin-right:10px;margin-top:0;margin-bottom:0;padding:0}.blogContainer .postHeader .authorPhoto{border-radius:50%;height:30px;overflow:hidden;width:30px}.blogContainer .postHeader .authorPhoto.authorPhotoBig{height:50px;width:50px}.blog-recent{margin:20px 0}.blog-recent>a{float:left}@media only screen and (max-width:735px){.blog-recent{height:40px}}.blogSocialSection{display:block;padding:36px 0}.blogSocialSection .blogSocialSectionItem{padding-bottom:5px}.fb-like{display:block;margin-bottom:20px;width:100%}.more-users{margin:0 auto;max-width:560px;text-align:center}.productShowcaseSection{padding:0 20px;text-align:center}.productShowcaseSection.paddingTop{padding-top:20px}.productShowcaseSection.paddingBottom{padding-bottom:80px}.productShowcaseSection h2{color:#204b7e;font-size:30px;line-height:1em;margin-top:20px;padding:10px 0;text-align:center}.productShowcaseSection p{margin:0 auto;max-width:560px;padding:.8em 0}.productShowcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center;padding:20px}.productShowcaseSection .logos img{max-height:110px;padding:20px;width:110px}@media only screen and (max-width:735px){.productShowcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.showcaseSection{margin:0 auto;max-width:900px}.showcaseSection,.showcaseSection .prose h1{text-align:center}.showcaseSection .prose{margin:0 auto;max-width:560px;text-align:center}.showcaseSection .logos{align-items:center;display:flex;flex-flow:row wrap;justify-content:center}.showcaseSection .logos img{max-height:128px;padding:20px;width:128px}@media only screen and (max-width:735px){.showcaseSection .logos img{max-height:64px;padding:20px;width:64px}}.nav-footer{background:#20232a;border:none;color:#202020;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:24px;padding-bottom:2em;padding-top:2em;position:relative}@media only screen and (min-width:1024px){.nav-footer{flex-shrink:0}}.nav-footer .sitemap{display:flex;justify-content:space-between;margin:0 auto 3em;max-width:1080px}.nav-footer .sitemap div{flex:1}.nav-footer .sitemap .nav-home{display:table;height:72px;margin:-12px 20px 0 0;opacity:.4;padding:10px;transition:opacity .15s ease-in-out;width:72px}.nav-footer .sitemap .nav-home:focus,.nav-footer .sitemap .nav-home:hover{opacity:1}@media only screen and (max-width:735px){.nav-footer .sitemap{display:flex;flex-direction:column;margin:0 2em 3em;width:calc(100% - 4em)}.nav-footer .sitemap>div{margin-bottom:18px}}.nav-footer .sitemap a{color:hsla(0,0%,100%,.6);display:block;margin:2px 0;padding:3px 0}.nav-footer .sitemap a:focus,.nav-footer .sitemap a:hover,.nav-footer .sitemap h5>a:focus,.nav-footer .sitemap h5>a:hover{color:#fff;text-decoration:none}.nav-footer .sitemap h5,.nav-footer .sitemap h6{margin:0 0 10px}.nav-footer .sitemap h5,.nav-footer .sitemap h5>a,.nav-footer .sitemap h6,.nav-footer .sitemap h6>a{color:#fff}.nav-footer .sitemap h5>a,.nav-footer .sitemap h6>a{margin:0 -10px}.nav-footer .fbOpenSource{display:block;margin:1em auto;opacity:.4;transition:opacity .15s ease-in-out;width:170px}.nav-footer .fbOpenSource:hover{opacity:1}.nav-footer .copyright{color:hsla(0,0%,100%,.4);text-align:center}.nav-footer .social{padding:5px 0}.tabs{border-top:1px solid #cfcfcf}.nav-tabs{display:flex;border-bottom:4px solid #e0e0e0;width:100%;padding:0;overflow-x:auto;white-space:nowrap;max-height:100%}.nav-tabs::-webkit-scrollbar{display:none}.tabs .tab-pane:focus{outline:none}.tabs .nav-tabs>div{font-size:14px;line-height:1.14286;padding:12px 16px;text-decoration:none;display:block;cursor:pointer}.tabs .nav-tabs>div.active{border-bottom:4px solid #204b7e}.tab-pane{display:none}.tab-pane.active{display:block}.tab-pane>pre{white-space:pre-wrap}.tab-pane>pre>code{margin-top:0;border-radius:0;box-shadow:none}@import "antd/dist/antd.css";
\ No newline at end of file
diff --git a/css/prism.css b/css/prism.css
new file mode 100644
index 0000000..d783edb
--- /dev/null
+++ b/css/prism.css
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ *
+ * Modified prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+
+code[class*='language-'],
+pre[class*='language-'] {
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+/* Code blocks */
+pre[class*='language-'] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+}
+
+/* Inline code */
+:not(pre) > code[class*='language-'] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+
+.token.punctuation {
+ color: #999;
+}
+
+.namespace {
+ opacity: 0.7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+
+.token.selector,
+.token.number,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+
+.token.function,
+.token.class-name {
+ color: #dd4a68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+
+.token.entity {
+ cursor: help;
+}
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index 6711192..0000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-version: "3"
-
-services:
- docusaurus:
- build: .
- ports:
- - 3000:3000
- - 35729:35729
- volumes:
- - ./docs:/app/docs
- - ./website/blog:/app/website/blog
- - ./website/core:/app/website/core
- - ./website/i18n:/app/website/i18n
- - ./website/pages:/app/website/pages
- - ./website/static:/app/website/static
- - ./website/sidebars.json:/app/website/sidebars.json
- - ./website/siteConfig.js:/app/website/siteConfig.js
- working_dir: /app/website
diff --git a/docs/about.html b/docs/about.html
new file mode 100644
index 0000000..87b51a0
--- /dev/null
+++ b/docs/about.html
@@ -0,0 +1,58 @@
+
What is DropKit? · DropKit DropKit is a blockchain-inspired secure database with audit trails, considered as the open source replacement of Amazon QLDB. It is a distributed ACID-compliant database that runs on open Internet without central coordination. Also, its privacy-by-design properties enforce the access with Granted Permission and encryption pass.
+
\ No newline at end of file
diff --git a/docs/about.md b/docs/about.md
deleted file mode 100644
index 9fee208..0000000
--- a/docs/about.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-id: about
-title: What is DropKit?
-sidebar_label: What is DropKit?
----
-
-DropKit is a blockchain-inspired secure database with audit trails, considered as the open source replacement of Amazon QLDB. It is a distributed ACID-compliant database that runs on open Internet without central coordination. Also, its privacy-by-design properties enforce the access with Granted Permission and encryption pass.
diff --git a/docs/about/index.html b/docs/about/index.html
new file mode 100644
index 0000000..87b51a0
--- /dev/null
+++ b/docs/about/index.html
@@ -0,0 +1,58 @@
+What is DropKit? · DropKit DropKit is a blockchain-inspired secure database with audit trails, considered as the open source replacement of Amazon QLDB. It is a distributed ACID-compliant database that runs on open Internet without central coordination. Also, its privacy-by-design properties enforce the access with Granted Permission and encryption pass.
+
\ No newline at end of file
diff --git a/docs/api_authority.html b/docs/api_authority.html
new file mode 100644
index 0000000..ebc5e8f
--- /dev/null
+++ b/docs/api_authority.html
@@ -0,0 +1,241 @@
+Authority Control API Reference · DropKit Methods
+
+
+ Reference
+/api/auth/grant
+Grant user permissions to interact with specific table.
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok"
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/grant \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" }
+
+/api/auth/revoke
+Revoke user permission to interact with a specific table.
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok"
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/revoke \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" }
+
+/api/auth/verify
+Verify the user has permissions
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Response bool Verify result
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Response" : true
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/verify \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Response" : true }
+
+
\ No newline at end of file
diff --git a/docs/api_authority.md b/docs/api_authority.md
deleted file mode 100644
index 5cd93f0..0000000
--- a/docs/api_authority.md
+++ /dev/null
@@ -1,198 +0,0 @@
----
-id: api_authority
-title: Authority Control API Reference
-sidebar_label: Authority
----
-
-## Methods
-
-
-
----
-
-## Reference
-
-### `/api/auth/grant`
-
-Grant user permissions to interact with specific table.
-
-#### Parameters
-
-| Name | Type | Description |
-| ---------- | ------ | -------------------------------- |
-| user_name | string | Specifies a DropKit user |
-| table_name | string | Specifies a table name |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20201 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok"
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/auth/grant \
--X POST \
--d '{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok"}
-```
-
-### `/api/auth/revoke`
-
-Revoke user permission to interact with a specific table.
-
-#### Parameters
-
-| Name | Type | Description |
-| ---------- | ------ | -------------------------------- |
-| user_name | string | Specifies a DropKit user |
-| table_name | string | Specifies a table name |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20201 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok"
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/auth/revoke \
--X POST \
--d '{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok"}
-```
-
-### `/api/auth/verify`
-
-Verify the user has permissions
-
-#### Parameters
-
-| Name | Type | Description |
-| ---------- | ------ | -------------------------------- |
-| user_name | string | Specifies a DropKit user |
-| table_name | string | Specifies a table name |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-| Response | bool | Verify result |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20201 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok",
- "Response": true
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/auth/verify \
--X POST \
--d '{
- "user_name": "0x0000000000000000000000000000000000000000",
- "table_name": "employee",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok","Response": true}
-```
diff --git a/docs/api_authority/index.html b/docs/api_authority/index.html
new file mode 100644
index 0000000..ebc5e8f
--- /dev/null
+++ b/docs/api_authority/index.html
@@ -0,0 +1,241 @@
+Authority Control API Reference · DropKit Methods
+
+
+ Reference
+/api/auth/grant
+Grant user permissions to interact with specific table.
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok"
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/grant \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" }
+
+/api/auth/revoke
+Revoke user permission to interact with a specific table.
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok"
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/revoke \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" }
+
+/api/auth/verify
+Verify the user has permissions
+ Parameters
+
+
+Name Type Description
+
+
+user_name string Specifies a DropKit user
+table_name string Specifies a table name
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Response bool Verify result
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20201 Unauthorized
+
+
+ Sample Input
+{
+ "user_name" : "0x0000000000000000000000000000000000000000" ,
+ "table_name" : "employee" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Response" : true
+}
+
+ curl Example
+curl http://localhost:5000/api/auth/verify \
+-X POST \
+-d '{
+ "user_name": "0x0000000000000000000000000000000000000000",
+ "table_name": "employee",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Response" : true }
+
+
\ No newline at end of file
diff --git a/docs/api_database.html b/docs/api_database.html
new file mode 100644
index 0000000..cfc6a52
--- /dev/null
+++ b/docs/api_database.html
@@ -0,0 +1,250 @@
+Database API Reference · DropKit Methods
+
+
+ Reference
+/api/db/create
+Executes create query against DropKit
+POST /api/db /create
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/create \
+-X POST \
+-d '{
+ "db_statement": "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626" }
+
+/api/db/insert
+Executes insert query against DropKit
+POST /api/db /insert
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "INSERT INTO employee (id, name, age, language) VALUES (1, 'John', 35, 'Go')" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/insert \
+-X POST \
+-d '{
+ "db_statement": "INSERT INTO employee (id, name, age, language) VALUES (1, ' John', 35, ' Go')",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626" }
+
+/api/db/select
+Executes select query against DropKit
+POST /api/db /select
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Data list Database response
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "SELECT name, age, language FROM employee WHERE id = 1" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Data" : [
+ {
+ "age" : 35 ,
+ "language" : "Go" ,
+ "name" : "John"
+ }
+ ],
+ "Audit" : "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/select \
+-X POST \
+-d '{
+ "db_statement": "SELECT name, age, language FROM employee WHERE id = 1",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Data" : [{"age" : 35,"language" : "Go" ,"name" : "John" }],"Audit" : "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a" }
+
+
\ No newline at end of file
diff --git a/docs/api_database.md b/docs/api_database.md
deleted file mode 100644
index 5518207..0000000
--- a/docs/api_database.md
+++ /dev/null
@@ -1,213 +0,0 @@
----
-id: api_database
-title: Database API Reference
-sidebar_label: Database
----
-
-## Methods
-
-
-
----
-
-## Reference
-
-### `/api/db/create`
-
-Executes create query against DropKit
-
-```
-POST /api/db/create
-```
-
-#### Parameters
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| db_statement | string | SQL exec command |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-| Audit | string | Audit log hash |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20101 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "db_statement": "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok",
- "Audit": "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/db/create \
--X POST \
--d '{
- "db_statement": "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok","Audit": "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"}
-```
-
-### `/api/db/insert`
-
-Executes insert query against DropKit
-
-```
-POST /api/db/insert
-```
-
-#### Parameters
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| db_statement | string | SQL exec command |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-| Audit | string | Audit log hash |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20101 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "db_statement": "INSERT INTO employee (id, name, age, language) VALUES (1, 'John', 35, 'Go')",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok",
- "Audit": "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/db/insert \
--X POST \
--d '{
- "db_statement": "INSERT INTO employee (id, name, age, language) VALUES (1, 'John', 35, 'Go')",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok","Audit": "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"}
-```
-
-### `/api/db/select`
-
-Executes select query against DropKit
-
-```
-POST /api/db/select
-```
-
-#### Parameters
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| db_statement | string | SQL exec command |
-| caller_pk | string | Caller private key |
-
-#### Response
-
-Content Type: `application/json`
-
-| Name | Type | Description |
-| ------------ | ------ | ----------------------- |
-| Code | number | Response code |
-| Message | string | Response message |
-| Data | list | Database response |
-| Audit | string | Audit log hash |
-
-#### Response Code
-
-| Code | Description |
-| ------------ | ---------------------------- |
-| 0 | Success |
-| 20101 | Unauthorized |
-
-#### Sample Input
-
-```json
-{
- "db_statement": "SELECT name, age, language FROM employee WHERE id = 1",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}
-```
-
-#### Sample Response
-
-```json
-{
- "Code": 0,
- "Message": "Ok",
- "Data": [
- {
- "age": 35,
- "language": "Go",
- "name": "John"
- }
- ],
- "Audit": "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a"
-}
-```
-
-#### curl Example
-
-```bash
-curl http://localhost:5000/api/db/select \
--X POST \
--d '{
- "db_statement": "SELECT name, age, language FROM employee WHERE id = 1",
- "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
-}'
-
-{"Code": 0,"Message": "Ok","Data": [{"age": 35,"language": "Go","name": "John"}],"Audit": "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a"}
-```
diff --git a/docs/api_database/index.html b/docs/api_database/index.html
new file mode 100644
index 0000000..cfc6a52
--- /dev/null
+++ b/docs/api_database/index.html
@@ -0,0 +1,250 @@
+Database API Reference · DropKit Methods
+
+
+ Reference
+/api/db/create
+Executes create query against DropKit
+POST /api/db /create
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/create \
+-X POST \
+-d '{
+ "db_statement": "CREATE TABLE employee (id int PRIMARY KEY, name varchar, age int, language varchar)",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626" }
+
+/api/db/insert
+Executes insert query against DropKit
+POST /api/db /insert
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "INSERT INTO employee (id, name, age, language) VALUES (1, 'John', 35, 'Go')" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/insert \
+-X POST \
+-d '{
+ "db_statement": "INSERT INTO employee (id, name, age, language) VALUES (1, ' John', 35, ' Go')",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Audit" : "0x6eb3bc317d8bcb363d7f60f54e3f1503cdb80d82b3f3b775b3186a4a5262a626" }
+
+/api/db/select
+Executes select query against DropKit
+POST /api/db /select
+
+ Parameters
+
+
+Name Type Description
+
+
+db_statement string SQL exec command
+caller_pk string Caller private key
+
+
+ Response
+Content Type: application/json
+
+
+Name Type Description
+
+
+Code number Response code
+Message string Response message
+Data list Database response
+Audit string Audit log hash
+
+
+ Response Code
+
+
+Code Description
+
+
+0 Success
+20101 Unauthorized
+
+
+ Sample Input
+{
+ "db_statement" : "SELECT name, age, language FROM employee WHERE id = 1" ,
+ "caller_pk" : "00000000000000000000000000000000000000000000000000000000000000000000"
+}
+
+ Sample Response
+{
+ "Code" : 0 ,
+ "Message" : "Ok" ,
+ "Data" : [
+ {
+ "age" : 35 ,
+ "language" : "Go" ,
+ "name" : "John"
+ }
+ ],
+ "Audit" : "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a"
+}
+
+ curl Example
+curl http://localhost:5000/api/db/select \
+-X POST \
+-d '{
+ "db_statement": "SELECT name, age, language FROM employee WHERE id = 1",
+ "caller_pk": "00000000000000000000000000000000000000000000000000000000000000000000"
+}'
+
+{"Code" : 0,"Message" : "Ok" ,"Data" : [{"age" : 35,"language" : "Go" ,"name" : "John" }],"Audit" : "0x19c5a417c739977c39dfefc7cd86762e3a6ba2cac7beba5f77452814fd2a613a" }
+
+
\ No newline at end of file
diff --git a/docs/features.html b/docs/features.html
new file mode 100644
index 0000000..c4b999a
--- /dev/null
+++ b/docs/features.html
@@ -0,0 +1,65 @@
+Core features of DropKit · DropKit Operation history is immutable and trackable
+The blockchain-backed audit trail is built-in to ensure each access and each modification of data is securely tracked without the possibility of being deleted or modified. The integrity of data is protected with fraud detection, so that users get notified when anomalous behavior is detected when data access is concerned.
+ Per-record encryption
+Having data encrypted is nice, but doesn't protect against many types of data breaches. Instead, DropKit encrypts every record separately, using a secure key hierarchy. This serves as effective data breach protection as the risk for breaches is significantly reduced due to the inability to extract large amounts of data at once.
+ Fault tolerance
+DropKit can automatically handle failures and therefore provides high availability . This means the cluster will remain available for both reads and writes even if one node fails. It is primarily used for applications that support high-value, high-rate transactions, such as check clearinghouses and stock exchanges.
+ Ready to use
+DropKit can scale horizontally in case user application load increases. It is also highly available and handles encrypted backups automatically. Users simply send SQL-92 compliant statement to specified adapter component and DropKit would maintain accordingly.
+
\ No newline at end of file
diff --git a/docs/features.md b/docs/features.md
deleted file mode 100644
index 451a4ba..0000000
--- a/docs/features.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-id: features
-title: Core features of DropKit
-sidebar_label: Features
----
-
-## Operation history is immutable and trackable
-
-The blockchain-backed audit trail is built-in to ensure each access and each modification of data is securely tracked without the possibility of being deleted or modified. The integrity of data is protected with fraud detection, so that users get notified when anomalous behavior is detected when data access is concerned.
-
-## Per-record encryption
-
-Having data encrypted is nice, but doesn't protect against many types of data breaches. Instead, DropKit encrypts every record separately, using a secure key hierarchy. This serves as effective data breach protection as the risk for breaches is significantly reduced due to the inability to extract large amounts of data at once.
-
-## Fault tolerance
-
-DropKit can automatically handle failures and therefore provides high availability . This means the cluster will remain available for both reads and writes even if one node fails. It is primarily used for applications that support high-value, high-rate transactions, such as check clearinghouses and stock exchanges.
-
-## Ready to use
-
-DropKit can scale horizontally in case user application load increases. It is also highly available and handles encrypted backups automatically. Users simply send SQL-92 compliant statement to specified adapter component and DropKit would maintain accordingly.
diff --git a/docs/features/index.html b/docs/features/index.html
new file mode 100644
index 0000000..c4b999a
--- /dev/null
+++ b/docs/features/index.html
@@ -0,0 +1,65 @@
+Core features of DropKit · DropKit Operation history is immutable and trackable
+The blockchain-backed audit trail is built-in to ensure each access and each modification of data is securely tracked without the possibility of being deleted or modified. The integrity of data is protected with fraud detection, so that users get notified when anomalous behavior is detected when data access is concerned.
+ Per-record encryption
+Having data encrypted is nice, but doesn't protect against many types of data breaches. Instead, DropKit encrypts every record separately, using a secure key hierarchy. This serves as effective data breach protection as the risk for breaches is significantly reduced due to the inability to extract large amounts of data at once.
+ Fault tolerance
+DropKit can automatically handle failures and therefore provides high availability . This means the cluster will remain available for both reads and writes even if one node fails. It is primarily used for applications that support high-value, high-rate transactions, such as check clearinghouses and stock exchanges.
+ Ready to use
+DropKit can scale horizontally in case user application load increases. It is also highly available and handles encrypted backups automatically. Users simply send SQL-92 compliant statement to specified adapter component and DropKit would maintain accordingly.
+
\ No newline at end of file
diff --git a/docs/use_case.html b/docs/use_case.html
new file mode 100644
index 0000000..7dc6abf
--- /dev/null
+++ b/docs/use_case.html
@@ -0,0 +1,77 @@
+Use Case of DropKit · DropKit Privacy data
+If you are a developer of password management tools just like 1Password or LastPass . You can use DropKit as the database to take benefits:
+
+Serverless: no need to deploy a server to store your user's password for sync which is the hot potato.
+Security: DropKit handles all the encryption work. Decentralized data storage gives more confidence to your users.
+Regulation: DropKt naturally complies with GDPR.
+
+ Open data service
+You can directly expose an online SQL interface to your customers to meet a wide range of query needs.
+
+DropKit can limit specific SQL query statements to meet the needs while also balancing data security;
+DropKit can record SQL query records on the blockchain, which is very convenient for customers to check their bills for long-tail customers and billing.
+For customers with high performance requirements, Slave nodes can be deployed at the customer to meet the needs of customers with low latency queries while enabling almost real-time data updates.
+
+ Data manipulation for IoT Devices
+DropKit can be deployed globally, and IoT node can write to nearest adaptor nodes directly.
+
+Lower cost: Without passing all the traffic through a gateway, you can save a large bandwidth cost.
+Faster: The consensus protocol behind DropKit is designed for Internet where network latency is unavoidable.
+
+
\ No newline at end of file
diff --git a/docs/use_case.md b/docs/use_case.md
deleted file mode 100644
index f1286ea..0000000
--- a/docs/use_case.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-id: use_case
-title: Use Case of DropKit
-sidebar_label: Use case
----
-
-## Privacy data
-
-If you are a developer of password management tools just like [1Password](https://1password.com/) or [LastPass](https://www.lastpass.com/). You can use DropKit as the database to take benefits:
-
-- Serverless: no need to deploy a server to store your user's password for sync which is the hot potato.
-- Security: DropKit handles all the encryption work. Decentralized data storage gives more confidence to your users.
-- Regulation: DropKt naturally complies with GDPR.
-
-## Open data service
-
-You can directly expose an online SQL interface to your customers to meet a wide range of query needs.
-
-- DropKit can limit specific SQL query statements to meet the needs while also balancing data security;
-- DropKit can record SQL query records on the blockchain, which is very convenient for customers to check their bills for long-tail customers and billing.
-- For customers with high performance requirements, Slave nodes can be deployed at the customer to meet the needs of customers with low latency queries while enabling almost real-time data updates.
-
-## Data manipulation for IoT Devices
-
-DropKit can be deployed globally, and IoT node can write to nearest adaptor nodes directly.
-
-- Lower cost: Without passing all the traffic through a gateway, you can save a large bandwidth cost.
-- Faster: The consensus protocol behind DropKit is designed for Internet where network latency is unavoidable.
diff --git a/docs/use_case/index.html b/docs/use_case/index.html
new file mode 100644
index 0000000..7dc6abf
--- /dev/null
+++ b/docs/use_case/index.html
@@ -0,0 +1,77 @@
+Use Case of DropKit · DropKit Privacy data
+If you are a developer of password management tools just like 1Password or LastPass . You can use DropKit as the database to take benefits:
+
+Serverless: no need to deploy a server to store your user's password for sync which is the hot potato.
+Security: DropKit handles all the encryption work. Decentralized data storage gives more confidence to your users.
+Regulation: DropKt naturally complies with GDPR.
+
+ Open data service
+You can directly expose an online SQL interface to your customers to meet a wide range of query needs.
+
+DropKit can limit specific SQL query statements to meet the needs while also balancing data security;
+DropKit can record SQL query records on the blockchain, which is very convenient for customers to check their bills for long-tail customers and billing.
+For customers with high performance requirements, Slave nodes can be deployed at the customer to meet the needs of customers with low latency queries while enabling almost real-time data updates.
+
+ Data manipulation for IoT Devices
+DropKit can be deployed globally, and IoT node can write to nearest adaptor nodes directly.
+
+Lower cost: Without passing all the traffic through a gateway, you can save a large bandwidth cost.
+Faster: The consensus protocol behind DropKit is designed for Internet where network latency is unavoidable.
+
+
\ No newline at end of file
diff --git a/en/index.html b/en/index.html
new file mode 100644
index 0000000..370007c
--- /dev/null
+++ b/en/index.html
@@ -0,0 +1 @@
+DropKit · DropKit Document
\ No newline at end of file
diff --git a/website/static/img/favicon.ico b/img/favicon.ico
similarity index 100%
rename from website/static/img/favicon.ico
rename to img/favicon.ico
diff --git a/img/language.svg b/img/language.svg
new file mode 100644
index 0000000..6619593
--- /dev/null
+++ b/img/language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/img/logo.png b/img/logo.png
new file mode 100644
index 0000000..c833611
Binary files /dev/null and b/img/logo.png differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..5f3ad10
--- /dev/null
+++ b/index.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ DropKit · DropKit Document
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/codetabs.js b/js/codetabs.js
new file mode 100644
index 0000000..60072d2
--- /dev/null
+++ b/js/codetabs.js
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+// Turn off ESLint for this file because it's sent down to users as-is.
+
+/* eslint-disable */
+window.addEventListener('load', function() {
+ // add event listener for all tab
+ document.querySelectorAll('.nav-link').forEach(function(el) {
+ el.addEventListener('click', function(e) {
+ var groupId = e.target.getAttribute('data-group');
+ document
+ .querySelectorAll('.nav-link[data-group='.concat(groupId, ']'))
+ .forEach(function(el) {
+ el.classList.remove('active');
+ });
+ document
+ .querySelectorAll('.tab-pane[data-group='.concat(groupId, ']'))
+ .forEach(function(el) {
+ el.classList.remove('active');
+ });
+ e.target.classList.add('active');
+ document
+ .querySelector('#'.concat(e.target.getAttribute('data-tab')))
+ .classList.add('active');
+ });
+ });
+});
diff --git a/js/scrollSpy.js b/js/scrollSpy.js
new file mode 100644
index 0000000..ec05853
--- /dev/null
+++ b/js/scrollSpy.js
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/* eslint-disable */
+(function scrollSpy() {
+ var OFFSET = 10;
+ var timer;
+ var headingsCache;
+
+ var findHeadings = function findHeadings() {
+ return headingsCache || document.querySelectorAll('.toc-headings > li > a');
+ };
+
+ var onScroll = function onScroll() {
+ if (timer) {
+ // throttle
+ return;
+ }
+
+ timer = setTimeout(function() {
+ timer = null;
+ var activeNavFound = false;
+ var headings = findHeadings(); // toc nav anchors
+
+ /**
+ * On every call, try to find header right after <-- next header
+ * the one whose content is on the current screen <-- highlight this
+ */
+
+ for (var i = 0; i < headings.length; i++) {
+ // headings[i] is current element
+ // if an element is already active, then current element is not active
+ // if no element is already active, then current element is active
+ var currNavActive = !activeNavFound;
+ /**
+ * Enter the following check up only when an active nav header is not yet found
+ * Then, check the bounding rectangle of the next header
+ * The headers that are scrolled passed will have negative bounding rect top
+ * So the first one with positive bounding rect top will be the nearest next header
+ */
+
+ if (currNavActive && i < headings.length - 1) {
+ var heading = headings[i + 1];
+ var next = decodeURIComponent(heading.href.split('#')[1]);
+ var nextHeader = document.getElementById(next);
+
+ if (nextHeader) {
+ var top = nextHeader.getBoundingClientRect().top;
+ currNavActive = top > OFFSET;
+ } else {
+ console.error('Can not find header element', {
+ id: next,
+ heading: heading,
+ });
+ }
+ }
+ /**
+ * Stop searching once a first such header is found,
+ * this makes sure the highlighted header is the most current one
+ */
+
+ if (currNavActive) {
+ activeNavFound = true;
+ headings[i].classList.add('active');
+ } else {
+ headings[i].classList.remove('active');
+ }
+ }
+ }, 100);
+ };
+
+ document.addEventListener('scroll', onScroll);
+ document.addEventListener('resize', onScroll);
+ document.addEventListener('DOMContentLoaded', function() {
+ // Cache the headings once the page has fully loaded.
+ headingsCache = findHeadings();
+ onScroll();
+ });
+})();
diff --git a/publish-gh.sh b/publish-gh.sh
deleted file mode 100755
index 9013398..0000000
--- a/publish-gh.sh
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env bash
-# usage: publish-gh -v 0.0.1 -u junwei0117
-
-set -o errexit
-set -o pipefail
-
-check_env() {
- if [[ ! -e "./website/node_modules/.bin/docusaurus-version" ]]; then
- echo "
-**ERROR**
-docusaurus related commands not found under [website/node_modules/.bin]
-Please install dependencies for this project:
- 1. install node if you don't have;
- 2. install dependencies: cd website && npm install.
-"
- exit 1
- fi
-}
-
-command::publish-gh() {
- local version=()
- local user=()
- local current_opt=""
-
- while :; do
- case ${1:-notset} in
- -v|--version)
- current_opt="version"
- ;;
- -u|--user)
- current_opt="user"
- ;;
- notset)
- break
- ;;
- *)
- case ${current_opt} in
- version)
- version+=("$1")
- ;;
- user)
- user+=("$1")
- ;;
- esac
- ;;
- esac
- shift
- done
-
- # print version and user
- echo "Version: ${version}"
- echo "User: ${user}"
-
- # publish current docs
- cd website
-
- GIT_USER=${user} \
- CURRENT_BRANCH=master \
- USE_SSH=true \
- yarn run publish-gh-pages
-
- # commit and push
- cd ..
- git add .
- git commit -m "chore(publish): published ${version} docs by [${user}]"
- git push origin master
-}
-
-usage() {
- echo "
-Usage: publish-gh -v -u
-
-Options:
- version: semantic version, e.g. 0.0.1
- user: username who updates the docs, e.g. junwei0117
-" 1>&2; exit 1;
-}
-
-main() {
- check_env
- if [[ $# -ne 4 ]]; then
- usage
- fi
- command::publish-gh "$@"
-}
-
-main "$@"
\ No newline at end of file
diff --git a/readme.md b/readme.md
deleted file mode 100644
index 58dc4f5..0000000
--- a/readme.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# DropKit Document
-
-## Prerequisites
-
-- node.js >= 8
-
-## Install Dependencies
-
-```bash
-cd website && yarn
-```
-
-## Start Website
-
-```bash
-yarn start
-```
-
-Load `localhost:3000/docs/db_create` to find out the API document.
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..2399c77
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1 @@
+http://dropkit.org/index weekly 0.5 http://dropkit.org/docs/about hourly 1.0 http://dropkit.org/docs/api_authority hourly 1.0 http://dropkit.org/docs/api_database hourly 1.0 http://dropkit.org/docs/features hourly 1.0 http://dropkit.org/docs/use_case hourly 1.0
\ No newline at end of file
diff --git a/website/core/Footer.js b/website/core/Footer.js
deleted file mode 100644
index 066e171..0000000
--- a/website/core/Footer.js
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-const React = require('react');
-
-class Footer extends React.Component {
- docUrl(doc, language) {
- const baseUrl = this.props.config.baseUrl;
- const docsUrl = this.props.config.docsUrl;
- const docsPart = `${docsUrl ? `${docsUrl}/` : ''}`;
- const langPart = `${language ? `${language}/` : ''}`;
- return `${baseUrl}${docsPart}${langPart}${doc}`;
- }
-
- pageUrl(doc, language) {
- const baseUrl = this.props.config.baseUrl;
- return baseUrl + (language ? `${language}/` : '') + doc;
- }
-
- render() {
- return (
-
- );
- }
-}
-
-module.exports = Footer;
diff --git a/website/package.json b/website/package.json
deleted file mode 100644
index 1f87392..0000000
--- a/website/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "scripts": {
- "examples": "docusaurus-examples",
- "start": "docusaurus-start",
- "build": "docusaurus-build",
- "publish-gh-pages": "docusaurus-publish",
- "write-translations": "docusaurus-write-translations",
- "version": "docusaurus-version",
- "rename-version": "docusaurus-rename-version"
- },
- "devDependencies": {
- "docusaurus": "^1.14.4"
- }
-}
diff --git a/website/pages/en/index.js b/website/pages/en/index.js
deleted file mode 100644
index e63b8a1..0000000
--- a/website/pages/en/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-const React = require('react');
-
-class Index extends React.Component {
- render() {
-
- return (
-
- );
- }
-}
-
-module.exports = Index;
diff --git a/website/sidebars.json b/website/sidebars.json
deleted file mode 100644
index dcb7b26..0000000
--- a/website/sidebars.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "apis": {
- "Introduction":["about", "features", "use_case"],
- "API Reference": ["api_database", "api_authority"]
- }
-}
diff --git a/website/siteConfig.js b/website/siteConfig.js
deleted file mode 100644
index 174e7a0..0000000
--- a/website/siteConfig.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-// See https://docusaurus.io/docs/site-config for all the possible
-// site configuration options.
-
-// List of projects/orgs using your project for the users page.
-// const users = [
-// {
-// caption: 'User1',
-// // You will need to prepend the image path with your baseUrl
-// // if it is not '/', like: '/test-site/img/image.jpg'.
-// image: '/img/undraw_open_source.svg',
-// infoLink: 'https://www.facebook.com',
-// pinned: true,
-// },
-// ];
-
-const siteConfig = {
- title: 'DropKit', // Title for your website.
- tagline: 'DropKit Document',
- url: 'http://dropkit.org', // Your website URL
- baseUrl: '/', // Base URL for your project */
- // For github.io type URLs, you would set the url and baseUrl like:
- // url: 'https://facebook.github.io',
- // baseUrl: '/test-site/',
-
- // Used for publishing and more
- // url: 'https://dropkit.github.io', // Replace USERNAME with your GitHub username.
- // baseUrl: '/docs/', // The name of your GitHub project.
- projectName: 'docs', // The name of your GitHub project. Same as above.
- organizationName: 'dropkit', // Your GitHub username.
-
- // For no header links in the top nav bar -> headerLinks: [],
- headerLinks: [
- {doc: 'about', label: 'About'},
- {doc: 'api_database', label: 'API'}
- ],
-
- // If you have users set above, you add it here:
- // users,
-
- /* path to images for header/footer */
- // headerIcon: 'img/logo.png',
- footerIcon: 'img/logo.png',
- favicon: 'img/logo.png',
-
- /* Colors for website */
- colors: {
- primaryColor: '#204B7E',
- secondaryColor: '#462769',
- },
-
- /* Custom fonts for website */
- /*
- fonts: {
- myFont: [
- "Times New Roman",
- "Serif"
- ],
- myOtherFont: [
- "-apple-system",
- "system-ui"
- ]
- },
- */
-
- // This copyright info is used in /core/Footer.js and blog RSS/Atom feeds.
- copyright: `Copyright © ${new Date().getFullYear()} BiiLabs.io`,
-
- highlight: {
- // Highlight.js theme to use for syntax highlighting in code blocks.
- theme: 'default',
- },
-
- // Add custom scripts here that would be placed in
- Redirect...
-
-
- If you are not redirected automatically, follow this link .
-
-