このリポジトリでは、MERN (MongoDB、Express.js、React.js、および Node.js) プロジェクトで従うべき運用のベスト プラクティスを追加し続けます。また、UX を向上させるために、UI に Antd Pro を使用しています。後で MUI も使用するかもしれません。
以下はサンプル リスト ページのサンプルです。
名前が示すように、このリポジトリは Express.js と React.js の上に構築されていますが、実装の詳細では、他のサポート テクノロジも見つかります。
フレームワークとパッケージの詳細は、サーバーおよびクライアント ディレクトリの package.json ファイルにあります。
このプロジェクトは基本的に 2 つの方法で実行できます。 1 つは docker を使用する方法、もう 1 つは vscode を介して手動で実行する方法です。
MongoDB ホスティング オプションに応じて、適切な docker-compose ファイルを選択します。
現在、2 つの docker-compose ファイルがあります。
docker-compose.mongocloud.yml
- MongoDB.com でホストされるクラスターdocker-compose.yml
- ローカル MongoDB コンテナーdocker-compose.mongocloud.yml
のMONGODB_CLOUD_URL
を適切な MongoDB URL に変更する必要があります。docker-compose.yml
のREACT_APP_API_URL
を適切な API URL に変更する必要があります。クライアントをインターネットに公開したい場合は、 REACT_APP_API_URL
適切な API URL に変更する必要があります。それ以外の場合は、 REACT_APP_API_URL
http://localhost:8002
のままにします。docker-compose コマンドを実行する
マシンには docker と docker-compose がインストールされている必要があります。リポジトリのルートに移動し、適切なコマンドを実行します。これにより、Docker 環境内でサーバーおよびクライアント コンテナーが、MongoDB コンテナー (ローカル MongoDB サーバーを使用している場合) とともにスピンアップされます。
クラウドでホストされている MongoDB で Docker コンテナを使用する
> cd project-root
> docker-compose -f docker-compose.mongocloud.yml build
> docker-compose -f docker-compose.mongocloud.yml up
ローカル MongoDB での Docker コンテナの使用
> cd project-root
> docker-compose build
> docker-compose up
クライアントとサーバーは両方とも稼働しており、クライアントの URL に移動すると次の画面が表示されます。
シードデータ Docker コンテナ内に移動し、以下のコマンドを実行します。これらにより、データベースにroles
、 users
、 products
データがシードされます。
docker exec -it appserver bash
npm run db:seed
npm run db:migrate
次の出力が表示されるはずです。
アプリケーションにログインすると、製品リストが表示されます。
vscode 経由で実行するには、サーバー側とクライアント側のプロジェクトを別々に実行し、mongodb が稼働していることを確認する必要があります。
server
ディレクトリ内に.env
ファイルを作成します。以下のエントリを追加するか、それに応じて変更します。 .env.sample
ファイルに従ってフォーマットを確認できます。
DB_HOST=localhost
DB_PORT=27017
DB_NAME=appdb
JWT_SECRET=secret
JWT_EXPIRES_IN=3600
PORT=5000
IS_MONGODB_CLOUD_URL=false
MONGODB_CLOUD_URL=mongodb+srv:// <USER >: <PASSWORD >@cluster0.abcd.mongodb.net/myFirstDatabase?retryWrites=true
MongoDB を Docker コンテナーで実行すると仮定します。
cd server
npm i
npm run db:up
npm start
cd client-pro
nvm use --lts
yarn
yarn start
データベースをシードするには、Docker コンテナーで次のコマンドを実行する必要があります。サーバーとクライアントを Docker 環境の外で実行している場合は、ターミナルでもこれらのコマンドを実行できます。 appserver を Docker コンテナ内で実行していると仮定します。
docker exec -it appserver bash
npm run db:seed
npm run db:migrate
/server/setup/users.json
ファイルでユーザー名とパスワードを確認できるはずです。
アプリケーションの権限管理 UI を導入しました。サンプル画像を以下に示します。
Sentry.io
への一元的なログログを Sentry.io に送信することもできます。この機能を使用するには、 dsn
エントリclient/src/env.config.js
に追加する必要があります。セットアップ スニペットは、 index.js
ファイル内で次のようになります。
Sentry . init ( {
dsn : Config . dsn ,
integrations : [ new Integrations . BrowserTracing ( ) ] ,
tracesSampleRate : 1.0 ,
} ) ;
server
API API を表示するには、ブラウザを開いてhttp://localhost:5000/api-docs
にアクセスします。理想的には、すべての API エンドポイントを Swagger に追加する必要がありますが、デモの目的では、Products API エンドポイントのみを追加しました。
API をテストするには、postman コレクションを再利用できます。 docs/rbac-mern-boilerplate.postman_collection.json
を Postman で開くと、適切なペイロードを持つエンドポイントが表示されるはずです。
プロジェクト | 指示 | タスク |
---|---|---|
根 | npm run build | コンテナを構築します |
根 | npm run start | Docker コンテナでプロジェクトとデータベースを開始する |
根 | docker exec -it appserver /bin/sh 次に、 npm run db:seed | コンテナ内でシード製品を実行します |
サーバ | npm i | サーバー側の依存関係をインストールする |
サーバ | npm run db:up | Dockerコンテナでデータベースを起動する |
サーバ | npm run test | jest 使用してテストを実行する |
クライアント | npm i | クライアント側の依存関係をインストールする |
クライアント | npm run start | 反応アプリを起動する |
クライアント | npm run build | 実稼働モードで React アプリをビルドする |
クライアント | npm run test | Testing Library 使用してテストを実行する |
このリポジトリには、単体テストと統合テストの両方が含まれています。現時点ではコード カバレッジは非常に低いですが、将来的には 90% 以上になるように取り組んでいます。
localStorage
やaxios
などの外部依存関係をすべてモックしました。テストを実行するには、 npm run test
コマンドを実行します。
Jest
テスト ライブラリとして統合し、統合テストを容易にするためにsupertest
およびmongodb-memory-server
パッケージを追加しました。Jest
使用してサービス層をテストし、 MongoDB
などの外部依存関係を模擬しました。テストを実行するには、 npm run test
コマンドを実行します。
このプロジェクトは MIT ライセンスを受けています。
今のところ、私はコードに関してコミュニティへの貢献を受け付けていません。ただし、ご提案がある場合やバグを見つけた場合は、お気軽にイシューまたはプル リクエストを開いてください。
一方、何か知りたい場合、またはこのプロジェクトについてディスカッションを開始したい場合は、GitHub のディスカッション ボードでディスカッションを開始してください。
このプロジェクトのコーディング手順を画面録画してきました。ビデオは YouTube プレイリストで見つけることができます。これらのビデオはバングラ語のみですが、興味のある国際的な視聴者のために英語で特別な有料セッションを喜んで受講します。何かサポートが必要な場合は、お気軽に [email protected] までご連絡ください。
ありがとう。乾杯。