> Markdown version of [/videos/417-full-stack-web-apps-with-nothing-but-python](https://www.wearedevelopers.com/videos/417-full-stack-web-apps-with-nothing-but-python). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Full Stack Web Apps With Nothing But Python Ditch the cognitive overhead of REST APIs, HTML, and JavaScript frameworks. Discover how to natively build reactive, full-stack web applications using nothing but Python. - **Speakers:** Eli Holderness - **Event:** World Congress 2022 - **Published:** June 15, 2022 - **Duration:** 27:11 - **URL:** https://www.wearedevelopers.com/videos/417-full-stack-web-apps-with-nothing-but-python ## Summary Modern web development relies on a deeply fragmented stack requiring databases, REST APIs, JSON data transformation, JavaScript frameworks, HTML, and CSS. To eliminate this cognitive overhead and simplify abstraction layers, Anvil introduces a unified paradigm: building full-stack web applications using nothing but Python. By stripping away traditional front-end web languages, developers can author reactive UIs, manage routing, and query databases using familiar Python objects and methods, eliminating the translation errors that frequently occur across complex tech stacks. Through a live drag-and-drop UI component demonstration, the presentation showcases how the platform bridges the client-server gap natively. Developers can skip building repetitive REST bindings by directly attaching frontend logic to backend definitions using simple server-callable function decorators. The underlying database architecture also abandons traditional SQL setups in favor of representing table rows natively as Python objects, ensuring safe, direct data manipulation unhindered by common Object-Relational Mapping (ORM) edge cases. The core engineering achievement powering this is Skulpt, an open-source transpiler that converts Python code to JavaScript for browser execution. Because JavaScript is strictly non-blocking—unlike Python, which relies on blocking interactions for tasks like database queries—Anvil intercepts the transpiler's abstract syntax tree to return "suspensions." These state-wrapping promises ensure synchronous-looking Python seamlessly executes within an asynchronous JavaScript environment. Additionally, shifting to an AST-driven browser autocompleter provides instantaneous, descriptive type inference without sending keystrokes to a delayed backend remote server. Operating under the philosophy that "no code is a false promise," this pure-code approach offers novice approachability without sacrificing the deep architectural flexibility required by seasoned professionals. **Keywords:** full-stack python development, anvil framework, python web applications, browser-based autocompletion, skulpt transpiler, python to javascript transpilation, abstract syntax tree manipulation, asynchronous javascript callbacks, synchronous python execution, client-server RPC calls, object-relational mapping alternatives, drag-and-drop UI builders, descriptive type inference, no-code platform limitations, webassembly performance comparisons ## Chapters 1. **The complexity of modern web development and multiple abstractions** (00:05) — Transforming data across multiple languages and framework layers introduces frequent opportunities for human error. 1. **Building a frontend web interface with pure Python** (05:07) — Creating interactive web elements and click handlers relies on drag-and-drop tools combined with familiar programming syntax. 1. **Writing server functions and connecting them to client components** (08:15) — Defining backend routines requires simply wrapping logic with specialized decorators to accept frontend execution calls. 1. **Creating a Python-defined database and inserting user data** (09:55) — Storing user inputs involves configuring native application tables and appending programmatic rows from backend scripts. 1. **Retrieving and displaying server data in the frontend component** (11:28) — Populating dynamic interface elements is achieved by fetching entire data table structures and binding exact object parameters. 1. **Transpiling blocking Python to non-blocking JavaScript in browsers** (15:04) — Compiling backend logic into browser execution resolves asynchronous blocking challenges by generating sequential suspension states. 1. **Building rapid client-side code completion for full stack Python** (18:46) — Utilizing browser-based abstract syntax tree parsing delivers instant autocomplete suggestions without relying on slow network exchanges. 1. **Why writing actual code remains superior to no-code platforms** (21:45) — Providing raw programming environments enables robust software architecture that restrictive drag-and-drop web platforms cannot support. 1. **Developer questions on offline editors and application scaling** (24:08) — Addressing platform extensibility highlights localized code editing pipelines and alternative browser interpreters for scalable architectures. ## Related Moments - [Evolution and dominance of full stack JavaScript ecosystems](https://www.wearedevelopers.com/videos/489-modern-headless-commerce-with-vendure) (from "Modern Headless Commerce with Vendure") - [Creating interactive visual experiences with pure frontend code](https://www.wearedevelopers.com/videos/1819-wearedevelopers-live-yes-css-can-do-that) (from "WeAreDevelopers LIVE - Yes, CSS Can Do That!") - [The enduring value of web frameworks in the AI era](https://www.wearedevelopers.com/videos/100172-after-the-framework-wars-what-s-next-for-web-development) (from "After the Framework Wars: What’s Next for Web Development") - [Accelerating project bootstrapping and feature development](https://www.wearedevelopers.com/videos/1624-30-powerful-aws-hacks-in-just-30-minutes-boost-your-developer-productivity) (from "30 powerful AWS hacks in just 30 minutes: Boost your developer productivity") - [Bringing JavaScript developers into web artificial intelligence](https://www.wearedevelopers.com/videos/1896-how-web-ai-can-power-the-agentic-web-jason-mayes-google) (from "How Web AI Can Power the Agentic Web - Jason Mayes (Google)") - [Expanding JavaScript horizons with WebAssembly and backend possibilities](https://www.wearedevelopers.com/videos/118-how-to-stop-choosing-javascript-frameworks-and-start-living) (from "How to Stop Choosing JavaScript Frameworks and Start Living") ## Related Articles - [Dev Digest 108 - Git off my cloud!](https://www.wearedevelopers.com/magazine/407-dev-digest-108-git-off-my-cloud) - [Dev Digest 132 - Binging WADFlix?](https://www.wearedevelopers.com/magazine/473-dev-digest-132-binging-wadflix) - [Dev Digest 137 - AI'm not sure about this](https://www.wearedevelopers.com/magazine/485-dev-digest-137-ai-m-not-sure-about-this) - [Dev Digest 109 -Egg-citing things…](https://www.wearedevelopers.com/magazine/408-dev-digest-109-egg-citing-things) ## Related Jobs - [Backend Engineer, Python (Web3)](https://www.wearedevelopers.com/jobs/ext/1934515-backend-engineer-python-web3) at **Bitpanda** - [Mid/Senior Full-Stack Engineer (Web-first)](https://www.wearedevelopers.com/jobs/ext/1210833-mid-senior-full-stack-engineer-web-first) at **SMG Swiss Marketplace Group** - [Principal Software Engineer](https://www.wearedevelopers.com/jobs/ext/146806-principal-software-engineer) at **Twilio** - [AI Full Stack Engineer](https://www.wearedevelopers.com/jobs/ext/1354435-ai-full-stack-engineer) at **Almedia** - [Principal Software Engineer](https://www.wearedevelopers.com/jobs/ext/115163-principal-software-engineer) at **Twilio** - [Principal Software Engineer](https://www.wearedevelopers.com/jobs/ext/267587-principal-software-engineer) at **Twilio**