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
go get -u github.com/golang/dep/cmd/dep $GOPATH/bin/dep ensure make
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