Skip to content

umeneri/learnmemo

Repository files navigation

概要

Goの学習を目的として作成したサイト。学習時間を記録することができるサービス。

デモサイト: https://www.learnmemo.net/

学習・実装済み事項

  • Goのクリーンアーキテクチャの設計
  • Goでのインテグレーションテスト・ユニットテスト
  • OAuth認証
  • SPA(nuxtjs)とサーバー(gin)の連携
  • Terraformでのインフラ構築(Route53, ACM, Fargate, RDS)

機能

  • OAuthSignUp、ログイン
  • 学習記録のCRUD

Goサーバーサイド構成

クリーンアーキテクチャで構成。

  • 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

serverside

cd api
export ENV=dev
fresh -c recompile.conf

localhost:8080にアクセスすることでサーバー側の確認ができます。

test

cd api
export DB_NAME="gin_test"; export ENV="test"; go test -v .

frontend

cd frontend
yarn dev

ブラウザでlocalhost:3000にアクセスするとフロント側を確認できます。

xorm

reverse

DBのテーブル定義からmodelを生成する方法です。

$ xorm reverse mysql root:root@/gin?charset=utf8mb4 $GOPATH/src/github.com/go-xorm/cmd/xorm/templates/goxorm

デプロイ

ローカルからデプロイする場合

  1. Dockerイメージのビルド
cd frontend
yarn build
cd ../docker/production/api
./build.sh
  1. イメージのデプロイ
cd deploy/learnmemo
ecspresso deploy --config=config.yaml

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published