go-full

module
v0.1.65 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT

README

Go Full

Go Vue.js Microsoft Azure GitHub Actions Dependabot OpenTelemetry OpenAPI Tailwind CSS DaisyUI Postgres Docker Vite Vitest pnpm MkDocs Playwright

Go Full is a full-stack project boilerplate template, learning tool, and reference implementation demonstrating a variety of development patterns and practices.

Motivation

In the movie, Ratatouille, the late Chef Gusteau has a saying that serves as a core theme of the film; "anyone can cook". Recently, AI Coding, Vibe Coding, and the like, have taken off and shifted the pardigm of development toward extremely fast, hands-off, AI developing AI, and various other rabbit holes. Ironically, the concepts and capabilities that AI Code Generation promise aren't necessarily all that new... code generation tools have been around since, well forever, as have low-code or no-code tools. At the end of the day, what matters most is the adoption, value, and functionality of the system being developed, along with the maintainability of the code that makes up the system.

Many higher level tools take away flexibility (and the fun) of development. Oftentimes, complex packages and libraries can abstract away an understanding of what/how/why the system does what it does. This project intends not to abstract away core functinality with light and intentional usage of more basic packages (not fully functional highly opinionated frameworks).

This project aims to provide a well-formed, "just enough" featured, minimalist boilerplate examplar under the idea that "anyone can code". And with that, we don't want to just spit out code that works (or looks like it works) as quickly as tokens could possibly be consumed, we instead focus on providing the components and resources to develop applications or services in a manner that prioritizes developers truly understanding the why, what, and how behind the things they are developing and making industry terminolgy and Buzzwords more real. We leverage code generation tools (mockery, oapi code generators, sqlc) to reduce boilerplate code development. Regardless of what is developed by hand or machine utilizing this project, the intent is to prioritize code quality over quantity, or more commonly, Clean Code along with Product quality.

Priorities & Decision Criteria

  • Anyone can code
  • Code and Feature Quality
  • Go as a first class citizen
  • Development focus and emphasis should be on the domain logic and user features
  • Development should be fun!
  • Semantic & Idiomatic code and tools
  • Tools should be configuration-based via yaml
  • Languages should be typesafe
  • Everything as code
  • not overengineered, but smart and scalable

Getting Started

[!WARNING] This project has only been tested for development on macOS

Prerequisites
Installation
# Clone the repository
git clone https://github.com/cooperlutz/go-full.git

# Change directory to the project folder
cd go-full

# run make init to initialize and run the project
make init

Then open your browser to http://app.lvh.me to see the running application

Additional Helpful Development Commands
make # end to end development tools

make compose # builds, deploys, and runs development environment

make commit # provides a mechanism to simplify conventional commits

For further details, please consult our docs

Directories

Path Synopsis
api
frontend
This package provides an HTTP handler for serving a Single Page Application (SPA) from embedded files using Go's embed package.
This package provides an HTTP handler for serving a Single Page Application (SPA) from embedded files using Go's embed package.
rest/examination/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
rest/examlibrary/v1/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
rest/grading/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
rest/iam/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
rest/pingpong/v1/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
rest/reporting/client
Package api_client provides primitives to interact with the openapi HTTP API.
Package api_client provides primitives to interact with the openapi HTTP API.
app
cmd
app command
examples
layered command
Basic DDD example in Go
Basic DDD example in Go
internal
examination
Package examination contains the module associated with the Examination domain.
Package examination contains the module associated with the Examination domain.
examination/adapters/inbound
Package inbound provides primitives to interact with the openapi HTTP API.
Package inbound provides primitives to interact with the openapi HTTP API.
examlibrary
The Exam Library Module encapuslates the functionality related to the Exam Library bounded context.
The Exam Library Module encapuslates the functionality related to the Exam Library bounded context.
examlibrary/api/rest/v1/server
Package server provides primitives to interact with the openapi HTTP API.
Package server provides primitives to interact with the openapi HTTP API.
grading
Package grading contains the module associated with the Grading domain.
Package grading contains the module associated with the Grading domain.
grading/ports
Package ports provides primitives to interact with the openapi HTTP API.
Package ports provides primitives to interact with the openapi HTTP API.
iam
pingpong/api/rest/v1/server
Package server provides primitives to interact with the openapi HTTP API.
Package server provides primitives to interact with the openapi HTTP API.
reporting/adapters/inbound
Package inbound provides primitives to interact with the openapi HTTP API.
Package inbound provides primitives to interact with the openapi HTTP API.
pkg
telemetree/metrics
Package httpserver is adapted from https://github.com/bwplotka/correlator/tree/main/examples/observability/ping/pkg/httpinstrumentation
Package httpserver is adapted from https://github.com/bwplotka/correlator/tree/main/examples/observability/ping/pkg/httpinstrumentation
utilitee
Package utilitee provides utility functions that can be used across the project
Package utilitee provides utility functions that can be used across the project
workerbee
Package workerbee provides a simple worker that executes tasks at regular cron intervals The worker initializes OpenTelemetry tracing and metrics providers based on the provided configuration.
Package workerbee provides a simple worker that executes tasks at regular cron intervals The worker initializes OpenTelemetry tracing and metrics providers based on the provided configuration.
test
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL