{"id":13989588,"url":"https://github.com/hyperform-dev/hyperform","last_synced_at":"2025-07-22T11:30:51.450Z","repository":{"id":128172856,"uuid":"331617189","full_name":"hyperform-dev/hyperform","owner":"hyperform-dev","description":"⚡ Lightweight serverless framework for NodeJS","archived":false,"fork":false,"pushed_at":"2022-01-13T12:15:19.000Z","size":16066,"stargazers_count":161,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-29T08:39:19.486Z","etag":null,"topics":["api-gateway","aws","aws-lambda","deployment","faas","function-as-a-service","google-cloud-functions","lambda","nodejs","serverless","serverless-framework"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperform-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-01-21T12:13:07.000Z","updated_at":"2024-08-22T08:32:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e5c1618-db57-4bec-bddc-b5095549cb3a","html_url":"https://github.com/hyperform-dev/hyperform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hyperform-dev/hyperform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperform-dev%2Fhyperform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperform-dev%2Fhyperform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperform-dev%2Fhyperform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperform-dev%2Fhyperform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperform-dev","download_url":"https://codeload.github.com/hyperform-dev/hyperform/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperform-dev%2Fhyperform/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266483482,"owners_count":23936347,"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-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["api-gateway","aws","aws-lambda","deployment","faas","function-as-a-service","google-cloud-functions","lambda","nodejs","serverless","serverless-framework"],"created_at":"2024-08-09T13:01:47.321Z","updated_at":"2025-07-22T11:30:51.113Z","avatar_url":"https://github.com/hyperform-dev.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"\n\n![Hyperform Banner](https://github.com/qngapparat/hyperform/blob/master/hyperform-banner.png)\n\n\n\u003e ⚡ Lightweight serverless framework for NodeJS\n\n* **Unopinionated** (Any JS code works)\n* **Lightweight** (no wrapping)\n* **1-click deploy** (1 command)\n* **Multi-Cloud** (for AWS \u0026 Google Cloud)\n* **Maintains** (provider's conventions)\n\n\n## Install\n\n```sh\n$ npm install -g hyperform-cli\n```\n\n\n\n## Usage\n\n\n* Everything works like a normal NodeJS app. You can use NPM packages, external files, assets, since the entire folder containing `hyperform.json` is included with each function.\n\n### AWS Lambda\n\n\n```js\n// somefile.js\n\n// AWS Lambda uses 'event', 'context', and 'callback'  convention\n// Learn more: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html\n\nexports.foo = (event, context, callback) =\u003e {\n  context.succeed({\n    message: \"I'm Foo on AWS Lambda!\"\n  })\n}\n\nexports.bar = (event, context, callback) =\u003e {\n  context.succeed({\n    message: \"I'm Bar on AWS Lambda!\"\n  })\n}\n\n// ... \n```\n\nCreate a `hyperform.json` in the current folder, with your AWS credentials:\n\n```json \n{\n  \"amazon\": {\n    \"aws_access_key_id\": \"...\",\n    \"aws_secret_access_key\": \"...\",\n    \"aws_region\": \"...\"\n  }\n}\n```\n\nIn the terminal, type:\n\n``` \n$ hyperform deploy somefile.js --amazon --url\n  \u003e 🟢 foo https://w3g434h.execute-api.us-east-2.amazonaws.com/foo\n  \u003e 🟢 bar https://w3g434h.execute-api.us-east-2.amazonaws.com/bar\n\n```\n\n... and your functions are deployed \u0026 invocable via `GET` and `POST`.\n\n\n### Google Cloud Functions\n\n\n```js\n// somefile.js\n\n// Google Cloud uses Express's 'Request' and 'Response' convention\n// Learn more: https://expressjs.com/en/api.html#req \n//             https://expressjs.com/en/api.html#res\n\nexports.foo = (req, res) =\u003e {\n  let message = req.query.message || req.body.message || \"I'm a Google Cloud Function, Foo\";\n  res.status(200).send(message);\n};\n\nexports.bar = (req, res) =\u003e {\n  let message = req.query.message || req.body.message || \"I'm a Google Cloud Function, Bar\";\n  res.status(200).send(message);\n};\n```\n\n\nCreate a `hyperform.json` in the current folder with your Google Cloud credentials:\n\n```json \n{\n  \"google\": {\n    \"gc_project\": \"...\",\n    \"gc_region\": \"...\",\n  }\n}\n```\n\nIn the terminal, type:\n\n``` \n$ hyperform deploy somefile.js --google --url    \n  \u003e 🟢 foo https://us-central1-someproject-153dg2.cloudfunctions.net/foo \n  \u003e 🟢 bar https://us-central1-someproject-153dg2.cloudfunctions.net/bar \n\n```\n\n... and your functions are deployed \u0026 invocable via `GET` and `POST`.\n\n## Hints \u0026 Caveats\n\n* New functions are deployed with 256MB RAM, 60s timeouts \n* The flag `--url` creates **unprotected** URLs to the functions. Anyone with these URLs can invoke your functions\n* The entire folder containing `hyperform.json` will be deployed with each function, so you can use NPM packages, external files (...) just like normal.\n\n\n\n### FAQ\n\n**Where are functions deployed to?**\n\n* On AWS: To AWS Lambda\n* On Google Cloud: To Google Cloud Functions\n\n**Where does deployment happen?**\n\nIt's a client-side tool, so on your computer. It uses the credentials it finds in `hyperform.json`\n\n\n**Can I use NPM packages, external files, (...) ?**\n\nYes. The entire folder where `hyperform.json` is is uploaded, excluding `.git`, `.gitignore`, `hyperform.json`, and for Google Cloud `node_modules` (Google Cloud installs NPM dependencies freshly from `package.json`). So everything works like a normal NodeJS app.\n\n**How does `--url` create URLs?**\n\nOn AWS, it creates an API Gateway API (called `hf`), and a `GET` and `POST` route to your function. \n\nOn Google Cloud, it removes IAM checking from the function by adding `allUsers` to the group \"Cloud Functions Invoker\" of that function.\n\nNote that in both cases, **anyone with the URL can invoke your function. Make sure to add Authentication logic inside your function**, if needed. \n\n\n\n## Opening Issues\n\nFeel free to open issues if you find bugs.\n\n## Contributing\n\nAlways welcome ❤️ Please see CONTRIBUTING.md\n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperform-dev%2Fhyperform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperform-dev%2Fhyperform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperform-dev%2Fhyperform/lists"}