RealWorld spec and API.
Golang clean-architecture codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the
Demo    RealWorld
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
Benefits :
- flexibility
- testability
Getting started
Build the app
make
Run the app
./go-realworld-clean
Run the integration tests
Start the server with an existing user
./go-realworld-clean --populate=true
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 "[email protected]" \
--global-var "PASSWORD=password"
Additional
Make Targets
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
latest
and version - make latest: Build docker image and tag it only with
latest
- make test: Executes the test suite
- make mock: Generate the necessary mocks
- make clean: Removes the built binary if present