Encore, Lightsail, ECS Express Mode, Amplify Hosting, Kamal on EC2 and SST compared by monthly floor cost, upkeep and how far each one grows with the project.
A side project rarely dies from traffic. It dies from the bill that keeps arriving while nobody uses it, and from the evening spent patching a server instead of building the feature. Picking an AWS deployment tool for one is mostly a question of what it costs to keep alive for a year with no users, and how much upkeep it asks for in that time.
The second question is what happens if the project works. Some of these tools stay small forever, and some grow into a production setup without a move. The right one depends on which outcome you are planning for.
What a side project on AWS needs:
Encore combines an open source infrastructure SDK for TypeScript and Go with a platform that deploys into your own AWS account. The database, the queue and the scheduled job are declared in the code, run locally with encore run, and are provisioned in the account on deploy. There are no servers to patch and no infrastructure project next to the app.

The nightly report every side project ends up with is a few lines:
import { api } from "encore.dev/api";
import { CronJob } from "encore.dev/cron";
import log from "encore.dev/log";
export const dailyReport = api({ expose: false }, async (): Promise<void> => {
log.info("building the daily report");
});
// Runs on schedule in deployed environments, not locally.
const _ = new CronJob("daily-report", {
title: "Build the daily report",
schedule: "0 6 * * *",
endpoint: dailyReport,
});
For a side project, the upkeep is the point. The cron docs cover schedules, and during development you call dailyReport directly since cron jobs do not run locally. Adding a database later is another declaration in the same code. You connect your AWS account once, Encore provisions each service on ECS with an IAM role for the service, and the bill comes from AWS for the resources in your account. If the project grows, environment configuration changes instance sizes and the same code keeps deploying. Preview environments give each pull request its own copy.
encore run.encore run. The same bucket declaration is used in preview environments and production.Encore apps use its TypeScript or Go SDK. The resources it provisions are billed by AWS at normal rates, so set an AWS Budgets alert before the first deploy and check what the database and networking cost while idle.
Run in your terminal to get started locally.
Lightsail sells fixed monthly bundles. Linux instances start at $5 a month with a public IPv4 address, or $3.50 IPv6-only, the nano container service is $7 with 500 GB of transfer, managed databases start at $15 and a load balancer is $18. AWS's own example of a small app with an instance, database and load balancer totals $40 a month. Nothing on the bill surprises you.
The price includes a server you maintain. Instances need OS updates and backups, and moving to ECS or RDS later is a migration rather than a setting change.
ECS Express Mode takes a container image, a task execution role and an infrastructure role and gives back a running Fargate service with an HTTPS URL. It works from the console, CLI, SDKs, CloudFormation, Terraform and the ECS MCP server. Express Mode has no extra charge, Fargate bills per second with a one-minute minimum, and up to 25 services share one load balancer.
The database, queues and scheduled jobs are separate AWS resources you create yourself, which is fine for a single API and more work once the project needs storage.
Amplify Hosting builds and serves static and server-rendered frontends from Git. The free allowance covers 1,000 build minutes, 5 GB stored, 15 GB served, 500,000 SSR requests and 100 GB-hours of compute a month, and after that a build minute costs $0.01 and a GB served $0.15. A mostly frontend side project can stay at zero. Backend resources come through Amplify's own backend tooling, separate from hosting.
Kamal deploys Docker containers to servers over SSH. gem install kamal, kamal init and an edited config/deploy.yml set it up, and kamal setup installs Docker on the host and starts kamal-proxy on ports 80 and 443, which checks GET /up before switching traffic. The floor is the EC2 instance. You patch the OS, run the database as an accessory and back it up, and more than one server needs a load balancer in front.
SST deploys serverless and container apps to AWS from a TypeScript config, and a mostly Lambda setup can cost close to nothing at low traffic. Components cover functions, sites, queues and cron. Lambda functions have cold starts and a 15-minute time limit, and live mode needs AWS credentials on your laptop.
Set an AWS Budgets alert before the first deploy and check free tier usage in the billing console. Since February 2024, AWS charges for every public IPv4 address by the hour, which adds up on idle instances and load balancers. The FinOps Foundation describes the same habit at team scale: make cost visible early and review it often.
Lightsail has fixed monthly bundles, with container services starting at 7 dollars a month, and Amplify Hosting has a free allowance for builds and SSR requests. Setups with a load balancer and a NAT gateway cost more each month, even with little traffic.
Not if you pick a tool that matches the size of the project. Lightsail or Amplify keep costs and setup small, and tools such as Encore or ECS Express Mode suit side projects you expect to grow into a production service.
Declare a CronJob from encore.dev/cron that points at an API endpoint. Encore runs it on the schedule in deployed environments. Cron jobs do not run locally, so call the endpoint directly while developing.
Deploy to your cloud on AWS and Google Cloud
without managing infrastructure
Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.