An Update Regarding GoWeb

April 13, 2023

Maximilian Patterson


Goals of the project

Get the repo here
GoWeb aims to be a simple easy-to-use framework for building web applications and APIs. Its inspiration comes from frameworks like Laravel and Django, which I am familiar with and serves as a good introduction to using Go for web development for people new to the language and familiar with MVC frameworks, or for people familiar with Go and new to MVC. My motivation is to have five things:

  1. A simple, easy-to-use framework for building web applications and APIs
  2. Something I built for myself, which all subsequent projects can use, resulting in codebases written entirely by me
  3. Little to no dependencies to take advantage of the Go compatibility promise and security updates
  4. Get up and running, without writing boilerplate, so I can just start creating applications right away
  5. Finally, to share it with people, and to help others to learn Go and web development

There are some features I had originally considered adding like e-mail support, that, because of their complexity and bloat (in this example an entire email server or some kind of email dependency) I have decided can be added by the developers themselves on a per-project basis, either by dependency or a new implementation tailored to the needs of the application.

What has been accomplished

Since the project’s creation and my first article on this subject, I have made a lot of progress. Here’s what’s new:

These new, essential, features have been added while maintaining my original goals of no external dependencies (outside of the Postgres driver and x/crypto), maintaining simplicity, and ease of use.

The total up-to-date feature list is outlined at the beginning of the readme here: GoWeb Repository

What’s left

Before I will consider this project ready for production in my own applications (Version 2.0) I would like to add the following features:

Future projects using GoWeb

Here are some ideas I have for projects, that I would build using GoWeb: