diff --git a/README.md b/README.md new file mode 100644 index 0000000..852d7a5 --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +# 專案說明 + +通知服務 + +# 專案架構 + +``` +$tree -L 3 --gitignore + +. +├── Makefile +├── build +│ └── Dockerfile +├── chart +│ └── readme.md +├── etc +│ └── service.example.yaml # 設定檔範例 +├── generate # 這個資料夾會用來自動生成一些程式 +│ ├── database ## 資料庫生成檔案或紀錄遷移版本 +│ │ ├── mongodb +│ │ ├── mysql +│ │ ├── readme.md +│ │ └── seeder +│ └── protobuf ## gRPC 的定義,用來生成 gRPC 檔案 +│ └── notification.proto +├── go.mod +├── internal +│ ├── config # 設定的結構 +│ │ └── config.go +│ ├── domain # 此服務下的一些常數定義 +│ │ ├── errors.go ## 錯誤定義 +│ │ └── usecase ## usecase 內的常數定義 +│ │ ├── mail.go +│ │ └── sms.go +│ ├── logic # 主要的程式邏輯都在這,每個功能用一個資料夾開發 +│ │ └── senderservice +│ ├── server +│ │ └── senderservice # gRPC 自動產生的檔案 +│ ├── svc # 此服務下會共用的功能,例如 API context, db 連線等 +│ │ └── service_context.go ## API context +│ └── usecase +│ ├── mitake.go +│ └── smtp.go +└── notification.go # 服務主入口 +``` + +# 啟動說明 + +此文件會介紹以下兩種啟動方式: + +1. Docker 啟動 (Production 時使用) +2. 本地端 go compiler 啟動 (開發、測試時使用) + +## Docker 啟動 (Production) + +```bash +make build-docker +make run-docker +``` + +## 本地端啟動(測試用) + +```bash +go mod tidy +# 進入 etc/notification.yml 設定各依賴的 config +go run notification.go +``` + +### 本地啟動需要依賴套件或工具 + +以下已 macOS 為例,若已安裝或有其他可用服務則可跳過 + +- go-zero goctl (https://go-zero.dev/docs/tasks/installation/goctl) + ```bash + $ go install github.com/zeromicro/go-zero/tools/goctl@latest + ``` +- protobuf (https://protobuf.dev/) + ```bash + brew install protobuf + ``` +- etcd (https://etcd.io/) + ```bash + brew install etcd + brew services start etcd + ``` +- SMTP 服務(以 mailhog 為例) (https://github.com/mailhog/MailHog) + ```bash + brew install mailhog + brew services start mailhog + ```