docs/update readme (#8)

更新 README
1. 簡述專案架構、重點資料夾或檔案的功用
2. 能夠在本地端啟動的教學

Co-authored-by: Simon Hung <yihsuan.simon@email.com>
Reviewed-on: #8
Reviewed-by: 王性驊 <igs170911@gmail.com>
Co-authored-by: simon.yhh <simon.yhh@30cm.net>
Co-committed-by: simon.yhh <simon.yhh@30cm.net>
This commit is contained in:
simon.yhh 2024-10-29 06:03:36 +00:00 committed by 王性驊
parent b3cfd0afaa
commit a4cec53aac
1 changed files with 90 additions and 0 deletions

90
README.md Normal file
View File

@ -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
```