推しアイデア
交換したプロフィールをもとにクイズを作成! 名前はもちろん、年齢や趣味、使う言語なども出題されます。 問題はグループごとに出題され、プロフィールを交換した友人を任意のグループに追加して、サークルや職場などに分けて覚えることができます。
―
交換したプロフィールをもとにクイズを作成! 名前はもちろん、年齢や趣味、使う言語なども出題されます。 問題はグループごとに出題され、プロフィールを交換した友人を任意のグループに追加して、サークルや職場などに分けて覚えることができます。
チーム名"顔と名前が一致しない"の通り、自己紹介済みの相手でも名前が出てこない、なんてことはよくあること......。 何度も名前を聞くのは忍びない、でも一発では覚えられない、クイズにもなるような名刺交換がしたい!そんな背景で作られています。
フロントはNext.js、バックエンドはecho。docker環境でdbとgoを動かしたり、airでホットリロードできるように等、開発がスムーズになるように環境構築をしました。 また、認証をcognito、画像の保存をs3で実装したりなど、デプロイまで意識して構成しています。
コードとしての使用技術は、エンドポイントの実装を行うためのechoとdbの操作を行うgormによって構成されたAPI、およびdbとして機能するMySQLがdocker compose 環境で動くように構成している。echoはAirを導入することでホットリロードを行い、スムーズな開発を行えるようにした。
kaotonamae_back ├── README.md ├── docker-compose.yml └── golang ├── Dockerfile ├── db │ └── db.go // dbへの接続 ├── go.mod ├── go.sum ├── main.go ├── migrate │ └── migare.go // AutoMigrate ├── models // データを取り扱うための構造体の定義とその操作 │ ├── auth.go │ ├── friend.go │ ├── group.go │ ├── groupMember.go │ ├── quiz.go │ ├── user.go │ └── userInfo.go ├── routes // ルーティング及びapiのレスポンス │ ├── auth.go │ ├── friend.go │ ├── group.go │ ├── groupMember.go │ ├── quiz.go │ ├── routes.go │ ├── user.go │ └── userInfo.go └── tmp // Airによるホットリロード時にビルドされる一時ファイル ├── build-errors.log └── main
仕様としては、
バックエンドの担当は今回が初めてのgoでの開発であったのだが、ターミナルにairとechoの文字がアスキーアートとして表示されるのに感動し、自分も何かしてやろうと、エンドポイントのメソッドとパスを起動時に出力する機能の実装を行っていた。 (なお、ご丁寧に色分けまでしたにも関わらず、三つほどコミットが進んだあたりでエラーを引き起こし、泣く泣くrevertされている。)
Next.js,TypeSriptを使用して実装した。認証、認可にAWSのCognito,Amplifyを使用しており、middlewareを使用して認証時のリダイレクトの管理をしました画像はS3にアップロードする仕組みにしました。