DEV Community

Alex Spinov
Alex Spinov

Posted on

SST Has a Free Framework That Makes Deploying to AWS Actually Simple

AWS has 200+ services and deploying a simple app takes 3 days of YAML. SST wraps AWS in TypeScript components — deploy a Next.js app, API, database, and cron jobs with a few lines of code.

What SST Gives You for Free

  • TypeScript infrastructure — define AWS resources in code
  • Live Lambda Dev — edit functions, see changes in real-time
  • Console — web dashboard for your AWS resources
  • Full-stack — frontend + API + database + cron in one project
  • Components — high-level abstractions for common patterns
  • No lock-in — generates standard CloudFormation

Quick Start

npx sst@latest init
npx sst dev
Enter fullscreen mode Exit fullscreen mode

Deploy a Next.js App

// sst.config.ts
export default $config({
  app(input) {
    return { name: 'my-app', region: 'us-east-1' };
  },
  async run() {
    new sst.aws.Nextjs('Web');
  }
});
Enter fullscreen mode Exit fullscreen mode

Run npx sst deploy — your Next.js app is on AWS with CloudFront CDN.

Full-Stack Example

// sst.config.ts
export default $config({
  app(input) {
    return { name: 'my-saas', region: 'us-east-1' };
  },
  async run() {
    // Database
    const db = new sst.aws.Postgres('Database');

    // API
    const api = new sst.aws.ApiGatewayV2('Api');
    api.route('GET /users', 'packages/functions/src/users.list');
    api.route('POST /users', 'packages/functions/src/users.create');

    // Cron job
    new sst.aws.Cron('DailyReport', {
      schedule: 'rate(1 day)',
      job: 'packages/functions/src/report.handler'
    });

    // Frontend
    new sst.aws.Nextjs('Web', {
      environment: {
        NEXT_PUBLIC_API_URL: api.url
      }
    });

    // Link resources
    api.link(db);
  }
});
Enter fullscreen mode Exit fullscreen mode

Lambda Functions

// packages/functions/src/users.ts
import { Resource } from 'sst';
import { db } from './db';

export async function list() {
  const users = await db.select().from(usersTable);
  return { statusCode: 200, body: JSON.stringify(users) };
}

export async function create(event) {
  const body = JSON.parse(event.body);
  const user = await db.insert(usersTable).values(body);
  return { statusCode: 201, body: JSON.stringify(user) };
}
Enter fullscreen mode Exit fullscreen mode

Live Lambda Dev (The Killer Feature)

npx sst dev
Enter fullscreen mode Exit fullscreen mode

Edit your Lambda function → save → changes are live in <1 second. No redeploy. Set breakpoints in VS Code.

SST vs Serverless Framework vs CDK vs SAM

Feature SST Serverless Framework CDK SAM
Language TypeScript YAML TypeScript YAML
Live dev Yes (instant) No No No
Console Beautiful Basic None None
Full-stack Yes API only Yes API only
Learning curve Low Low High Medium
Components High-level Plugins L2 constructs None

The Verdict

SST makes AWS accessible to TypeScript developers. High-level components for common patterns, live Lambda development, and a beautiful console. If you're deploying to AWS, SST is the modern way.


Need help building production web scrapers or data pipelines? I build custom solutions. Reach out: spinov001@gmail.com

Check out my awesome-web-scraping collection — 400+ tools for extracting web data.

Top comments (0)