akvaplan-niva / ferrybox

FerryBox data service

Home Page:https://ferrybox.deno.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ferrybox

Deno IoT endpoint for FerryBoxes operated by Akvaplan-niva.

Production

Production URL: https://ferrybox.deno.dev

Continuous integration / deployment (CI/CD)

The production service is integrated with a CI/CD pipeline on GitHub.

Code merged into main creates a new production deployment, provided all tests are green.

Notice: All git commits must be made to a feature branch and submitted via a pull request before they can be merged into main.

Features

  • Accepts FerryBox messages as (ND)JSON via HTTP POST
  • Validated messages are PUT put into cloud storage
  • Hashed passwords are protected and verified by strong cryptographic function scrypt (RFC)
  • Robust, scalable, low-latency operations via Deno Deploy's distributed edge computing network
  • Built in documentation

Use

import { createFerryBoxServer } from "./ferrybox.ts";

if (import.meta.main) {
  Deno.serve(createFerryBoxServer());
}

Configure

Configure using env variables

export ferrybox_endpoints='["ferrybox-dev1"]'
export ferrybox_cloud="azure"
export azure_account=""
export azure_key=""
export scrypt_basic_auth_users='[["username","scrypthash"]]'

Notice: The endpoint pathname is used as cloud storage bucket/container

Dev

deno task dev

Example curl POST

curl -vXPOST http://127.0.0.1:8000/ferrybox-dev1 --netrc-file .netrc -d'{}' -H "content-type: application/x-ndjson"

About

FerryBox data service

https://ferrybox.deno.dev


Languages

Language:TypeScript 87.6%Language:CSS 7.6%Language:JavaScript 4.8%