UNPKG

scaffoldly

Version:

Toolchain and libraries for Scaffoldly

124 lines (87 loc) 5.08 kB
Scaffoldly is a **new framework** for **packaging and deploying** applications to AWS. Scaffoldly provides: - a [Simple Configuration](#usage) to specify packaging and runtime configuration. - a [Command Line Interface](#command-line-interface) for packaging and deploying locally. - a [GitHub Action](#github-action) for packaging and deploying in CI/CD. It is a **open-source**, **no-code**, **developer-focused** solution that simplifies the packaging and deployment process for modern web applications. ✨ Our **[docs site](https://scaffoldly.dev)** is built and deployed **using Scaffoldly** ([source](https://github.com/scaffoldly/scaffoldly/blob/729100c6ef18de6105d0f12c721640be8e8df004/packages/website/package.json#L59-L87)), which uses the **Docusaurus Framework**, is hosted on **AWS Lambda**, and is deployed using **GitHub Actions** ([source](https://github.com/scaffoldly/scaffoldly/blob/729100c6ef18de6105d0f12c721640be8e8df004/.github/workflows/push-main.yml#L49-L52)). ### Motivation - Current tooling (such as Serverless, AWS SAM, Terraform, Pulumi, AWS CDKs, and Docker) is **unintuitive** and **cumbersome** for developers. - Popular frameworks (such as Next.js) are **expensive** and **difficult** to deploy to public Clouds Providers such as AWS. - Most applications can be run **cost effectively** in **serverless compute** such as AWS Lambda. We believe that developing apps locally has been made incredibly easy. **Deploying them to the Cloud Provider of your choice should be equally easy**. [Learn More](https://scaffoldly.dev/about). ### Key Features - **Automatic Docker Image Generation**: No need to write Dockerfiles manually. - **Infrastructure Automation**: Automatically create and manage AWS resources. - **Built-in CI/CD Support**: Integrate with GitHub Actions for seamless deployments. - **Environment Variables and Secrets**: Dotenv and GitHub Secrets are built-in. - **Minimal configuration required**: Get started quickly with sensible defaults. - **Built for the Public Cloud**: Deploy applications to AWS Lambda effortlessly. Don't get locked into using Vercel or Netlify. - **Cost Effective**: Only pay for what you use with AWS Lambda. ## Tutorials - Next.js: [Deploy a Next.js application to AWS lambda in 5 minutes](https://scaffoldly.dev/docs/tutorials/nextjs) ## Usage Using a minimal configuration in `package.json`, the `scaffoldly` toolchain can package and deploy an application: ```jsonc title="package.json" { "name": "my-app", "version": "0.1.0", // other package.json "scaffoldly": { "runtime": "node:22-alpine", "handler": "localhost:3000", "files": [".next", "node_modules", "package.json", "package-lock.json"], "scripts": { "install": "npm install", "dev": "npm run dev", "build": "npm run build", "start": "npm run start" } } } ``` Running [`scaffoldly deploy`](#command-line-interface) or the [GitHub Action](#github-action) will automatically create and push a multi-stage Docker build to ECR and deploy it to AWS Lambda. ### Command Line Interface ```bash npx scaffoldly [command] ``` The Scaffoldly CLI is a developer friendly tool build and host applications on AWS Lambda with ease, and is available on [npm](https://www.npmjs.com/package/scaffoldly) and can be invoked using `npx`. ``` Commands: npx scaffoldly show Display config, dockerfiles, etc. npx scaffoldly dev [ALPHA FEATURE] Launch a development environment npx scaffoldly deploy Deploy an environment Options: --help Show help [boolean] --version Show version number [boolean] ``` _**See**_: [CLI Docs](https://scaffoldly.dev/docs/cli) for more iformation. ### GitHub Action ```yaml jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Deploy uses: scaffoldly/scaffoldly@v1 with: secrets: ${{ toJSON(secrets) }} ``` Scaffoldly provides a seamless integration with GitHub Actions, allowing you to deploy your applications using GitHub, and is available on the [GitHub Actions Marketplace](https://github.com/marketplace/actions/scaffoldly). _**See**_: [GitHub Action Docs](https://scaffoldly.dev/docs/gha) for more information. ### Usage Metrics Opt-Out If you do not want to be included in Anonymous Usage Metrics, ensure an environment variable named `SCAFFOLDLY_DNT` is set: ```bash SCAFFOLDLY_DNT=1 npx scaffoldly ``` ## Documentation Documentation for the Scaffoldly toolchain is located at [https://scaffoldly.dev/docs](https://scaffoldly.dev/docs). ## Reporting Issues - **Bugs and Features**: Please [Open a New Issue](https://github.com/scaffoldly/cli/issues/new/choose) in GitHub. - **Security Advisories**: Please [Report a Advisory](https://github.com/scaffoldly/scaffoldly/security/advisories/new) in GitHub. ## Maintainers - [Scaffoldly](https://github.com/scaffoldly) - [cnuss](https://github.com/cnuss) ## License [Functional Source License, Version 1.1](https://github.com/scaffoldly/scaffoldly?tab=License-1-ov-file)