- AR会謹製豚そば「こうじろう」の食券管理システム
以下のインストールおよびセットアップをすること.
- VSCode
- Docker
- Git
- Node.js
- pnpm
また,VSCode内に以下の拡張機能のインストールが必要.
- Dev Containers
Workingディレクトリにおいて,GitHubからソースファイルをクローンする.
git clone "[email protected]:ARCircle/Kojirer.git"クローンしたディレクトリに移動し,.envファイルをコピーする.
cd Kojirer
cp example.env .env
cp example.env.container .env.containerpnpm installdocker composeを使用して開発用のDB、フロントエンド、バックエンドのサーバーを起動する。
docker compose upサーバーが起動したら下記コマンドでDBのマイグレーションを実行する。
pnpm run migrate:devDBにシードを入れる。
docker exec -i kojirer-db-local psql -U kojirer -d kojirer < packages/backend/examples/devdata.sql起動するサーバー
| サーバー | URL |
|---|---|
| フロントエンド | http://localhost:52800 |
| バックエンド | http://localhost:52600 |
| Prisma Studio | http://localhost:5555 |
| データベース | http://localhost:5333 |
ホットリロードが有効なのでこのサーバーを起動したままホストマシンでコードを編集して開発を進められる。
本番環境も一応用意している。
docker compose -f docker-compose.prod.yml up本番環境では統合されたバックエンドサーバー (port: 52600) のみが起動する。
Kojirerのコア部分.基本的にここをいじくることになる.
| Feature | Package |
|---|---|
| HTTPサーバフレームワーク | Express.js |
| ORM/マイグレーションツール | Prisma.js |
| データベース | PostgreSQL |
tsファイルをsrc/routesに追加すると,そのファイル名のパスが作られる.
バックエンド側の型再生成
pnpm run apiデータベースへのテーブルの追加や編集といったスキーマへの操作を記録し,それらを逐次実行することで,開発者間で環境を揃えることをマイグレーションという.
このリポジトリにおけるマイグレーションの手順は以下のとおりです.
prisma/schema.prismaにおいて,スキーマを編集するpnpm run migrate:createを実行し,sqlファイルをprismaディレクトリ以下に作成される- 作成されたsqlファイルを確認し,既存のスキーマを壊すことがないか確認
pnpm run migrate:devでsqlを実行する
| Feature | Package |
|---|---|
| UIライブラリ | React |
| ルーティングライブラリ | @generouted/react-router |
| UIコンポーネント | Chakra UI |
pnpmの問題かは不明だが最新のNode24を使用するとpnpm install時にnodeのJavaScript heap out of memoryエラーが発生して失敗する
そのためプロジェクトのビルドおよびCIではNode.jsのバージョンを22に設定している。
kubernetes dashboardがデプロイされているので以下で確認できる。
- kubectl が入っていなければまずは何らかの方法でkubectlをインストール
- kubeconfigを
~/.kube/configに貼り付ける。(※configはディレクトリではなく拡張子なしのファイル)
# 一時的なトークンを生成
kubectl -n kubernetes-dashboard create token admin-user
# dashboard をポートフォワーディング
kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
# ブラウザで https://localhost:8443 にアクセスして上のトークンでログインPostgreSQLはHelmでデプロイ・管理されています。直接アクセスは基本無し。
# ポートフォワーディングでアクセス
kubectl port-forward svc/prisma-studio 5555:5555
# ブラウザで http://localhost:5555 にアクセス