Skip to main content

Serve React components from Python backends

Project description

wilco

Server-defined React components for Python backends.

PyPI version Python versions CI Documentation License

Documentation: FastAPI Guide | Django Guide | Flask Guide | Starlette Guide

Features

  • Co-locate components with backend logic — Keep UI components next to the Python code that powers them
  • No frontend build pipeline — Components bundled on-the-fly with esbuild when requested
  • Production-ready — Pre-compile bundles with wilco build for static file serving
  • Full source map support — Debug TypeScript directly in browser devtools
  • Component composition — Components can dynamically load other components
  • Framework agnostic — Works with FastAPI, Django, Flask, Starlette, or any ASGI/WSGI-compatible framework

Quick Start

pip install wilco[fastapi]  # or wilco[django], wilco[flask], wilco[starlette]

Create a component

my_components/
└── greeting/
    ├── __init__.py
    ├── index.tsx
    └── schema.json
// index.tsx
interface GreetingProps {
  name: string;
  formal?: boolean;
}

export default function Greeting({ name, formal = false }: GreetingProps) {
  const message = formal ? `Good day, ${name}.` : `Hey ${name}!`;
  return <p>{message}</p>;
}

Mount the API

from pathlib import Path
from fastapi import FastAPI
from wilco import ComponentRegistry
from wilco.bridges.fastapi import create_router

app = FastAPI()
registry = ComponentRegistry(Path("./my_components"))
app.include_router(create_router(registry), prefix="/api")

Load in React

import { useComponent } from '@wilcojs/react';

function App() {
  const Greeting = useComponent('greeting');
  return <Greeting name="World" />;
}

For component schemas, composition patterns, and framework-specific guides, see the documentation.

API Endpoints

Endpoint Description
GET /api/bundles List available components
GET /api/bundles/{name}.js Get bundled JavaScript
GET /api/bundles/{name}/metadata Get component metadata

Requirements

  • Python 3.10+
  • Node.js (for esbuild bundling)
  • React 19 on the frontend (bundled in the standalone loader)

CLI

wilco serve                        # Start development server (default)
wilco build --output dist/wilco/   # Pre-compile bundles for production
wilco build --output dist/wilco/ --prefix store --no-minify --sourcemap

See the CLI reference for all options.

Development

This project follows strict TDD methodology.

make test    # Run all tests
make docs    # Build documentation
make help    # Show all available commands

License

Makersquad Source License 1.0 — see LICENSE.md for details.

Free for non-commercial use. Commercial use requires a license. Contact licensing@makersquad.fr for inquiries.

Project details


Download files

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

Source Distribution

wilco-0.5.1.tar.gz (4.8 MB view details)

Uploaded Source

Built Distribution

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

wilco-0.5.1-py3-none-any.whl (112.0 kB view details)

Uploaded Python 3

File details

Details for the file wilco-0.5.1.tar.gz.

File metadata

  • Download URL: wilco-0.5.1.tar.gz
  • Upload date:
  • Size: 4.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wilco-0.5.1.tar.gz
Algorithm Hash digest
SHA256 a96edb7309d18aa46370a252f91f10b77fdfe383b7e104de8f7fd00b9056d661
MD5 b5fc6afd94aee993166d55b45ad47a77
BLAKE2b-256 c73971275aff96139d57b09a8ec30a91c0f33443c9138d6f76e3cc7d5c561d34

See more details on using hashes here.

Provenance

The following attestation bundles were made for wilco-0.5.1.tar.gz:

Publisher: cicd.yml on msqd/wilco

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wilco-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: wilco-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 112.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wilco-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6a41af33eb95e0f3fa84d88b169e089cfd1c6141bcdbef54e8bce8934f69ea4d
MD5 0bb393b0fbf5bfc3275eae2d0de366af
BLAKE2b-256 728fe374173e7dbf403b5d4f32c16d559799352c211e2525dbb06ab67912d693

See more details on using hashes here.

Provenance

The following attestation bundles were made for wilco-0.5.1-py3-none-any.whl:

Publisher: cicd.yml on msqd/wilco

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page