A new day for backend dev

Development should be where ideas flourish, not falter. But creativity is caught up in clunky systems, and old habits hold us back. We developers are trapped in a maze of our own making. At least we were, until now.
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 built on the belief that escaping complexity unleashes a higher state of creativity.

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
By understanding your code inside and out
Encore is purpose-built for creating cloud backend applications and distributed systems.

When you build your application with Encore's Go framework, the platform creates a detailed understanding of how your application works and uses this to remove much of the complexity involved in building for the cloud.

With Encore you create APIs from annotations on standard functions, and creating multiple services is as easy as creating Go packages.
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
Instead of endless boilerplate and configuration, Encore lets you use primitives like databases, queues, and scheduled tasks by simply writing code.

And with Encore you get the same smooth workflow for local development, testing, and production.

No configuration. No setup. Just float into the flow.
3
Building the model in your mind
As you define new services and databases, Encore analyzes your application code to build up a model of how it works and what infrastructure each component requires.

This lets Encore handle your whole DevOps pipeline, consistently provisioning and configuring your infrastructure.

Escape the maze of complexity, and stay focused on your product.
Clear the way for possibility
4
Connects to your cloud
Encore lets you seamlessly deploy your application to all major cloud providers, without messing with infrastructure or YAML.

Simply connect your cloud account. There's no second step.

If you're not ready to head to the cloud yet, start by using Encore's free built-in hosting for development.
Amazon Web ServicesGoogle Cloud PlatformMicrosoft Azure

Flowstate
and go

Over and over is over
Unnecessary complexity and constant repetition of undifferentiated work is sending us hamster wheeling into oblivion. Skip to the good bit and realize possibility with Encore.
  • No boilerplate or repetition needed — write 66% less code
  • Automatically sets up local and cloud development/test/production environments
  • Out of the box functionality like Distributed Tracing and Secrets Managements
Reach a higher state of development
When you're building with Encore, developing distributed systems and microservices couldn't be simpler. You enter the flow state and go.
  • Write a function and get an API
  • Call APIs as regular function calls
  • Create multiple services as easy as creating Go packages
Integrated from write to run
Avoid headaches with a highly integrated experience from writing code to running in the cloud. Ship immediately to your own cloud account without worrying about setting up and scaling infrastructure.
  • Built in CI/CD
  • Automatic setup and management of your cloud infrastructure
  • Free hosting with Encore Cloud for development, and your own cloud for production
  • Deploy to all major cloud providers (GCP, AWS, Azure)
Collaborate and go
Encore enables teams to spend time on what matters by providing a much more intuitive and effective developer experience. With Encore, teams can go and grow faster.
  • Live reload for faster iterations
  • Dedicated environments per pull request
  • Automatically generated frontend clients and API documentation

Listen
to the liberated


Your input is everything

GitHub
Star Encore on GitHub
Slack
Say your piece on Slack
Twitter
Keep tabs on Twitter

The devil in
the details

Database Migrations
Effortlessly evolve your database schema over time, locally and in production.
Distributed Tracing
Automatically instruments your app for state of the art tracing.
Secrets
We've made securely storing passwords simpler than ever.
Observability
Out-of-the-box monitoring, logging and tracing — so you can sleep at night.
Serverless
Deploys your whole app with the latest serverless technology.
Live Reload
Automatically recompiles and restarts your app for even faster iterations.
Preview Environments
Each PR becomes its own, isolated test environment for easy collaboration.
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.

Once more
No more

Build a new cloud backend in a matter of minutes.

We have the answers

How is Encore different from other solutions (Heroku, Vercel, Netlify, ...)?
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?