- Bun: 1.0以上 (高速JavaScript/TypeScriptランタイム)
- Node.js: 18.0以上 (Vercel Functions対応)
- Git: 2.0以上 (バージョン管理)
- OS: macOS, Linux, Windows
- ブラウザ: Chrome, Firefox, Safari, Edge (最新版)
- メモリ: 4GB以上
- ストレージ: 2GB以上の空き容量
- ネットワーク: インターネット接続
- フレームワーク: React 19.1.1
- 言語: TypeScript 5.9.3
- ビルドツール: Vite 7.1.7
- UI/UX: Framer Motion 11.11.17 + Tailwind CSS 4.1.0
- アイコン: Lucide React 0.460.0
- フォーム: React Hook Form 7.65.0
- ランタイム: Bun 1.0+
- フレームワーク: Express.js 5.1.0
- 言語: TypeScript 5.9.3
- 暗号化: @cloudflare/voprf-ts 1.0.0
- API仕様: Swagger OpenAPI 3.0
- フロントエンド: Vercel
- バックエンド: Vercel Functions
- CI/CD: GitHub Actions
- パッケージマネージャー: Bun
git clone https://github.com/jphacks/sp_2506.git
cd sp_2506
# 完全自動セットアップ(推奨)
make setup
# または段階的にセットアップ
make install-tools # 開発ツールの確認
make setup-backend # バックエンド環境セットアップ
make setup-frontend # フロントエンド環境セットアップ
# バックエンド
cd jph-back-core
bun install
# フロントエンド
cd ../jph-front-core
bun install
# バックエンド設定(秘密鍵は自動生成されます)
cd jph-back-core
make generate-key # 新しい秘密鍵を生成
# フロントエンド設定
cd jph-front-core
echo "VITE_API_BASE_URL=http://localhost:3000" > .env.local
# バックエンド + フロントエンドを同時起動
make dev
# バックエンドのみ
make dev-backend
# フロントエンドのみ
make dev-frontend
# 必要な開発ツールの確認
make install-tools
# macOS/Linux
curl -fsSL https://bun.sh/install | bash
# Windows
powershell -c "irm bun.sh/install.ps1 | iex"
# 代替方法(npm経由)
npm install -g bun
# Node.js(Bunの代替として)
# https://nodejs.org/
# Git
# https://git-scm.com/
# OpenSSL(暗号化処理用)
# macOS: brew install openssl
# Ubuntu: sudo apt-get install openssl
# Docker(オプション)
# https://www.docker.com/get-started
sp_2506/
├── jph-back-core/ # バックエンドプロジェクト
│ ├── src/ # ソースコード
│ ├── tests/ # テストファイル
│ ├── secrets/ # 秘密鍵ファイル
│ └── package.json # 依存関係
├── jph-front-core/ # フロントエンドプロジェクト
│ ├── src/ # ソースコード
│ ├── public/ # 静的ファイル
│ └── package.json # 依存関係
└── docs/ # ドキュメント
cd jph-back-core
# 強力な秘密鍵を生成
openssl rand -base64 32 > secrets/key.priv
# 権限を制限
chmod 600 secrets/key.priv
# 開発用の簡単な秘密鍵
echo "dev-key-$(date +%s)" | base64 > secrets/key.priv
# .env ファイルを作成
cat > jph-back-core/.env << EOF
PORT=3000
NODE_ENV=development
OPRF_PRIVATE_KEY_PATH=./secrets/key.priv
CORS_ORIGIN=http://localhost:5173
EOF
# .env.local ファイルを作成
cat > jph-front-core/.env.local << EOF
VITE_API_BASE_URL=http://localhost:3000
VITE_APP_NAME=OPRF Client
VITE_APP_VERSION=1.0.0
EOF
# 全テストを実行
make test
# バックエンドテストのみ
make test-backend
# フロントエンドテストのみ
make test-frontend
# テストカバレッジ
make test-coverage
# バックエンドテスト
cd jph-back-core
bun test
# フロントエンドテスト
cd jph-front-core
bun test
# 自動実行
make test-coverage
# 手動実行
cd jph-back-core && bun test --coverage
cd jph-front-core && bun test --coverage
# jph-back-core/Dockerfile
FROM oven/bun:1-alpine
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
COPY . .
EXPOSE 3000
CMD ["bun", "run", "start"]
# jph-front-core/Dockerfile
FROM oven/bun:1-alpine as builder
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
COPY . .
RUN bun run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
version: '3.8'
services:
backend:
build: ./jph-back-core
ports:
- "3000:3000"
environment:
- NODE_ENV=production
volumes:
- ./jph-back-core/secrets:/app/secrets:ro
frontend:
build: ./jph-front-core
ports:
- "5173:80"
depends_on:
- backend
# 自動起動(推奨)
make docker-up
# 手動起動
docker-compose up -d
# ログの確認
make logs
# または
docker-compose logs -f
# 停止
make docker-down
# または
docker-compose down
# 解決方法
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc # または ~/.zshrc
# 使用中のポートを確認
lsof -i :3000
lsof -i :5173
# プロセスを終了
kill -9 <PID>
# ファイルの存在確認
ls -la jph-back-core/secrets/
# 権限の確認
chmod 600 jph-back-core/secrets/key.priv
# キャッシュをクリア
bun pm cache rm
# 再インストール
rm -rf node_modules bun.lock
bun install
cd jph-back-core
bun run dev 2>&1 | tee logs/backend.log
cd jph-front-core
bun run dev 2>&1 | tee logs/frontend.log
# プロジェクト状態の確認
make status
# プロジェクト情報の表示
make info
# ログの確認
make logs
# bunfig.toml を作成
cat > bunfig.toml << EOF
[install]
cache = true
frozen-lockfile = true
[run]
bun = true
EOF
# メモリ使用量を確認
ps aux | grep bun
# メモリ制限を設定
export NODE_OPTIONS="--max-old-space-size=4096"
# 全プロジェクトをビルド
make build
# デプロイ実行
make deploy
# 本番用環境変数
export NODE_ENV=production
export PORT=3000
export OPRF_PRIVATE_KEY_PATH=/app/secrets/key.priv
# ファイアウォール設定
ufw allow 3000
ufw allow 443
# SSL証明書の設定
# Let's Encryptを使用
certbot --nginx -d yourdomain.com
# ヘルスチェックスクリプト
cat > healthcheck.sh << 'EOF'
#!/bin/bash
curl -f http://localhost:3000/api/status || exit 1
EOF
chmod +x healthcheck.sh