Anvil: Full-Stack Web Apps in Python, No JavaScript Course

4.5 hours, 100% free
Take this course for FREE

Course Summary

Building data-driven web apps is tough. Yes, Python makes it easier than most languages, but you need to know a host of different languages and technologies and they have to fit together just right. This usually includes Python, HTML, CSS, SQL, Linux, a database server, and maybe even JavaScript. But with Anvil, you can create full stack, data-driven web apps with only Python. You write Python on the backend and Python on the client-side. The HTML and CSS are handled with Anvil's drag-and-drop visual editor. The database is seamlessly connected back to your application. And this is the course to teach you how to be effective with Anvil and Python to build data-driven web applications.

What students are saying

This training REALLY helped me improve how I work with Python. From little things, like using pyenv and pipx (which I should have started doing years ago!) to major ones, like testing and building CLIs. And FINALLY I know how to deploy Python apps. Overall, this is great value and it will pay forward in my future projects.
-- Pawel K.

Source code and course GitHub repository

github.com/talkpython/anvil-course

What's this course about and how is it different?

This is the definitive course on building web apps with Anvil and Python. It covers the core concepts for sure: forms, design components, and databases. But also covers building an ecommerce web application from scratch including secure user management.

In this course, you will:

  • Creating your first Anvil web application
  • How Anvil seamlessly mixes a single page browser-based app with a backend
  • Using the form designer to create visually interesting user interfaces
  • Understand how the code-behind Python integrates with the UI elements
  • Add validation for user input
  • Navigate between multiple forms without reloading the application
  • Create user accounts and allow login from multiple sources
  • Model data in the Anvil database service
  • Insert into and query data from the database service
  • Integrate Plotly plots for interactive charts and graphs
  • Build HTTP endpoints and custom APIs for your Anvil app
  • Host your application on a custom domain, including SSL support
  • Add Stripe credit card support to allow for purchases directly within the application
  • And lots more

  • View the full course outline.

Who is this course for?

Anyone who has struggled to create a proper web application and would like to use their existing Python knowledge to entirely create a full stack web app without SQL, CSS, HTML, JavaScript and all the rest.

This course assumes some basic knowledge of Python. It does not use advanced features of the language in significant ways so basic knowledge may be sufficient. But the course is not a beginner Python course, so students with little to no Python language experience should take a foundational course first. We recommend our Python Jumpstart by Building 10 Apps as a prerequisite if needed.

Concepts backed by concise visuals

While exploring a topic interactively with demos and live code is very engaging, it can mean losing the forest for the trees. That's why when we hit a new topic, we stop and discuss it with concise and clear visuals.

Here's an example of introducing the concept of navigating between views (components) without reloading the entire Anvil web app.

Example: Concepts backed by concise visuals

Follow along with subtitles and transcripts

Each course comes with subtitles and full transcripts. The transcripts are available as a separate searchable page for each lecture. They also are available in course-wide search results to help you find just the right lecture.

Each course has subtitles available in the video player.

Get hands-on for almost every chapter

Learning to code is an interactive experience. That's why it's important to write code and explore the app we build during this course. We encourage you to build a similar web app using your Anvil account while going through each chapter. The source code for the entire application will be available both on the GitHub repo as well as clonable directly within Anvil.

Who am I? Why should you take my course?

Who is Michael Kennedy?

My name is Michael, nice to meet you. ;) There are a couple of reasons I'm especially qualified to teach you Python.

 1. I'm the host of the #1 podcast on Python called Talk Python To Me. Over there, I've interviewed many of the leaders and creators in the Python community. I bring that perspective to all the courses I create.

 2. I've been a professional software trainer for over 10 years. I have taught literally thousands of professional developers in hundreds of courses throughout the world.

 3. Students have loved my courses. Here are just a few quotes from past students of mine.

