Goの学習を目的として作成したサイト。学習時間を記録することができるサービス。
デモサイト: https://www.learnmemo.net/
- Goのクリーンアーキテクチャの設計
- Goでのインテグレーションテスト・ユニットテスト
- OAuth認証
- SPA(nuxtjs)とサーバー(gin)の連携
- Terraformでのインフラ構築(Route53, ACM, Fargate, RDS)
- OAuthSignUp、ログイン
- 学習記録のCRUD
クリーンアーキテクチャで構成。
- xormのコードをinfrastructure内に隔離し、ライブラリ変更の障壁を下げる
- 同様にgin, gothのコードをinterface内に隔離
.
├── domain
│ ├── model
│ └── repository
├── infrastructure
│ ├── repository
│ └── router
├── interfaces
│ ├── auth
│ ├── controller
│ └── middleware
├── main.go
└── usecase
docker-compose up -d
cd docker/mysql_helper
./init.sh
cd api
export ENV=dev
fresh -c recompile.conf
localhost:8080にアクセスすることでサーバー側の確認ができます。
cd api
export DB_NAME="gin_test"; export ENV="test"; go test -v .
cd frontend
yarn dev
ブラウザでlocalhost:3000にアクセスするとフロント側を確認できます。
DBのテーブル定義からmodelを生成する方法です。
$ xorm reverse mysql root:root@/gin?charset=utf8mb4 $GOPATH/src/github.com/go-xorm/cmd/xorm/templates/goxorm
ローカルからデプロイする場合
- Dockerイメージのビルド
cd frontend
yarn build
cd ../docker/production/api
./build.sh
- イメージのデプロイ
cd deploy/learnmemo
ecspresso deploy --config=config.yaml