smithyhq/sqladmin
smithyhq/sqladmin has 2,852 GitHub stars and 305 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-06 20:28 UTC. Last push 2026-10-01.
SQLAlchemy Admin for FastAPI and Starlette
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalSQLAlchemy Admin for Starlette/FastAPI
General info
SQLAdmin is a flexible Admin interface for SQLAlchemy models.
Main features include:
- SQLAlchemy sync/async engines
- Starlette integration
- FastAPI integration
- WTForms form building
- SQLModel support
- UI using Tabler
Documentation: https://smithyhq.github.io/sqladmin
Source Code: https://github.com/smithyhq/sqladmin
Live Demo: https://sqladmin-demo.vercel.app/admin (Username: superadmin Password: superadmin)
Installation
Install using pip:
$ pip install sqladmin
Some features need extra packages, which are grouped into optional extras:
| Extra | Installs | Enables |
|---|---|---|
auth |
itsdangerous |
Session-backed authentication |
i18n |
babel |
Internationalization and localization |
full |
both of the above | Everything |
$ pip install "sqladmin[auth]"
$ pip install "sqladmin[i18n]"
$ pip install "sqladmin[full]"
Screenshots

Quickstart
Let's define an example SQLAlchemy model:
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base
Base = declarative_base()
engine = create_engine(
"sqlite:///example.db",
connect_args={"check_same_thread": False},
)
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
Base.metadata.create_all(engine) # Create tables
If you want to use SQLAdmin with FastAPI:
from fastapi import FastAPI
from sqladmin import Admin, ModelView
app = FastAPI()
admin = Admin(app, engine)
class UserAdmin(ModelView, model=User):
column_list = [User.id, User.name]
admin.add_view(UserAdmin)
Or if you want to use SQLAdmin with Starlette:
from sqladmin import Admin, ModelView
from starlette.applications import Starlette
app = Starlette()
admin = Admin(app, engine)
class UserAdmin(ModelView, model=User):
column_list = [User.id, User.name]
admin.add_view(UserAdmin)
Now visiting /admin on your browser you can see the SQLAdmin interface.
Related projects and inspirations
- Flask-Admin Admin interface for Flask supporting different database backends and ORMs. This project has inspired SQLAdmin extensively and most of the features and configurations are implemented the same.
- FastAPI-Admin Admin interface for FastAPI which works with
TortoiseORM. - Dashboard Admin interface for ASGI frameworks which works with the
ormpackage.
Explore related projects
freeCodeCamp/freeCodeCamp
freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.
458,697 starsdonnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
377,206 starsreact/react
The library for web and native user interfaces.
252,349 starsvuejs/vue
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
212,630 stars