> Markdown version of [/videos/528-anvil-full-stack-web-apps-with-nothing-but-python?t=410](https://www.wearedevelopers.com/videos/528-anvil-full-stack-web-apps-with-nothing-but-python?t=410). 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). --- # Anvil: Full Stack Web Apps With Nothing But Python Tired of translating data between SQL, JSON, and JavaScript? Discover how Anvil lets you build secure, full-stack web apps using nothing but Python. - **Speakers:** Meredydd Luff - **Event:** WeAreDevelopers LIVE - **Published:** October 5, 2022 - **Duration:** 58:28 - **URL:** https://www.wearedevelopers.com/videos/528-anvil-full-stack-web-apps-with-nothing-but-python ## Summary Modern web development is hindered by massive complexity, forcing developers to constantly translate data across mismatched representations—from SQL rows and server-side Python objects to JSON, client-side JavaScript, and HTML DOM. This brittle chain violates core Pythonic principles like "simple is better than complex" and necessitates layers of abstraction. To solve this, Anvil provides a framework for building full-stack web applications using nothing but Python. By leveraging the Skulpt compiler to run Python in the browser, Anvil unifies the development stack. Developers interact with a Python-native UI toolkit and seamlessly pass domain-specific objects back and forth, entirely removing the need for REST endpoints and JSON serialization. Under the hood, Anvil implements a sophisticated capability-based security model and remote procedure calls over WebSockets. By wrapping object permissions in digital signatures, the server can securely grant the client access to read or update specific database rows directly from the browser. To bridge the gap between Python's synchronous idioms and JavaScript's non-blocking execution, the framework modifies Skulpt's abstract syntax tree (AST) to support "suspensions," restoring the call stack and allowing blocking API calls to function naturally on the frontend. Additionally, this unified architecture enables a powerful, browser-local code completion engine that can duck-type objects across the client-server boundary without latency-inducing server roundtrips. Ultimately, Anvil's philosophy asserts that "code is good" and resists the limitations of simplified no-code flowcharts. True developer accessibility means creating tools that are simple enough for a novice while retaining the uncompromised power required by seasoned professionals. By stripping away redundant translation layers, Anvil not only accelerates development but inherently bolsters security—eliminating vulnerabilities like SQL injection because there are no concatenated cross-language queries. With built-in authentication and robust escape hatches for standard Python libraries or JavaScript interop, developers can focus on business logic rather than battling web stack plumbing. **Keywords:** anvil framework, full-stack python, web development complexity, skulpt compiler, python in the browser, abstract syntax tree, capability-based security, remote procedure calls, websocket integration, cross-boundary code completion, duck typing, sql injection prevention, no-code limitations, javascript interoperability, suspension execution model ## Chapters 1. **The complexity and fragmentation of modern web development** (00:02) — Translating data across databases, server logic, and browser interfaces introduces brittle abstraction layers. 1. **Building full stack web applications entirely with Python** (06:50) — Consolidating the technology stack into a single language eliminates repetitive data transformations and excessive tooling. 1. **Creating user interfaces using visual components and Python** (09:28) — Pairing a visual editor with Python scripts simplifies the creation of interactive front-end layouts. 1. **Implementing server modules and built-in database interactions natively** (11:51) — Decorating server functions allows direct client calls without configuring routing or manually parsing JSON payloads. 1. **Rendering database records in repeating panels and data grids** (14:30) — Data returned from the server automatically populates tabular UI components and allows custom Python formatting. 1. **Compiling blocking Python to non-blocking JavaScript using Skulpt** (18:44) — Transforming abstract syntax trees into asynchronous JavaScript suspensions enables intuitive, synchronous-looking Python in the browser. 1. **Transmitting custom Python objects using portable class serialization** (25:12) — Annotating classes allows native Python objects to retain their methods and state across client-server boundaries. 1. **Securing database rows with capability-based permissions and signatures** (27:36) — Attaching cryptographically signed permissions to data objects ensures secure client-side updates without duplicative server checks. 1. **Implementing context-aware code completion across the full stack** (31:58) — Utilizing the in-browser parser to analyze variables, functions, and schemas ensures rapid autocomplete suggestions. 1. **Balancing novice accessibility with professional developer power through code** (37:40) — Providing a true programming language rather than simplified flowcharts empowers both beginners and seasoned engineers. 1. **Handling security vulnerabilities and external API integrations natively** (42:57) — Relying on object-based APIs naturally prevents code injection and simplifies data extraction tasks. 1. **Executing complex queries and comparing Anvil to backend frameworks** (47:14) — While basic data tables handle common operations, complex database interactions can leverage standard SQL libraries. 1. **Evaluating application performance and built-in user authentication capabilities** (50:19) — Built-in user management and surprisingly efficient in-browser compilation keep Python competitive for modern web applications. ## Related Moments - [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") - [Introduction to the Astro web framework](https://www.wearedevelopers.com/videos/985-beyond-warp-speed-crafting-the-future-of-web-development-with-astro-4-10) (from "Beyond Warp Speed: Crafting the Future of Web Development with Astro 4.10") - [The shift from simple web frameworks to modern complexity](https://www.wearedevelopers.com/videos/386-telemetry-without-the-tool-tax) (from "Telemetry without the 'Tool Tax'") - [Building full web applications using Flask and Jinja](https://www.wearedevelopers.com/videos/563-no-more-node-build-apis-with-flask-and-test-it-with-postman) (from "No more Node: Build APIs with Flask and test it with Postman") - [The versatility of Python across tech domains](https://www.wearedevelopers.com/videos/527-debugging-schrodinger-s-app) (from "Debugging Schrödinger's App") - [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)") ## Related Articles - [Exploring AI: Opportunities and Risks for Developers](https://www.wearedevelopers.com/magazine/522-exploring-ai-opportunities-and-risks-for-developers) - [Dev Digest 132 - Binging WADFlix?](https://www.wearedevelopers.com/magazine/473-dev-digest-132-binging-wadflix) - [Dev Digest 139 - Soft and hard queries](https://www.wearedevelopers.com/magazine/487-dev-digest-139-soft-and-hard-queries) - [What is Software Engineering in the Age of AI?](https://www.wearedevelopers.com/magazine/640-what-is-software-engineering-in-the-age-of-ai) ## Related Jobs - [Software Engineer, Fullstack](https://www.wearedevelopers.com/jobs/48415-software-engineer-fullstack) at **Sciforium** - [Software Engineer, Python (Asset Pricing & Hedging)](https://www.wearedevelopers.com/jobs/ext/2772280-software-engineer-python-asset-pricing-hedging) at **Bitpanda** - [Backend Engineer, Python (Web3)](https://www.wearedevelopers.com/jobs/ext/1934515-backend-engineer-python-web3) at **Bitpanda** - [Senior Software Engineer, Angular](https://www.wearedevelopers.com/jobs/ext/2796428-senior-software-engineer-angular) at **Bitpanda** - [Senior AI Developer](https://www.wearedevelopers.com/jobs/ext/2836034-senior-ai-developer) at **PwC** - [Founding Developer Advocate](https://www.wearedevelopers.com/jobs/48425-founding-developer-advocate) at **Plumber**