Brian Ketelsen

About This Site

Meta Information about this blog - frontend and backend technologies.

Meta
About This Site

Source Code

The source code for this blog and the backend that powers it is on GitHub. It is Open Source under the MIT License. Feel free to fork and use it for your own needs!

Technologies

  • The backend is powered by Encore hosted on Azure.
  • The frontend is running Next.js hosted on Vercel.
  • The content and images are served by Ghost running headless at fly.io.

Gopher images are courtesy of Ashley McNamara.

GitHub - ashleymcnamara/gophers: Gopher Artwork by Ashley McNamara
Gopher Artwork by Ashley McNamara. Contribute to ashleymcnamara/gophers development by creating an account on GitHub.

Philosophy

Rather than a monolithic application, I've chosen this approach to enable me to use different technologies where they are most appropriate. SvelteKit is my favorite web framework. While I know and can use other stacks like Next.js, no other framework I have found offers the simplicity of SvelteKit.

Similarly, there are many choices for getting content from your brain into a website, but the Ghost editor is my favorite. It's simple, powerful, and stays out of your way. I have a Ghost site deployed in private mode, which disables normal page serving but keeps the API and image services on.

The wildcard that makes this setup really powerful is Encore, which powers a URL shortener, the newsletter, social media integration and some lightweight content storage. Page and article updates from Ghost automatically post via webhooks to my Encore backend so that the content is available for uses outside the main website. I'm just getting started here, and really excited about the possibilities. I have it set up as a suite of microservices that are easily composed into a powerful engine, which I've started calling my Personal API.

The granularity of services allows me to compose lower-level services into powerful higher-level functionality. For example, the newsletter service is a composite service that uses content, subscriptions, and email. Rather than couple these services tightly I've found great flexibility in creating lower level services that can be combined to build applications. Since Encore abstracts away the network layer in calls between services, making a call from one service to another looks like a function call rather than a web service request. This seems small in concept, but in practice it makes the consumption and aggregation of small microservices feel like natural programming flow. I can't recommend Encore strongly enough if you are building a backend in Go. It's even worth learning Go just to use Encore.

© 2022 Brian Ketelsen. All rights reserved.