Quick Start

This is a quick start guide to get you up and running with Seamless. The guide will show you how to setup Seamless and integrate it with FastAPI.

Installation

First, we need to install the Seamless package.

$ pip install python-seamless

Create Reusable Page

Seamless provides a default page component that is the minimal structure for a web page.

Since we want bootstrap to be included in all of our pages, we will create a new page component that extends the default page component and adds a link to the bootstrap stylesheet.

More information about the default page component can be found here.

Creating a custom page component
# page.py

from seamless import Link
from seamless.components.page import Page

class AppPage(Page):
  def head(self):
    return (
      *super().head(),
      Link(
        rel="stylesheet",
        href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"
      )
    )

Last, we create the FastAPI app and add an endpoint that will render our page when the user is accessing the root route.

Creating the FastAPI app
# main.py

from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from seamless import render, Div, P
from page import AppPage

app = FastAPI()

@app.get("/", response_class=HTMLResponse)
async def read_root():
    return render(
      AppPage(
        Div(class_name="container mt-5")(
          Div(class_name="text-center p-4 rounded")(
            Div(class_name="display-4")(
              "Hello, World!"
            ),
            P(class_name="lead")(
              "Welcome to seamless"
            )
          )
        )
      )
    )

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)

That’s it! Now you can run the app and access it at http://localhost:8000/.

It should display a page like this:

Quick Start