feat: initial release — Posimai Roadmap PWA
Board / Apps / Ideas の3ビューで実績・今・これからを管理する プロジェクト管理 PWA。roadmap.json + localStorage でデータ管理。 「JSON をコピー」機能で Claude との連携を前提に設計。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
d8a218da05
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"id": "/posimai-roadmap/",
|
||||||
|
"name": "Posimai Roadmap",
|
||||||
|
"short_name": "Roadmap",
|
||||||
|
"description": "Posimai プロジェクト課題・ロードマップ管理",
|
||||||
|
"start_url": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"display_override": ["window-controls-overlay", "standalone"],
|
||||||
|
"background_color": "#0D0D0D",
|
||||||
|
"theme_color": "#0D0D0D",
|
||||||
|
"orientation": "portrait-primary",
|
||||||
|
"categories": ["productivity"],
|
||||||
|
"icons": [
|
||||||
|
{ "src": "/logo.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
|
||||||
|
{ "src": "/logo.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"name": "posimai-roadmap",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Posimai プロジェクト課題・ロードマップ管理",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"deploy": "git push gitea main && git push github main"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,253 @@
|
||||||
|
{
|
||||||
|
"version": "1.0",
|
||||||
|
"updated": "2026-03-22",
|
||||||
|
"members": ["mai", "codev"],
|
||||||
|
"milestones": [
|
||||||
|
{
|
||||||
|
"id": "ms-01",
|
||||||
|
"title": "posimai-ui v2 移行",
|
||||||
|
"target": "2026-07-01",
|
||||||
|
"note": "破壊的変更。全アプリのタグ更新が必要なため段階的に計画する",
|
||||||
|
"status": "planning",
|
||||||
|
"apps": ["posimai-ui"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"apps": [
|
||||||
|
{
|
||||||
|
"id": "posimai-habit",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "habit-01",
|
||||||
|
"title": "ヒートマップ PDF 出力",
|
||||||
|
"status": "next",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "habit-02",
|
||||||
|
"title": "iCloud 同期",
|
||||||
|
"status": "hold",
|
||||||
|
"note": "S3 代替案・Supabase Storage と料金比較が必要",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-10",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "habit-03",
|
||||||
|
"title": "UPSERT COALESCE 修正(部分 POST でメトリクス消失)",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-01",
|
||||||
|
"commit": "e7ccd82",
|
||||||
|
"done_at": "2026-03-15"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-together",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "together-01",
|
||||||
|
"title": "メンバー招待フロー",
|
||||||
|
"status": "next",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "together-02",
|
||||||
|
"title": "Supabase 本番切り替え完了・並行レイヤー実装",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-21",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": "2026-03-21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "together-03",
|
||||||
|
"title": "全文検索・カード折り畳み・ソート・メンバーフィルター",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": "0c3eaa8",
|
||||||
|
"done_at": "2026-03-22"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-brief",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "brief-01",
|
||||||
|
"title": "VOICEVOX キャラクター切り替え UI",
|
||||||
|
"status": "backlog",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "brief-02",
|
||||||
|
"title": "記事タイトルリスト UI 追加",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": "2026-03-22"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-veil",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "veil-01",
|
||||||
|
"title": "ツールバー統合・カスタムアプリ登録",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-21",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": "2026-03-21"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-feed",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "feed-01",
|
||||||
|
"title": "サイドバー・メディアソース追加機能",
|
||||||
|
"status": "backlog",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-hotels",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "hotels-01",
|
||||||
|
"title": "楽天トラベル / じゃらん API 連携",
|
||||||
|
"status": "hold",
|
||||||
|
"note": "API 申請が必要。現在はモックデータで動作中",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-analytics",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "analytics-01",
|
||||||
|
"title": "Galaxy ビュー:Kintone 実データ連携",
|
||||||
|
"status": "next",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-ui",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "ui-01",
|
||||||
|
"title": "v2 設計・破壊的変更の計画",
|
||||||
|
"status": "backlog",
|
||||||
|
"note": "全アプリ横断の変更。マイルストーン ms-01 と連動",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ui-02",
|
||||||
|
"title": "13 アプリへのデザイントークン統一",
|
||||||
|
"status": "done",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-21",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": "2026-03-21"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "posimai-roadmap",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "roadmap-01",
|
||||||
|
"title": "Phase 2: GitHub/Gitea API 連携(git 活動フィード)",
|
||||||
|
"status": "backlog",
|
||||||
|
"note": "共同開発者の GitPulse と統合して Apps ビューに commit 履歴を表示",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"global": [
|
||||||
|
{
|
||||||
|
"id": "global-01",
|
||||||
|
"title": "server.js エンドポイント整理・ドキュメント化",
|
||||||
|
"status": "backlog",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22",
|
||||||
|
"commit": null,
|
||||||
|
"done_at": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ideas": [
|
||||||
|
{
|
||||||
|
"id": "idea-01",
|
||||||
|
"title": "posimai-focus",
|
||||||
|
"description": "Pomodoro + roadmap の next タスクを直接実行できる集中モード",
|
||||||
|
"status": "exploring",
|
||||||
|
"note": null,
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "idea-02",
|
||||||
|
"title": "GitPulse 統合ビュー",
|
||||||
|
"description": "共同開発者の GitPulse と roadmap を 1 画面に統合",
|
||||||
|
"status": "exploring",
|
||||||
|
"note": "共同開発者と相談が必要",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "idea-03",
|
||||||
|
"title": "posimai-finance",
|
||||||
|
"description": "家計簿・支出トラッキング PWA",
|
||||||
|
"status": "candidate",
|
||||||
|
"note": "APP_IDEAS.md に記載済み",
|
||||||
|
"by": "mai",
|
||||||
|
"created": "2026-03-22"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Posimai SW — stale-while-revalidate + update notification
|
||||||
|
const CACHE = 'posimai-roadmap-v1';
|
||||||
|
const STATIC = ['/', '/index.html', '/manifest.json', '/logo.png', '/roadmap.json'];
|
||||||
|
|
||||||
|
self.addEventListener('install', e => {
|
||||||
|
e.waitUntil(caches.open(CACHE).then(c => c.addAll(STATIC)));
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('activate', e => {
|
||||||
|
e.waitUntil(
|
||||||
|
caches.keys().then(keys =>
|
||||||
|
Promise.all(keys.filter(k => k !== CACHE).map(k => caches.delete(k)))
|
||||||
|
).then(() => self.clients.claim())
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener('fetch', e => {
|
||||||
|
if (e.request.method !== 'GET') return;
|
||||||
|
if (!e.request.url.startsWith(self.location.origin)) return;
|
||||||
|
|
||||||
|
e.respondWith(
|
||||||
|
caches.open(CACHE).then(cache =>
|
||||||
|
cache.match(e.request).then(cached => {
|
||||||
|
const network = fetch(e.request).then(res => {
|
||||||
|
if (res.ok && res.type === 'basic') cache.put(e.request, res.clone());
|
||||||
|
return res;
|
||||||
|
}).catch(() => cached);
|
||||||
|
return cached || network;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue