PyFastAdmin — FastAPIベースの管理画面サンプル

Web

概要

PyFastAdmin は、モダンなフロントエンド資産(HTMX、Alpine.js、Tailwind)と Python の FastAPI、テンプレート(Jinja2)および MongoDB 用の ODM(Beanie)を組み合わせた管理画面サンプルプロジェクトです。特徴は「不分離」アプローチで、SPA(シングルページアプリ)を採用せずサーバー側レンダリングをベースにしつつ、HTMX による部分的な DOM 更新でユーザー体験を向上させる点にあります。RBAC(役割ベースのアクセス制御)や権限ツリー、管理者アカウント管理、システム設定など実務で必要な管理機能を備え、ローカルにコンパイル済みの静的資産を含めることで外部依存を減らせる設計です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 1
  • ウォッチャー数: 4
  • コミット数: 30
  • ファイル数: 18
  • メインの言語: Python

主な特徴

  • サーバーサイドレンダリング+HTMX による「不分離(non-SPA)」な管理画面
  • RBAC(増削改查)と権限ツリーによる柔軟なアクセス制御
  • 全ての静的資産をローカルで管理(HTMX/Alpine/Tailwind のコンパイル済みファイル含む)
  • Docker を利用した開発/本番向け構成(dev 用 docker-compose、prod 用 Dockerfile)

技術的なポイント

PyFastAdmin は「シンプルで実践的な管理画面」を目標に、以下の技術的な選択と実装パターンを採用しています。

  • サーバーサイドレンダリング(Jinja2)を基盤に、ページ全体を都度描画する代わりに HTMX を使って部分的な HTML 断片を差し替えるアプローチを採ります。これによりフロントエンドの複雑度を抑えつつ、レスポンスの速さとアクセシビリティを確保できます。
  • Alpine.js は軽量なクライアントサイドの状態管理や小さな UI ロジック(モーダル、トグル、フォーム動作など)に用いられ、Vue や React のような重厚なフレームワークを不要にします。
  • Tailwind CSS によるユーティリティファーストなスタイリングで、レスポンシブ設計(モバイル/デスクトップ両対応)を効率的に実現。すべてのスタイルとコンパイル済みアセットはリポジトリ内に含められており、CDN 依存を排除しています。
  • サーバーは FastAPI(非同期)を採用し、Beanie(async ODM)+Motor(MongoDB ドライバ)の組み合わせで MongoDB を扱います。このスタックにより、非同期 IO を活かしたスケーラブルな処理が可能です。
  • 権限モデルは RBAC を基盤に、ページの URL や名称で権限を集約する「権限ツリー」を採用。管理者やロールの CRUD により、きめ細かい操作権限を設定できます。設定や SMTP などのシステムパラメータは DB に保存して管理画面から編集可能です。
  • 開発環境は deploy/dev の docker-compose(.env 参照)で MongoDB を立ち上げてローカルで動作確認でき、deploy/product に本番用 Dockerfile(uvicorn ベース)を含むためコンテナ化が容易です。
  • コードの可読性や学習用途を意識した構成で、小規模プロジェクトやプロトタイプ、HTMX と FastAPI の組み合わせを学ぶ教材として有用です。改善余地としてはテストカバレッジ、マイグレーション戦略、CI/CD 設定や外部認証(OAuth2)連携の追加が挙げられます。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: file
  • .gitignore: file
  • AGENTS.md: file
  • LICENSE: file
  • README.md: file

…他 13 ファイル

まとめ

モダンな軽量スタックで実装された学習向けの管理画面テンプレート。HTMX と FastAPI の組合せを試す良い出発点です。(約50字)

リポジトリ情報:

READMEの抜粋:

PyFastAdmin

HTMX + Alpine.js + Tailwind + FastAPI + Jinja2 + Beanie 的不分离管理后台示例。

功能

  • RBAC 权限管理(增删改查)
  • 权限树配置(按页面 URL/名称聚合)
  • 管理员管理(创建/编辑/禁用)
  • 登录、个人资料、修改密码场景页面
  • 系统配置(示例:SMTP)
  • 移动端/桌面端响应式布局
  • 所有静态资源本地化(HTMX/Alpine/Tailwind 编译产物均为本地)

目录结构

  • app/:FastAPI 应用与模板
  • app/static/:本地静态资源
  • deploy/dev/:仅数据库的开发环境
  • deploy/product/:生产环境 Dockerfile(uv 安装依赖)
  • refs/:外部仓库参考(已 gitignore)

本地运行

  1. 准备 MongoDB(开发环境)
cd deploy/dev
docker compose --env-file ../../.env up -d