Posts

How Do I Deploy a FastAPI App to Azure App Service? Step by Step, From Zero

Image
Versions used in this post — read this first: Python 3.12.3 · Azure CLI 2.91.0 · fastapi 0.162.0 · uvicorn 0.54.0 · gunicorn 26.2.0 · uvicorn-worker 0.4.0 · App Service runtime PYTHON:3.12 . Everything runs from one file, main.py , printed in full below — the exact file in the companion repo. Recorded October 2026; the free-tier limits and prices below are Microsoft's published figures as of that date. The direct answer Deploy a FastAPI app to Azure App Service, step by step, on the free tier: put the app in a folder with requirements.txt at the root, create a resource group, a free (F1) App Service plan, and a Python 3.12 web app, set two app settings, deploy a zip of the code, and — the step most tutorials skip — set the startup command . On Python 3.13 and earlier, App Service auto-detects Django and Flask only; a FastAPI app with no startup command doesn't error, it silently serves a built-in default page. The startup command is one line, and this post explains every piec...

I Built an AI Agent That Reads Release Notes So I Don't Have To

Image
Versions used in this post — read this first: Python 3.12.3 · requests 2.34.2 · google-genai 2.33.0 · Model: gemini-3.6-flash . Everything runs from one file, digest_agent.py , printed in full below — the exact file in the companion repo. The direct answer Build an AI agent in Python, step by step, that reads release notes for you. One small Python file is enough to stop reading changelogs by hand. Think of the agent as the smallest useful harness — three steps with a strict contract between them: fetch , summarize , write . It fetches the newest GitHub release of each project it tracks from the project's public releases feed, sends the release notes to Gemini with an instruction to return three summary bullets plus any breaking changes as JSON, and writes one Markdown file: digest.md , with the breaking changes collected at the top. Schedule it for 7:15 every morning and yesterday's releases are a one-page read with your coffee. No GitHub account, no token, no framework — the...

Small AI App #1: Build a PDF Q&A App with FastAPI + Gemini (Upload a PDF, Ask It Questions)

Image
Versions used in this post — read this first: Python 3.12.3 · FastAPI 0.161.1 · uvicorn 0.54.0 · pypdf 6.21.2 · google-genai 2.33.0 · python-multipart 0.0.32 · Model: gemini-3.8-flash . Everything runs from one file, app.py , and the code below is the exact code that was run and tested for this post. The direct answer Yes — one small FastAPI file is enough. Upload a PDF and the server extracts its text with pypdf, splits it into overlapping chunks, and stores them in memory. Ask a question and it picks the chunks sharing the most words with it, sends only those to Gemini with a strict instruction to answer from them alone, and returns the answer with the token counts the API reported and what they cost. No vector database, nothing on top of FastAPI — and if no chunk matches, the app does not call the model at all. This is the first episode of Small AI Apps : complete, runnable applications built with FastAPI and Gemini, each small enough to finish in under an hour and honest ab...