---
# System prepended metadata

title: HEXAGONAL ARCH BREAKDOWN STEP

---

# HEXAGONAL ARCH BREAKDOWN STEP

1. Define ***core attribute*** in ```core/{core_name}```.
2. Define ***repository contract (interface)*** for your core in ```bussiness/{core_name}/repository.go```.
3. Define ***service contract*** and ***service contract implementation*** in ```bussiness/{core_name}/service.go```.
4. Write down your ***repository contract implementation*** and ***factory*** for core repository in ```modules/repository/{core_name}```.
5. Incase of creating RESTAPI
   1. Define core ***controller***, ***request & response function*** in ```modules/api/V1/{core_name}```. On this example is managing version within a folder ```V1```.
   2. Register core controller in ```app/server/main.go```.
   3. Define ***common & repeatable function or model (struc)*** related with controller in ```api/common```
