Back

Introducing the GoaT stack

Introducing the GoaT stack
TD
Thibault Le Ouay Ducasse
β€’4 min readβ€’
engineering

What is the GoaT stack?

The GoaT stack is a full-stack app template featuring a Golang server and a Vite + React SPA front end.

We want the GoaT stack to have a great DX.

What is included in the GoaT stack?

SQLite: We have chosen SQLite as the database because we love it. It’s just a file. LiteStream: To backup our database

Protocol Buffer with ConnecTRPC: For their http based protocol that works with Protocol Buffer.

Chi: For our Golang router
connectrpc.com/connect: To handle http based request

React: Our frontend framework of choice.
TanStack Query + Connect-Query: to generate our typesafe query.
TanStack Router: The typed router is a joy to work with.

API: Schema First Approach

Using Protocol Buffer we can design our API in proto file

Why not going full stack TypeScript

New users per week

We have worked in a large monorepo, we have often been frustrated by the number of times we had to restart our TypeScript LSP.

We love Golang. We heavily rely on it for OpenStatus.

How to get started with the Goat Stack

Requirements

To get started you need to have these installed on your computer

Get Started

  1. First clone our repository : https://github.com/openstatusHQ/goat-stack

  2. Run

It will download all the dependancies.

  1. Open your IDE and update packages/proto/goat/v1/goat.proto Add new procedure in the GoatService
  1. Run just buf

  2. Implement the handler in the server apps/server/internal/goat/handler.go

  1. Start calling it in your React App with the newly generated query

How to deploy it.

We provide 2 docker files to deploy the dashboard and the server where you want. For example our server for GoatStack.dev is hosted on Koyeb and our dashboard on Cloudflare

Before deploying the server you need to update apps/server/etc/litestream.yml with your S3 compatible bucket key to backup your database.

Conclusion

We hope you will enjoy using the GoaT stack as much as we do. We are looking forward to seeing what you will build with it. Feel free to reach out to us on ping@openstatus if you have any questions or feedback.

And if you want to contribute to the GoaT stack, we would be more than happy to welcome you to our community.

And create a free OpenStatus account to monitor your server and get notified if something goes wrong.

Happy coding! 🐐