RealWorld spec and API.Golang clean-architecture codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the
This codebase was created to demonstrate a fully fledged fullstack application built with go including CRUD operations, authentication, routing, pagination, and more.
We've gone to great lengths to adhere to the go community styleguides & best practices.
For more information on how to this works with other frontends/backends, head over to the RealWorld repo.
How it works
Clean Architecture :
Layers ( from the most abstract to the most concrete ) :
- domain : abstract data structures
- uc : "use cases", the pure business logic
- implem : implementations of the interfaces used in the business logic (uc layer)
- infra : setup/configuration of the implementation
Golden rules :
- a layer never imports something from a layer below it
- 3rd-party libraries are forbidden in the 2 topmost layers
Build the app
Run the app
Run the integration tests
Start the server with an existing user
In another terminal, run the tests against the API
newman run api/Conduit.postman_collection.json \ -e api/Conduit.postman_integration_test_environment.json \ --global-var "EMAILfirstname.lastname@example.org" \ --global-var "PASSWORD=password"
The version is either
0.1.0 if no tag has ever been defined or the latest
tag defined. The build number is the SHA1 of the latest commit.
- make: Builds and injects version/build in binary
- make init: Sets the pre-commit hook in the repository
- make docker: Build docker image and tag it with both
- make latest: Build docker image and tag it only with
- make test: Executes the test suite
- make mock: Generate the necessary mocks
- make clean: Removes the built binary if present