Go Full¶
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