Escape your
backend burdens

Get local, preview, and cloud environments directly from code.

Define APIs and use cloud services directly in your backend logic. Deploy to automatically provisioned environments in all major clouds, with built-in observability and operations tools.

blog/blog.go
1_tables.up.sql
Encore
type CreateParams struct { Title string Body string } type Article struct { AuthorID auth.UID Title string Body string } // Create publishes a new article. //encore:api auth method=POST path=/article func Create(ctx context.Context, p *CreateParams) (*Article, error) { authorID := auth.UserID() // get the logged in user's ID _, err := sqldb.Exec(ctx, ` INSERT INTO articles (author, title, body) VALUES ($1, $2, $3) `, authorID, p.Title, p.Body) if err != nil { return nil, err } article := &Article{AuthorID: authorID, Title: p.Title, Body: p.Body} followers, err := user.GetFollowers(ctx, authorID) for _, follower := range followers { notificationQueue.Push(&NewArticleEvent{ Article: article, FollowerID: follower, }) } return article, err } type NewArticleEvent struct { Article *Article FollowerID auth.UID } // notificationQueue emits events for all followers // when a new article is published. var notificationQueue = queue.New[NewArticleEvent]("new-articles") // Send a daily summary of today's most viewed posts.
var _ = cron.NewJob("daily-summary", cron.JobConfig{ Every: 24 * cron.Hour, Endpoint: SendDailySummary, })

Encore is the backend development engine helping teams escape cloud complexity to release their potential.

type CreateParams struct { Title string Body string } type Article struct { AuthorID auth.UID Title string Body string } // Create publishes a new article. //encore:api auth method=POST path=/article func Create(ctx context.Context, p *CreateParams) (*Article, error) { authorID := auth.UserID() // get the logged in user's ID _, err := sqldb.Exec(ctx, ` INSERT INTO articles (author, title, body) VALUES ($1, $2, $3) `, authorID, p.Title, p.Body) if err != nil { return nil, err } article := &Article{AuthorID: authorID, Title: p.Title, Body: p.Body} followers, err := user.GetFollowers(ctx, authorID) for _, follower := range followers { notificationQueue.Push(&NewArticleEvent{ Article: article, FollowerID: follower, }) } return article, err } type NewArticleEvent struct { Article *Article FollowerID auth.UID } // notificationQueue emits events for all followers // when a new article is published. var notificationQueue = queue.New[NewArticleEvent]("new-articles") // Send a daily summary of today's most viewed posts.
var _ = cron.NewJob("daily-summary", cron.JobConfig{ Every: 24 * cron.Hour, Endpoint: SendDailySummary, })
1
Designed to remove cloud complexity
Encore is purpose-built for creating backend applications and distributed systems in the cloud.

With Encore you create services using Go packages, and define APIs by adding a single annotation to any regular function.
type CreateParams struct { Title string Body string } type Article struct { AuthorID auth.UID Title string Body string } // Create publishes a new article. //encore:api auth method=POST path=/article func Create(ctx context.Context, p *CreateParams) (*Article, error) { authorID := auth.UserID() // get the logged in user's ID _, err := sqldb.Exec(ctx, ` INSERT INTO articles (author, title, body) VALUES ($1, $2, $3) `, authorID, p.Title, p.Body) if err != nil { return nil, err } article := &Article{AuthorID: authorID, Title: p.Title, Body: p.Body} followers, err := user.GetFollowers(ctx, authorID) for _, follower := range followers { notificationQueue.Push(&NewArticleEvent{ Article: article, FollowerID: follower, }) } return article, err } type NewArticleEvent struct { Article *Article FollowerID auth.UID } // notificationQueue emits events for all followers // when a new article is published. var notificationQueue = queue.New[NewArticleEvent]("new-articles") // Send a daily summary of today's most viewed posts.
var _ = cron.NewJob("daily-summary", cron.JobConfig{ Every: 24 * cron.Hour, Endpoint: SendDailySummary, })
2
Cloud primitives at your fingertips
You can stop writing endless boilerplate and configuration.

With Encore you get cloud-agnostic APIs for primitives like databases, queues, caches, and scheduled tasks.

Write code once and run in any environment, in any cloud.
3
Builds the model in your mind
As you build, Encore uses static analysis to understand your application and creates a logical model of how it works. This way, Encore always knows what infrastructure your app requires.

Encore orchestrates your DevOps workflow, automatically provisioning and configuring infrastructure in local, preview, and cloud environments.

Learn more
Clear the way for possibility
4
Connects to your cloud
Encore lets you seamlessly deploy your application to all major cloud providers, using your existing cloud account.

If you're not ready to head to the cloud yet, start by using Encore's built-in development cloud.

Learn more
Amazon Web ServicesGoogle Cloud PlatformMicrosoft Azure

Flowstate
and go

Over and over is over
Complexity and endless repetition of undifferentiated work is sending developers hamster wheeling into oblivion. Encore lets you escape the wheel.
  • No more boilerplate: Write 66% less code
  • Write code once and ship to all environments
  • Built-in tools like Distributed Tracing and Secrets Management
Higher state of development
With Encore you can build distributed systems, and microservices, as if you're building a monolith.
  • Write a function, get an API
  • Call APIs using regular function calls
  • Create services by creating Go packages
Integrated from write to run
Shorten feedback loops with Encore's integrated workflow and auto-provisioning environments that always stay in sync.
  • Built-in CI/CD, Testing, and Infrastructure Provisioning
  • Unlimited local/preview/cloud environments that always stay in sync
  • Deploy to all major cloud providers (GCP, AWS, Azure)
Collaborate and go
No more throwing things over the fence. With Encore everyone gets full visibility into the logical application structure and its infra needs, for each Pull Request.
  • Real-time architecture diagrams
  • Preview Environments per pull request
  • Automatically generated API clients and documentation

The devil in
the details

Intelligent Architecture Diagrams
Real-time automated and interactive microservices architecture diagrams, we call it Encore Flow.
Distributed Tracing
Automatically instruments your app for state of the art tracing.
Live Reload
Automatically recompiles and restarts your app for even faster iterations.
SQL Databases
Built-in provisioning and management of databases, in any environment.
Preview Environments
Each PR becomes its own, isolated test environment for easy collaboration.
Cloud Provisioning
Deploys and provisions your whole app with the latest cloud technology.
Secrets
Vaulting comes built in — it's never been this easy to securely store secrets.
Automated API Documentation
High-quality API docs, generated straight from your source code.
User Authentication
Built in support for authentication. Works with external user stores or your own.
Generated Frontend Clients
Generate frontend clients in the language of your choice.
Observability
Out-of-the-box monitoring, logging and tracing — so you can sleep at night.

Listen
to the liberated


Your input is everything

Community
Join our friendly forums
GitHub
Star Encore on GitHub
Slack
Say your piece on Slack
Twitter
Keep tabs on Twitter

We have the answers

How is Encore different from other solutions like Heroku, Supabase, or Vercel?
Do I need to have a cloud account?
What programming languages are supported?
What about frontend hosting?
Will Encore lock me in?
I have AWS/GCP/Azure credits, can I use them with Encore?
Is Encore Open Source?
Is Encore free?
How do you make money?

Once more
No more

Build a new cloud backend in a matter of minutes.