Welfare, Healthcare, Administration, Long-term care, and Education
WHALEは、福祉事業所向けの包括的な情報管理システムです。完全クライアントサイド動作とオフライン対応を実現し、GitHub PagesとRender.comを活用した最新のアーキテクチャで構築されています。
- ✅ 完全オフライン対応: LocalStorage + PouchDBによるクライアントサイドデータ管理
- 🚀 高速動作: HTMX + Tailwind CSSによるモダンなUI
- 🔒 セキュア: JWT認証 + エンドツーエンド暗号化
- 📱 PWA対応: モバイルアプリのような使用感
- 🌐 無料ホスティング: GitHub Pages + Render.com Free Tier
- 🔄 自動デプロイ: GitHub Actionsによる継続的デリバリー
- 日々の生活記録(起床・就寝・食事・運動・入浴)
- バイタルサイン記録(体温・血圧・脈拍・SpO2)
- 気分状態のトラッキング
- 気付きやコミュニケーション記録
- データ可視化とグラフ表示
- 利用者情報管理
- 出席管理
- アセスメント作成
- サービス利用計画書作成
- 支援記録管理
- モニタリング報告書作成
- 組織・施設情報管理
- ユーザー管理
- 権限管理
- 監査ログ
- データエクスポート(PDF/Excel/CSV)
┌────────────────────────┐
│ GitHub Pages (フロントエンド) │
│ - HTML + HTMX + Tailwind CSS │
│ - LocalStorage + PouchDB │
│ - Service Worker (PWA) │
└────────────────────────┘
│ REST API
▼
┌────────────────────────┐
│ Render.com (バックエンド) │
│ - Node.js + Express │
│ - JWT認証 │
│ - PDF/Excel生成 │
│ - データ同期 │
└────────────────────────┘
- Node.js 18以上
- npm 9以上
- Gitアカウント
- Render.comアカウント(無料)
# リポジトリをクローン
git clone https://github.com/Uchida16104/WHALE.git
cd WHALE
# バックエンド依存関係インストール
cd backend
npm install
cd ..# バックエンド起動
cd backend
npm run dev
# 別ターミナルでフロントエンド起動
cd frontend
python -m http.server 8000
# または
npx serveブラウザで http://localhost:8000 を開く
# GitHubリポジトリ作成
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/uchida16104/WHALE.git
git push -u origin main
# GitHub Settings > Pages で以下を設定:
# - Source: Deploy from a branch
# - Branch: main
# - Folder: /frontend-
Render.comにサインアップ
-
"New +" → "Web Service"を選択
-
GitHubリポジトリを接続
-
以下の設定:
- Name: whale-backend
- Environment: Node
- Build Command:
cd backend && npm install - Start Command:
cd backend && npm start - Plan: Free
-
環境変数を設定:
NODE_ENV=production JWT_SECRET=<ランダムな文字列> CORS_ORIGIN=https://uchida16104.github.io -
"Create Web Service"をクリック
frontend/index.html の window.WHALE.API_URL を更新:
window.WHALE = {
API_URL: 'https://whale-backend-84p5.onrender.com', // ← Render.comのURL
GITHUB_PAGES_URL: 'https://uchida16104.github.io/WHALE',
VERSION: '2.0.0'
};WHALE/
├── frontend/ # GitHub Pages用
│ ├── index.html # メインエントリー
│ ├── login.html # ログイン
│ ├── register.html # 新規登録
│ ├── dashboard.html # ダッシュボード
│ ├── daily-record.html # 日々の記録
│ ├── css/
│ │ └── styles.css
│ └── js/
│ ├── app.js # メインアプリ
│ ├── auth.js # 認証管理
│ ├── storage.js # データ管理
│ └── utils.js # ユーティリティ
│
├── backend/ # Render.com用
│ ├── server.js # Expressサーバー
│ ├── package.json
│ ├── routes/
│ ├── middleware/
│ └── services/
│
├── .github/
│ └── workflows/
│ ├── deploy-frontend.yml
│ └── deploy-backend.yml
│
└── README.md
NODE_ENV=production
PORT=3000
JWT_SECRET=your-secret-key-here
CORS_ORIGIN=https://uchida16104.github.io{
"colorScheme": "default",
"language": "ja",
"fontSize": "medium",
"theme": "light"
}- 設定情報
- セッション情報
- キャッシュデータ
- 構造化データ
- オフラインデータ
- 同期キュー
ユーザー入力
↓
LocalStorage (即座に保存)
↓
PouchDB (構造化データ)
↓
バックエンドAPI (同期)
- JWT認証
- SHA-256パスワードハッシュ
- HTTPS強制
- CORS設定
- XSS対策
- CSRF保護
- レート制限
- セキュリティヘッダー
- クライアントサイド暗号化
- 個人情報保護法準拠
- GDPR対応設計
- 監査ログ記録
// sw.js
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open('whale-v1').then((cache) => {
return cache.addAll([
'/',
'/index.html',
'/css/styles.css',
'/js/app.js'
]);
})
);
});{
"name": "WHALE",
"short_name": "WHALE",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"