Type hints → Web UI. Minimal-boilerplate web apps from Python functions.
FuncToWeb is actively maintained and used in production by myself and the community (featured in Awesome Python). The current version (0.9.x) is stable and production-ready. Version 1.0.0 is in active development with major improvements including function chaining with shared context and cleaner architecture for long-term maintainability. Until then, only critical bug fixes will be released.
pip install func-to-webfrom func_to_web import run def divide(a: float, b: float): return a / b run(divide)Open |
Complete documentation with examples and screenshots for each feature:
|
|
Full Documentation API Reference
- ✅ Rapid Prototyping - From pure Python function to usable web interface in seconds.
- ✅ Image Processing - Upload, process, and download images with PIL/Pillow.
- ✅ Data Science & Reporting - Instantly publish Pandas/Polars DataFrames and matplotlib plots without frontend code.
- ✅ High-Performance File Transfer - Stream uploads and downloads at native network/disk speeds. Handles massive files efficiently with minimal memory footprint.
- ✅ Secure Internal Apps - Admin panels, dashboards, and team tools protected by built-in authentication.
from pathlib import Path from func_to_web import run from func_to_web.types import File desktop_path = Path.home() / "Desktop" def upload_files( files: list[File], ): for f in files: print(f"Uploaded file: {f}") return "Files uploaded successfully!" run(upload_files, auto_delete_uploads=False, uploads_dir=desktop_path)Protect sensitive tools with built-in authentication in one line.
import subprocess from typing import Literal from func_to_web import run # 🔒 MANDATORY: Use HTTPS (Nginx). def restart_service(service: Literal['nginx', 'gunicorn', 'celery']): """Restarts a system service.""" # check=True raises an error shown in the Web UI if the command fails subprocess.run(["sudo", "supervisorctl", "restart", service], check=True) return f"✅ Service {service} restarted." run(restart_service, auth={"admin": "super_secret_password"})Generate QR codes instantly from text.
import qrcode from func_to_web import run def make_qr(text: str): """Returns a QR code image for the given text.""" return qrcode.make(text).get_image() run(make_qr)Merge multiple PDF files into a single document instantly.
from io import BytesIO from pypdf import PdfWriter from func_to_web import run from func_to_web.types import DocumentFile, FileResponse def merge_pdfs(files: list[DocumentFile]): """Upload PDFs and get a single merged file back.""" merger = PdfWriter() for pdf in files: merger.append(pdf) output = BytesIO() merger.write(output) return FileResponse(data=output.getvalue(), filename="merged.pdf") run(merge_pdfs)Check the examples/ folder for +20 complete examples (Covers all features)
Core:
- Python 3.10+
- FastAPI, Uvicorn, Pydantic, Jinja2, python-multipart, itsdangerous
Optional (for extended functionality):
- Pillow, Matplotlib, Pandas, NumPy, Polars
Development:
- pytest, mkdocs, mkdocs-material
pytest tests/ -vMIT License • Made by Beltrán Offerrall • Contributions welcome!

