Serving static files¶
MicroPie deliberately avoids bundling a static file server. Serving static content such as images, CSS and JavaScript can be delegated to a specialised middleware or a separate web server. This approach keeps the core framework small and flexible.
Using a static file middleware¶
To serve static files from within your MicroPie application, you can
use third‑party libraries such as
ServeStatic or
Starlette’s StaticFiles class. The example below uses
ServeStatic to serve files from a static directory:
from micropie import App
from servestatic import ServeStatic
class MyApp(App):
async def index(self):
return "Hello, world!"
app = MyApp()
# Mount the static file handler at the /static path
app_with_static = ServeStatic(app, directory="static", path_prefix="/static")
When running your application, pass app_with_static to your ASGI
server instead of app. Requests to paths under /static will
be served from your static directory, while all other requests
fall through to your MicroPie routes.
Using a reverse proxy¶
Alternatively, you can serve static files via a dedicated HTTP server
such as Nginx or Caddy. In production deployments this is often the
preferred option, as a dedicated server can handle caching and
compression. Configure your web server to serve the /static
prefix directly from the filesystem and forward all other requests to
your ASGI server running MicroPie.