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.4.tar.gz (28.3 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.4-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sqlite_webpanel-0.1.4.tar.gz
  • Upload date:
  • Size: 28.3 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.4.tar.gz
Algorithm Hash digest
SHA256 77c0f385807c3cf7ae67992974f115367add1a9b04f6c8e19420e88662f03038
MD5 cf30eaf0c0596246c5237da33baf236c
BLAKE2b-256 55c89124606596108a33d19167d9efc0b3698e64b08c05a2ac5098befdea6b43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sqlite_webpanel-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c285121e04c7f8bf486f707269b48a6d5253e6b1db2377258d45fe25f69dac53
MD5 1415e1bc4bff20b2194a510135cd0c01
BLAKE2b-256 a2651b8ec06a059a51f12f98dc996be30b938daa8a7f54b7c5d7c057b6a042a8

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