"Michael is super knowledgeable, loves his craft, and he conveys it all well. I would highly recommend his training class anytime." - Robert F.
"Michael is simply an outstanding instructor." - Kevin R.
"Michael was an encyclopedia for the deep inner workings of Python. Very impressive." - Neal L.

Free office hours keep you from getting stuck

One of the challenges of self-paced online learning is getting stuck. It can be hard to get the help you need to get unstuck.

That's why at Talk Python Training, we offer live, online office hours. You drop in and join a group of fellow students to chat about your course progress and see solutions via screen sharing.

Just visit your account page to see the upcoming office hour schedule.

The time to act is now

Have you struggled to convert your idea into a Python-based web app. Anvil significantly simplifies that process. Take this course and finally create that app you've always wanted to.

Course Outline: Chapters and Lectures

Welcome to the course
15:57
What we will cover
7:12
What we will build
2:28
Defining full stack web development
3:18
Creating our business name
1:44
Meet your instructor: Michael Kennedy
0:38
Get the back story on Talk Python
0:37
Setup and following along
7:05
Create a free Anvil account
0:43
Python 3.6+ required (sorta)
3:02
Our editor for external Python code
0:43
Git the source
1:18
Follow along to get the most from the course
1:19
Application first steps
38:42
Anvil building blocks
4:18
Creating the Fitnessd app
5:22
What forms / pages do we need?
4:26
Creating the forms
3:45
Loading a component into the main app page
5:01
Adding measurement UI
8:01
Validation user inputs for measurements
6:25
Concept: Anvil forms (pages)
1:24
Navigating between views
24:44
Navigation intro
2:25
Basic navigation
5:32
Refactoring navigation
5:26
Setting the title during navigation
2:53
Pinning the active navigation element
3:05
Using the navigation module within a component
3:08
Concept: Navigation module
2:15
User management and authentication
17:29
User services in Anvil
1:44
Adding the user service
2:09
Registering a new user
3:26
Toggling UI state based on logged in user
3:23
Logging out
1:23
Logging in
1:20
Guarding restricted views
4:04
Databases: Storing and querying data
30:58
Introducing data tables
1:05
Creating a table
2:58
Server modules for protected data access
3:02
Saving a measurement to the database
4:57
Querying the database
4:14
Concept: Data tables
1:32
Add the averages table
0:52
Client module: data-access layer
3:41
Improving database performance
6:35
Concept: Data-access layer
2:02
Charts and graphs
16:50
Introducing charting in Anvil
1:15
Adding the plot
5:08
Styling the plot
2:15
Showing data int the plot
4:11
Finishing the no-data story
2:44
Concept: Plotting int anvil
1:17
Adding APIs and HTTP Endpoints
27:44
Why APIs?
2:25
Hello world API
3:51
Passing data to the API method
1:53
Setting up auth
3:28
Getting the API key
6:15
Generating the API key
2:51
Adding a measurement via the API
7:01
Consuming the API with Fitnessd Local app
29:33
Creating the client app: Fitnessd Local
7:07
Authenticating from the app
4:19
Saving a measurement with the app
3:29
Refactoring the client app
1:50
Remember the API key
3:40
A GUI version of Fitnessd Local
9:08
Rounding out the UI
34:26
Creating the landing page: Anonymous home
8:02
Designing the account page
6:46
The set your height and gender form
6:35
Compare yourself to others
6:36
Loading averages for compare
6:27
Hosting on a custom domain
7:52
Hosting introduction
1:36
Adding the custom domain in Anvil
1:44
Registering the app in our DNS configuration
3:07
We are online and running
1:25
Ecommerce and accepting payments
16:28
Enabling the Stripe service
1:33
Connecting our Stripe account
1:51
Charging a credit card
6:26
Converting the user account to pro
5:20
Concept: Charging credit cards with Stripe and Anvil
1:18
Course conclusion and review
3:32
Thanks and goodbye
3:32
Take this course for FREE
Talk Python's Mastodon Michael Kennedy's Mastodon