Introduction
  • Why you should take this course!
  • 4 things you should know before starting this course
  • Introduction to this section
  • Access the e-book for Section 1 here!
  • Our project and endpoints
  • Reviewing the beginner course code
  • Simplifying our error handling
  • Refactoring our resources
  • Should we have unique names?
  • Adding basic type hinting
  • Adding custom JSON types
  • Using the current class as a type hint
  • Using Black for code formatting
  • Improving errors with constants
  • @classmethod across the board
  • Testing our API with Postman
  • Conclusion of this section
Serialization with Marshmallow
  • Introduction to this section
  • Serialization with Marshmallow
  • Deserialization with Marshmallow
  • Migrating from virtualenv to Pipenv
  • Postman collection for this section
  • Using vanilla Marshmallow with the API
  • A change to marshmallow-sqlalchemy
  • Introduction to Flask-Marshmallow
  • Adding items to our REST API
  • Adding stores to our REST API
  • Deduplicating error handling
  • Conclusion of this section
E-mail confirmations
  • Introduction to this section
  • Introduction to e-mail confirmation
  • Postman collection for this section
  • Adding an activated property
  • Activating users manually
  • Telling users they are active
  • Setting up Mailgun
  • Sending e-mails with Mailgun (Part 1)
  • Sending e-mails with Mailgun (Part 2)
  • Creating our Mailgun library file
  • Using .env files in Flask
  • Adding more configuration to .env
  • Error handling in Mailgun
  • Conclusion of this section
Advanced e-mail confirmation
  • Introduction to this section
  • Postman collection for this section
  • Creating the ConfirmationModel
  • Changes in our UserModel
  • Creating our ConfirmationResource
  • Updating our UserResource
  • Errata and code changes required
  • Adding the last confirmation to the user schema
  • Fixing our app.py
  • Cross-resource dependencies are (generally) bad
  • What are localisation and internationalisation?
  • Storing strings in config files
  • Creating a simple translation library
  • Updating our resources to use translations
  • Adding a new language to our API
  • What is Flask-Babel?
  • Common pitfalls and advice
  • Conclusion of this section
Postman documentation and tests
  • Introduction to this section
  • Postman collection for this section
  • Collection and request descriptions
  • Recap of Postman environments
  • JavaScript tests in Postman
  • Running entire collections in Postman
  • Adding example requests and responses
  • Previewing our Postman documentation
  • Publishing our documentation page
  • More options for publishing documentation
  • Conclusion of this section
Image uploads
  • Introduction to this section
  • Postman collection for this section
  • Installing Flask-Uploads
  • Config files in Flask
  • What are wsgi and Werkzeug?
  • Creating our image helper library
  • Creating our image schema
  • Creating our image upload resource
  • Trying out our image upload
  • Retrieving and deleting images
  • Another example: user avatars
  • Adding the avatar resource
  • Conclusion of this section
Database migrations
  • Introduction to this section
  • Getting a PostgreSQL database
  • What's in our starter code?
  • Postman collection for this section
  • Connecting to our remote database
  • Initialising Flask-Migrate and Alembic
  • Creating our initial table structure
  • Our first database migration