Awesome Open Source
Awesome Open Source

RealWorld Example App

Golang clean-architecture codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

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.

Build Status BCH compliance Codacy Badge codecov

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

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Go (194,107
Golang (32,181
Testing (6,223
Clean Architecture (1,694
Ddd (1,070
Clean Code (686
Example Project (619
Ddd Architecture (259
Hexagonal Architecture (256
Realworld (156
Related Projects