Python Web Framework

Build with Pure Python.
Ship at Lightning Speed.

Production-ready components. Zero JavaScript. Rich domain entities with reactive UI.

Data Display

Rich Data Tables

Build complex data interfaces with sorting, filtering, and actions. All in pure Python.

Team Members

Manage your team and their permissions

MemberRole

Sofia Chen

sofia@company.com

Owner

Marcus Johnson

marcus@company.com

Developer

Aisha Patel

aisha@company.com

Viewer
team_table.py
from nitro import Card, Table, Avatar, Badge

def TeamTable(members):
    return Card(
        CardHeader(
            CardTitle("Team Members"),
            Button("Add Member", variant="primary"),
        ),
        CardContent(
            Table(
                TableHeader(
                    TableRow(
                        TableHead("Member"),
                        TableHead("Role"),
                    )
                ),
                TableBody(
                    *[MemberRow(m) for m in members]
                ),
            )
        ),
    )
Form Controls

Reactive Forms

Two-way data binding with Datastar signals. No JavaScript, no state management boilerplate.

settings.py
from nitro import Card, Switch, Select, Field

def NotificationSettings():
    return Card(
        CardHeader(
            CardTitle("Notification Settings"),
        ),
        CardContent(
            Field(
                Switch(bind="$emailNotifs"),
                label="Email Notifications",
                description="Receive updates via email",
            ),
            Field(
                Select(
                    Option("Daily"),
                    Option("Weekly"),
                    bind="$frequency"
                ),
                label="Digest Frequency",
            ),
        ),
        CardFooter(
            Button("Save Changes", variant="primary"),
        ),
    )

Notification Settings

Configure how you receive updates

Email Notifications

Receive updates via email

Push Notifications

Receive push notifications

Digest Frequency

How often to send summaries

Interactive

Complex Interactions

Tabs, accordions, modals, and more. Server-rendered with client-side interactivity.

Project Analytics

Live

Track your project metrics in real-time

Total Tasks

248

Completed

186

In Progress

42

Overall Progress

75%

Task list would go here...

Team members would go here...

dashboard.py
from nitro import Card, Tabs, Progress

def ProjectDashboard():
    return Card(
        CardHeader(
            CardTitle("Project Analytics"),
            Badge("Live", cls="bg-green-500"),
        ),
        CardContent(
            Tabs(
                TabsList(
                    TabsTrigger("Overview"),
                    TabsTrigger("Tasks"),
                ),
                TabsContent(
                    StatsGrid(
                        Stat("Total", "$total_tasks"),
                        Stat("Done", "$completed"),
                    ),
                    Progress(bind="$progress"),
                    id="overview"
                ),
                default_tab="overview",
            ),
        ),
    )

Ready to Build?

Get started in under a minute with pip install.

pip install nitro-boost