Skip to main content

fastapi-vue

Runtime helpers for FastAPI + Vite/Vue projects.

Overview

This package provides:

  • fastapi_vue.Frontend: serves built SPA assets (with SPA support, caching, and optional zstd)
  • fastapi_vue.server.run: a small Uvicorn runner with convenient listen endpoint parsing

Quickstart

Serve built frontend assets from frontend-build/:

from pathlib import Path
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi_vue import Frontend

frontend = Frontend(Path(__file__).with_name("frontend-build"), spa=True)

@asynccontextmanager
async def lifespan(app: FastAPI):
    await frontend.load()
    yield

app = FastAPI(lifespan=lifespan)

# Add API routes here...

# Final catch-all route for frontend files (keep at end of file)
frontend.route(app, "/")

Frontend

Frontend serves a directory with:

  • RAM caching, with zstd compression when smaller than original
  • Browser caching: ETag + Last-Modified, Immutable assets
  • Favicon mapping (serve PNG or other images there instead)
  • SPA routing (serve browsers index.html at all paths not otherwise handled)

Dev-mode behavior with FastAPI(debug=True): requests error HTTP 409 with a message telling you to use the Vite dev server instead. Avoids accidentally using outdated frontend-build during development.

  • directory: Path on local filesystem
  • index: Index file name (default: index.html)
  • spa: Serve index at any path (default: False)
  • catch_all: Register a single catch-all handler instead of a route to each file; default for SPA
  • cached: Path prefixes treated as immutable (default: /assets/)
  • favicon: Optional path or glob (e.g. /assets/logo*.png)
  • zstdlevel: Compression level (default: 18)

ℹ️ Even when your page has a meta tag giving favicon location, browsers still try loading /favicon.ico whenever looking at something else. We find it more convenient to simply serve the image where the browser expects it, with correct MIME type. This also allows having a default favicon for your application that can be easily overriden at the reverse proxy (Caddy, Nginx) to serve the company branding if needed in deployment.

Server runner

When you need more flexibility than fastapi CLI can provide (e.g. CLI arguments to your own program), you may use this convenience to run FastAPI app with Uvicorn startup on given listen endpoints. Runs in the same process if possible but delegates to uvicorn.run() for auto-reloads and multiple workers. This would typically be called from your CLI main, which can set its own env variables to pass information to the FastAPI instances that run (Python imports only work in same-process mode).

from fastapi_vue import server

server.run("my_app.app:app", listen=["localhost:8000"])
  • As a deployment option, environment FORWARDED_ALLOW_IPS controls X-Forwarded trusted IPs (default: 127.0.0.1,::1).

Download files

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

Source Distribution

fastapi_vue-1.4.2.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

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

fastapi_vue-1.4.2-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_vue-1.4.2.tar.gz.

File metadata

  • Download URL: fastapi_vue-1.4.2.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fastapi_vue-1.4.2.tar.gz
Algorithm Hash digest
SHA256 de8f42fde3bad8769fe76a769e6b4147a5adc35e9d4b158a3dff8163b7e131fb
MD5 fe057585b30a96b567d01375a78cd0b5
BLAKE2b-256 d0aedb72a6aa493b02c30f4054100b0047c2031137d0439e05cdc3b8ee08e6c3

See more details on using hashes here.

File details

Details for the file fastapi_vue-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: fastapi_vue-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 21.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for fastapi_vue-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 163563ee4afb1811183811cd340ceb4221d32bb17625729401aa76e6110762fe
MD5 522e335ba3eb88ce6bf9afc9fcb954fd
BLAKE2b-256 ac3d3458d739f8534437b299efd136b3fc44af008974dad0429807dd7c30464f

See more details on using hashes here.

Release history Release notifications | RSS feed

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

This release

1.4.2 This release

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.1

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.0.2

2 files

0.0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page