Skip to main content

A plug-and-play SQLite admin panel for FastAPI — beautiful, fast, and intelligent by default.

Project description

sqlite-panel

A plug-and-play SQLite admin panel for FastAPI — beautiful, fast, and intelligent by default.

Preview

Python FastAPI License

Features

  • One-line mount — works with any FastAPI app
  • Auto-discovery — detects all tables and columns automatically
  • Smart cell rendering — JSON formatting, inline image previews, boolean badges, long text expand/collapse, file & URL links
  • Pagination, sorting, filtering, search — all built-in
  • Inline editing — double-click any cell to edit in place
  • Real-time change detection — toast notifications + auto-refresh when the DB changes
  • Read-only mode — disable all writes with a single flag
  • Light & dark mode — with smooth toggle and localStorage persistence
  • Keyboard shortcuts/ to search, n for new row, Esc to close modals
  • SQL injection safe — all user input is parameterised or strictly validated
  • Zero heavy dependencies — HTMX for partial refreshes, vanilla JS, Geist font via Google Fonts

Installation

pip install sqlite_webpanel

Quick start

from sqlite_webpanel import run_panel
run_panel(app, db_path="app.db")
# → Visit http://localhost:8888/admin

Development

git clone https://github.com/yourname/sqlite_webpanel
cd sqlite_webpanel
pip install -e ".[dev]"
pytest

Architecture

sqlite_panel/
├── __init__.py        # Public API: mount_sqlite_panel
├── mount.py           # FastAPI mounting + static files
├── router.py          # All HTTP endpoints (web layer)
├── db.py              # Core DB logic (pure Python, no web deps)
├── renderers.py       # Smart cell → HTML conversion
├── static/
│   ├── panel.css      # All styles (CSS variables, light/dark)
│   └── panel.js       # Interactivity (vanilla JS)
└── templates/
    ├── base.html      # Layout with sidebar
    ├── table.html     # Table view with toolbar
    ├── row_detail.html
    ├── empty.html
    ├── redirect.html
    └── partials/
        └── rows.html  # HTMX partial for table body

Key design decisions:

  • db.py has zero FastAPI/web imports — testable in isolation
  • renderers.py has zero DB imports — pure value → HTML transformation
  • All SQL uses parameterised queries or _safe_identifier() validation
  • HTMX partial endpoints allow row refresh without full page reload
  • Change detection via polling /api/fingerprint (row count hash)

Keyboard shortcuts

Key Action
/ Focus search
n Open "New Row" modal
Esc Close modal / cancel edit
Double-click cell Inline edit

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlite_webpanel-0.1.3.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqlite_webpanel-0.1.3-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file sqlite_webpanel-0.1.3.tar.gz.

File metadata

  • Download URL: sqlite_webpanel-0.1.3.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for sqlite_webpanel-0.1.3.tar.gz
Algorithm Hash digest
SHA256 10f0b04bfee9a819f5e453e6acca92e8a263af421e50b88f175249dad3c55cbd
MD5 ab026560fc5bf91827fcbc738aa00268
BLAKE2b-256 cb04cab57371e77c2a8384f8ccefde44fbb7b97371e4344aea29e3e61a913c4d

See more details on using hashes here.

File details

Details for the file sqlite_webpanel-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlite_webpanel-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1be2f8fd668d78122e70a4c7753d8d522de4bb4364404686b1bb1433188091da
MD5 ffbab43d5b11b9457c6ff6c1ec671781
BLAKE2b-256 df4bfc3d3586aafc6e0a2bd4ba2ec33faf584a416d4c8ef86536a96bb81d4c58

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page