軽量で無料で使えるシンプルなフィードバックツール。
ユーザーや開発者が新機能を提案し、投票できるシンプルなフィードバックボード。
graph LR
IDEAS[アイデア] --> P
subgraph AFM [Astro Feature Map]
P[提案] --> R{レビュー}
R --> V[投票]
end
V --> D[開発]
style AFM fill:#f8fafc,stroke:#334155,stroke-width:1px
style P fill:#3b82f6,stroke:#1e3a8a,color:#fff
style R fill:#3b82f6,stroke:#1e3a8a,color:#fff
style V fill:#3b82f6,stroke:#1e3a8a,color:#fff
style IDEAS fill:#f1f5f9,stroke:#475569
style D fill:#10b981,stroke:#064e3b,color:#fff
- 🗳️ 手軽な投票: ログイン不要。IPとブラウザフィンガープリントによる重複防止。
- 🚀 迅速な導入: 外部OAuthやAPIキーの設定不要。環境変数だけでデプロイ完結。
- ⚡ エッジ駆動: Cloudflare D1/Pagesによる1秒未満の高速レスポンス。
- 🗺️ マップ切り替え: 独自の「マップ」表示と従来の「ロードマップ」表示を切り替え可能。
- 📝 Markdown対応: リアルタイムプレビュー付きのMarkdown記述をサポート。
- 🌍 多言語対応: 英語と日本語(
en,ja)を標準サポート。 - 📊 チャート表示: 日別の投票状況のトラッキングとトレンドチャートを内蔵。
- 🌓 アダプティブテーマ: OS設定に合わせたダーク/ライトモードの自動切り替え。
エッジ環境に最適化された、モダンで高性能なツールで構築。
- Frontend: SvelteKit (Svelte 5) + adapter-static
- Backend API: Hono on Cloudflare Pages Functions
- Database: Cloudflare D1 (エッジ上のSQLite)
- Styling: Tailwind CSS
- ORM: Drizzle ORM
- Node.js 18+
- pnpm
- Wrangler CLI
pnpm install
pnpm db:migrate:local
pnpm devプロジェクトのルートに .dev.vars ファイルを作成。
# ダッシュボードへのログインパスワード
ADMIN_TOKEN=your-secure-token
# 内部API認証用キー
DEVELOPER_API_KEY=your-dev-api-key
# 重複投票防止(IP/フィンガープリントのハッシュ化)用のランダムなソルト
FINGERPRINT_SALT=your-random-salt- トークンベースの管理: 複雑なOAuthやユーザー管理は不要。
ADMIN_TOKEN1つでダッシュボードを保護。 - API保護:
DEVELOPER_API_KEYにより、カテゴリー管理などの機密エンドポイントの保護や、外部ツール(CLI/CI)からの自動管理が可能。 - 投票のセキュリティ: IPハッシュ、ブラウザフィンガープリント、サーバーサイドの
FINGERPRINT_SALTを組み合わせ、アカウントなしで重複投票を防止。 - リポジトリの秘匿性: すべての機密キーは環境変数とCloudflare Secretsで管理。
Cloudflare Pagesへ数秒でデプロイ可能。
- D1データベースの作成:
pnpm wrangler d1 create astro-feature-map - 設定の作成:
cp wrangler.toml.example wrangler.tomlを実行し、database_idを記入。 - マイグレーションの実行:
pnpm db:migrate:prod - デプロイ:
pnpm run pages:deploy