Escape your
backend burdens

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

Encore is the end-to-end backend development platform that automatically provisions all your cloud infrastructure, based on your business logic.

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, })

Designed to let you build your product without platform distractions.

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
Encore removes cloud complexity
Encore is purpose-built for creating backend applications and distributed systems in the cloud.

Encore's development toolkit deals with all boilerplate, like API endpoint generation, documentation, logging, and tracing.

Build applications where components interact like microservices, without added complexity.

Learn more
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 clicking around in cloud consoles.

Use Encore's cloud-agnostic APIs for primitives like databases, queues, caches, and scheduled tasks.

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

Learn more
3
Creates the model in your mind
As you develop, Encore understands your application and creates an interactive logical model of how it works.

This makes collaborating much simpler, from designing new systems to onboarding new team members.

Learn more
Clear the way for possibility
4
Connects to your cloud
Encore seamlessly deploys your application into your existing cloud account, provisioning all the necessary infrastructure using best practices for building secure and scalable distributed systems.

Learn more
Amazon Web ServicesGoogle Cloud PlatformMicrosoft Azure

Listen
to the liberated


Build Product
not Platform

Over and over is over
Cloud complexity has trapped developers in an inefficient loop of repetitive work. No more. Encore's development toolkit handles all boilerplate and repetitive tasks.
  • Write code once and ship to any environment
  • Use cloud services through cloud-agnostic APIs
  • Built-in secrets management and observability
Escape the maze of complexity
Build scalable applications where components interact like microservices, without added complexity. For developers, it's like calling functions from different Go modules.
  • Use any function as an API endpoint
  • Call APIs with regular function calls
  • Create services by creating Go packages
Integrated from write to run
Shorten feedback loops with Encore's end-to-end 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 architecture and its infrastructure requirements.
  • Real-time architecture diagrams
  • Preview Environments for every 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
Sleep soundly thanks to built-in monitoring, logging, and metrics.

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.