【個人開発】ChatGPTのプロンプト投稿アプリを作ってみた【React,Express.js,Node.js,MongoDB,Vercel,GitHub】

転職活動のためにポートフォリオを作成しました。
ご覧いただけると幸いです。
ユーザー登録、投稿等自由にしていただいて大丈夫です。
フィードバックいただけると幸いです。

スクールを使わずに、すべて個人で作成しました。
MERNスタック（MongoDB、Express.js、React、Node.js）でアプリを制作しております。

## アプリ紹介
サイトはこちら
https://menlo.vercel.app/

※自由に書き込みや登録いただいて大丈夫です。
※ポートフォリオの役割があるため、場合によっては投稿を削除する可能性がございます。予めご了承ください。

Githubはこちら
https://github.com/yusukesugahara/menlo

## サービス概要
ChatGPTについて、プロンプトに関する記事を投稿し共有するアプリです。ChatGPTをさらに有効活用できるようにノウハウや知識を学び共有する場として作成しました。

## 開発背景
### 1、自身がプロンプトに関する情報をもっと知りたかったため
私自身、ChatGPTを活用してアプリ制作の学習をしています。
**皆さんがアプリ制作や学習時にどんなChatGPTの使い方をしているのか知りたい**と思いました。
また、アプリ制作以外にも、本で出合った考え方についてChatGPTに質問してどう考えているか聞いたりしています。**アプリ制作以外にどのようなChatGPTアプリの使い方をしているのかも知りたく**このアプリを作成しました。

### 2、好みに合うUIを実現したかったため
ChatGPTのプロンプト投稿サイトを見ていたのですが、**UIが私の好みに合わなかったため自ら作ってみようと思いました。**

## MERNスタックにした理由
前職JAVA等の営業をしていたため、モダンなプログラム言語を使いたく、MERNスタックにしました。
今後、どんどん普及していくと考えているため。

## メイン機能
### 投稿一覧表示・記事閲覧
[![Image from Gyazo](https://i.gyazo.com/0419f905f22b528eed134a3f683ab3fa.gif)](https://gyazo.com/0419f905f22b528eed134a3f683ab3fa)
### 投稿の作成、編集、削除機能
投稿・編集
[![Image from Gyazo](https://i.gyazo.com/aa495092fbf72703aa698f273768c28e.gif)](https://gyazo.com/aa495092fbf72703aa698f273768c28e)

削除
[![Image from Gyazo](https://i.gyazo.com/8f567b4b3b085add0907b859b2c0d10d.gif)](https://gyazo.com/8f567b4b3b085add0907b859b2c0d10d)

## その他機能

### 検索機能
[![Image from Gyazo](https://i.gyazo.com/10fb9acc22d8f6e62da64001dd1c8ff1.gif)](https://gyazo.com/10fb9acc22d8f6e62da64001dd1c8ff1)

### ユーザー登録、ユーザーログイン
[![Image from Gyazo](https://i.gyazo.com/b68046ed8d3ec07639bf60190f1fac5d.gif)](https://gyazo.com/b68046ed8d3ec07639bf60190f1fac5d)

### マイページ・ユーザーページ
[![Image from Gyazo](https://i.gyazo.com/a89a7703fd6c5f0fe590401bea824801.gif)](https://gyazo.com/a89a7703fd6c5f0fe590401bea824801)

### キーワードごとに投稿一覧表示
[![Image from Gyazo](https://i.gyazo.com/6687b3eac88c884663a9ef9e086f41fa.gif)](https://gyazo.com/6687b3eac88c884663a9ef9e086f41fa)

### いいね機能
[![Image from Gyazo](https://i.gyazo.com/da8cbb89f6cc096810100dfc7c56774f.gif)](https://gyazo.com/da8cbb89f6cc096810100dfc7c56774f)

## 工夫点
**・情報の見つけやすさ**：知りたい情報を見つけやすくするために、検索機能、キーワード機能、ユーザー投稿一覧機能を実装しました。
**・質の高い投稿へのモチベーション**：質の高い投稿をするインセンティブを付けるためにいいね機能を実装しました。
**・セキュリティ対策**：ログインパスワードの暗号化、ユーザー認証機能の実装を行っています。環境変数を複数設定しています。

## 苦労した点
Herokuが有料化されていたため、無料で使えるサーバを自ら探しました。その結果、Vercelに選定しました。
このvercelへデプロイしたのですが、事例の記事がなく試行錯誤しながら頑張ってデプロイしました。
デプロイ記事は別に投稿しておりますので、気になった方は読んでいただけると有難いです。

## ER図作成
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426016/6e673c20-0d57-1afd-1d3a-fe76f0adbfc8.png)


## 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426016/f56585ae-9b08-b403-e0e8-c42cd725de2f.png)

## 技術スタック
| カテゴリ | 技術スタック | 
|:-----------|:------------|
| サーバサイド| Node.js 20.15.1 Express.js 4.19.2        |
| データベース| mongoDB 7.0.12|
| 認証       | jsonwebtoken 9.0.2<br>(認証トークンの発行と検証に使います。これにより、ユーザーのログイン情報を安全にやり取りします。)<br>bcrypt 5.1.1<br>(パスワードをハッシュ化して保存するために使います。ユーザーのパスワードをデータベースに平文で保存しないようにします。)       |
| フロントエンド| React 18.3.1 React Router 6.25.1         |
| デプロイ      | Vercel       |

## 終わりに
最後までご覧いただきありがとうございました。
今後もアプリ制作を続けていきたいと思っております。
フィードバック等ございましたらいただけますと幸いです。
何卒、よろしくお願いいたします。