{"id":15493847,"url":"https://github.com/seriousme/node-dash","last_synced_at":"2025-08-24T05:05:15.112Z","repository":{"id":42410546,"uuid":"62075104","full_name":"seriousme/node-dash","owner":"seriousme","description":"Serverless setup using node.js","archived":false,"fork":false,"pushed_at":"2021-06-08T12:28:19.000Z","size":994,"stargazers_count":14,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-22T20:18:01.338Z","etag":null,"topics":["javascript","nodejs","serverless","serverless-framework"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seriousme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-27T17:35:07.000Z","updated_at":"2022-11-01T18:18:06.000Z","dependencies_parsed_at":"2022-09-01T00:22:14.050Z","dependency_job_id":null,"html_url":"https://github.com/seriousme/node-dash","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/seriousme/node-dash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousme%2Fnode-dash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousme%2Fnode-dash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousme%2Fnode-dash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousme%2Fnode-dash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seriousme","download_url":"https://codeload.github.com/seriousme/node-dash/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seriousme%2Fnode-dash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271795120,"owners_count":24822648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","nodejs","serverless","serverless-framework"],"created_at":"2024-10-02T08:09:40.667Z","updated_at":"2025-08-24T05:05:15.091Z","avatar_url":"https://github.com/seriousme.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-dash\n[![Build Status](https://travis-ci.org/seriousme/node-dash.svg?branch=master)](https://travis-ci.org/seriousme/node-dash)\n[![Greenkeeper badge](https://badges.greenkeeper.io/seriousme/node-dash.svg)](https://greenkeeper.io/)\n\nAn experiment to build a serverless setup using node.js.\n\n![Node-dash design](https://rawgit.com/seriousme/node-dash/master/node-dash.v2.svg)\n\nThe repository and queue are implemented using [Pouchdb](https://pouchdb.com/), but\n[Couchdb](http://couchdb.apache.org/) will work as well.\n\n## Installation\nThere are 4 options to get this running:\n- `git clone` this repository and run `npm install` followed by `npm start`\n- `docker run -d -p 8080:8080 seriousme/node-dash`\n- use the `docker-compose` file in the docker folder\n- use `kubectl create -f https://raw.githubusercontent.com/seriousme/node-dash/master/k8/node-dash.yaml` to create a deployment on a [Kubernetes](https://kubernetes.io/) Installation.\n\nOnce it runs you can send your browser to http://\\\u003cyour host\\\u003e:8080/ which will show you a web interface, on Kubernetes `kubectl describe service apiserver` will show the IP/port.\nAlternatively you can use any REST client (e.g. CURL/Postman/etc) to talk to the API server\n\n## REST endpoints\nThe following endpoints are supported:\n\n### List of requests:\n```\ncurl -X GET \"http://localhost:8080/dash/requests\"\n```\n### Details of a request\n```\ncurl -X GET \"http://localhost:8080/dash/requests/:requestid\"\n```\n### Create a new asynchronous request\nAn example:\n```\ncurl -X GET \"http://localhost:8080/myactions/sum?a=1\u0026b=2\"\n```\n### Create a new synchronous request\nAn example:\n```\ncurl -X GET \"http://localhost:8080/myactions/sum?a=1\u0026b=2\u0026sync\"\n```\n### List of actions\n```\ncurl -X GET \"http://localhost:8080/dash/actions\"\n```\n### Details of an action\n```\ncurl -X GET \"http://localhost:8080/dash/actions/:actionid\"\n```\n### Create a new action\nAn example:\n```\ncurl -X PUT -H \"Content-Type: application/json\" -d '{\n  \"_id\": \"/myactions/min\",\n  \"code\": \"function main(params){ return { \\\"min\\\": Number(params.a) - Number(params.b)};}\"\n}' \"http://localhost:8080/dash/actions/%2fmyactions%2fmin\"\n```\n\n### Update an action\nAn example:\n```\ncurl -X PUT -H \"Content-Type: application/json\" -d '{\n  \"_id\": \"/myactions/min\",\n  \"code\": \"function main(params){ return { \\\"min\\\": Number(params.a) - Number(params.b)};}\",\n  \"_rev\": \"1-dadb9a995a83675dea6954a1515e08bb\"\n}' \"http://localhost:8080/dash/actions/%2fmyactions%2fmin\"\n```\n\n## Todo\nIts an experiment, so don't use this in production unless you know what you are doing !\nE.g. isolation between actioncode and the framework is based on node VM functionality\nwhich offers some protection but is not bulletproof against hostile actions !\n\nA better, and more elaborate, approach would be to inject the action code into a docker\ncontainer and then send the requests to that container. If the container is then idle for\nsay 5 minutes it can be shut.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseriousme%2Fnode-dash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseriousme%2Fnode-dash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseriousme%2Fnode-dash/lists"}