Automatic Infrastructure

Define resources as type-safe objects in your code: services, databases, pub/sub, object storage, secrets, cron. Encore provisions them in your AWS or GCP using production-grade managed services.

Infrastructure from Code

No Terraform, no CloudFormation, no YAML. Your application code defines what infrastructure exists. Add a database in code, it appears in the cloud.

  • Type-safe infrastructure primitives
  • Automatic provisioning in AWS or GCP
  • Production-grade managed services
  • Zero configuration drift
Infrastructure from Code diagram

Code is the source of truth

No Terraform, no CloudFormation, no YAML. Your application code defines what infrastructure exists. Add a database in code, it appears in the cloud.

Production-grade services

RDS, Cloud SQL, SNS/SQS, Pub/Sub, S3, Cloud Storage. Battle-tested managed services with proper networking, security, and scaling.

Your cloud account

All resources run in your AWS or GCP account. Full console access, no vendor lock-in for your data or infrastructure.

Your cloud account, your data

All infrastructure runs in your own AWS or GCP account. You have full access to the cloud console, can inspect any resource, and there's no vendor lock-in for your data.

Encore connects to your cloud using a dedicated IAM role with minimal permissions. You can see exactly what Encore creates and modify resources directly if needed.

  • Resources in your AWS/GCP account
  • Full console access to all resources
  • Export and migrate anytime
Deploy to your cloud
AWS
GCP

3 lines for a database

Declare a database in your code. Encore provisions PostgreSQL with migrations, connection pooling, IAM authentication, and proper networking.

Works locally without Docker configuration. Same code deploys to RDS on AWS or Cloud SQL on GCP without changes.

~90%
less infrastructure code
0
configuration drift
Define a database:
import { SQLDatabase } from "encore.dev/storage/sqldb";

// Encore provisions PostgreSQL in your cloud
const db = new SQLDatabase("users", {
  migrations: "./migrations",
});

// Use with full type safety
const user = await db.queryRow`
  SELECT * FROM users WHERE id = ${id}
`;

Encore vs Terraform

Define infrastructure in your application code instead of separate configuration files.

Encore

Recommended
3 lines of TypeScript
import { SQLDatabase } from "encore.dev/storage/sqldb";

const db = new SQLDatabase("users", {
  migrations: "./migrations",
});
Networking, IAM, and secrets handled automatically

Terraform

50+ lines of HCL (truncated)
resource "aws_db_instance" "users" {
  identifier        = "users-db"
  engine            = "postgres"
  instance_class    = "db.t3.micro"
  allocated_storage = 20
  db_name           = "users"
  username          = var.db_username
  password          = var.db_password
  vpc_security_group_ids = [
    aws_security_group.rds.id
  ]
  # ... plus networking, IAM, secrets
}
Plus: VPCs, subnets, security groups, IAM roles, secrets config, connection strings...

Cloud Primitives

Encore provides type-safe APIs for the building blocks of modern applications. Under the hood, it uses production-grade managed services from your cloud provider.

SQL Databases

Managed PostgreSQL with automatic migrations, connection pooling, and IAM authentication

AWSRDSGCPCloud SQL

Pub/Sub Messaging

Event-driven messaging with type-safe topics, automatic retries, and dead-letter queues

AWSSNS + SQSGCPPub/Sub

Cron Jobs

Scheduled tasks with distributed execution and built-in monitoring

AWSEventBridgeGCPCloud Scheduler

Object Storage

Blob storage with streaming uploads, signed URLs, and bucket policies

AWSS3GCPCloud Storage

Secrets

Encrypted storage for API keys and credentials, versioned and environment-scoped

AWSSecrets ManagerGCPSecret Manager

Caching

Redis-compatible in-memory cache with cluster mode and automatic failover

AWSElastiCacheGCPMemorystore
Trusted by teams at
GrouponPaveBookshop.orgCoinbase

Deploy to your cloud in minutes

Focus on your product. Encore handles the infrastructure.