clean-architecture icon indicating copy to clipboard operation
clean-architecture copied to clipboard

[Deprecated] Clean architecture example written in Go.

Clean architecture example

This exercise examplifies:

  • Clean architecture
  • Testing
  • Mocking
  • Dockerizing
  • Linting

Technologies

  • Go
  • PostgreSQL
  • Docker and docker-compose
  • RESTful API
  • golangci-lint

TODO

Setup architecture

  • [X] Implement linting
  • [X] Implement entity layer
  • [X] Implement handler layer
  • [X] Implement controller layer
  • [X] Implement repository layer
  • [X] Initialize architecture in main
  • [X] Implement go mod
  • [ ] Implement GitHub Actions

Create

  • [X] Implement POST method for handler layer
  • [X] Implement mocks for Create method for controller layer
  • [X] Implement Create method for controller layer
  • [X] Implement mocks for Create method for repository layer
  • [X] Implement Create method for repository layer
  • [ ] Implement integration test for Create method

List

  • [X] Implement GET method for handler layer
  • [X] Implement List method for controller layer
  • [X] Implement List method for repository layer
  • [X] Implement mocks for List method
  • [ ] Implement integration test for List method

Detail

  • [ ] Implement GET method for handler layer
  • [ ] Implement Detail method for controller layer
  • [ ] Implement Detail method for repository layer
  • [ ] Implement mocks for Detail method
  • [ ] Implement integration test for Detail method

Delete

  • [ ] Implement DELETE method for handler layer
  • [ ] Implement Delete method for controller layer
  • [ ] Implement Delete method for repository layer
  • [ ] Implement mocks for Delete method
  • [ ] Implement integration test for Delete method

Docker

  • [ ] Dockerize Go
  • [ ] Dockerize PostgreSQL
  • [ ] Implement docker-compose

Technical Debt

  • [ ] Implement decoder as middleware
  • [ ] Implement encoder as middleware