Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adamsondavid/nano-edge
A selfhosted platform for seamless JAM-stack and serverless app deployments
https://github.com/adamsondavid/nano-edge
cloudflare edge-functions faas functions lambda netlify self-hosted serverless vercel
Last synced: about 1 month ago
JSON representation
A selfhosted platform for seamless JAM-stack and serverless app deployments
- Host: GitHub
- URL: https://github.com/adamsondavid/nano-edge
- Owner: adamsondavid
- License: mit
- Created: 2024-10-11T22:32:33.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-12-11T05:40:01.000Z (about 2 months ago)
- Last Synced: 2024-12-15T11:19:32.975Z (about 1 month ago)
- Topics: cloudflare, edge-functions, faas, functions, lambda, netlify, self-hosted, serverless, vercel
- Language: TypeScript
- Homepage:
- Size: 2.52 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# NanoEdge
All you need to do to deploy your app is to run the following command:
```sh
npx @nano-edge/cli deploy
```Advanced usage:
Do not forget to set the `NANO_EDGE_AUTH_TOKEN` env var, which is required by the cli.
```sh
export NANO_EDGE_AUTH_TOKEN=xxx npx @nano-edge/cli deploy --env.MY_SECRET=$SOME_SECRET
```
To customize cli options, you can create a file `nano-edge.config.json`:
```json
{
"env": {
"SOME_ENV_VAR": "SOME_VALUE"
}
}
```> [!IMPORTANT]
> Do not deploy secrets that are really secret! These secrets might be exploitable as nano-edge is currently not (yet?) hardened!## Build output API example:
- functions/api.js
- functions/env.json
- static/index.html
- static/main.jsThe signature of a function is `export default async (request: Request) => Promise`.\
A function can access env vars by using process.env.\
`env.json` will be generated by the cli if `nano-edge.config.ts` contains env vars. The file is overwritten if it already did exist before.## How inbound traffic would be handled by which resource from the build output:
- `/api` -> `functions/api.js` (function exec)
- `/api/some/sub/path` -> `functions/api.js` (function exec)
- `/index.html` -> `static/index.html` (served static)
- `/main.js` -> `static/main.js` (served static)
- `/some/random/path` -> `static/index.html` (served static)
- Edge-case (precedence): If a static file exists with same name as a function, the static file is
not served.
Instead, the function is executed.