go-realworld-clean

a clean architecture implementation of the realworldapp : https://github.com/gothinkster/realworld

Github stars Tracking Chart

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=joe@what.com" \
  --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

Main metrics

Overview
Name With Ownererr0r500/go-realworld-clean
Primary LanguageGo
Program languageShell (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2018-07-22 19:53:26
Pushed At2023-06-05 02:05:00
Last Commit At2023-04-10 16:25:17
Release Count0
用户参与
Stargazers Count521
Watchers Count15
Fork Count81
Commits Count45
Has Issues Enabled
Issues Count8
Issue Open Count2
Pull Requests Count3
Pull Requests Open Count5
Pull Requests Close Count4
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private