All workshops and courses

Here is the full menu of courses we have on offer. More are on the way!

Adding Authentication to your Django app: AllAuth integration and customisation

Authentication systems need to be secure and user-friendly. Building them by hand is a lot of work, and not recommended. AllAuth is the go-to package for handling user authentication and account management. AllAuth is very versatile - it is very customisable and has an impressive list of features (including many social login options). But integrating and customising it is not exactly straight-forward

Duration: 2 Days

Level: Intermediate to advanced

Details

Authentication is a critical component of modern web applications, and django-allauth makes it easier than ever to add robust, flexible authentication to your Django projects. This hands-on workshop will teach you how to integrate django-allauth into your project, configure it for multiple authentication providers, and customize its behaviour to suit your unique requirements.

This workshop will be very hands on - you'll be implementing authentication on a real application!

What we will cover

  • Introduction to Django Authentication: A quick overview of Django's built-in authentication system and why django-allauth is a great choice for enhanced functionality.
  • Installing and Configuring django-allauth: Step-by-step guidance for setting up django-allauth in your project.
  • Navigating the django-allauth code-base: Yes, we'll be reading the source code to understand how it works! This is useful because customisation is not always obvious, digging around in the code can be very helpful
  • Customizing Templates: Learn to adapt django-allauth's default templates and styling
  • Social Authentication: Enable social logins
  • Customizing User Models: Extend Django’s User model with custom fields and integrate it with django-allauth.
  • Account Management: Explore features like email verification, password resets, and user account settings.

Bring your own application

There will be an application provided that you can add authentication to. But the goal of this course is to empower you with real skills. If you are working on a project that has a need for solid authentication then bring it along!

Prerequisite knowledge

This workshop requires a firm grasp of Django. If you have written any kind of realistic Django project then you should be fine.

Apache Airflow - Basics to advanced

Automate data and task workflows with Apache Airflow! From the basics of task scheduling to advanced techniques for managing complex task interdependencies, this workshop will guide you through everything you need to know to get the most out of Airflow.

Duration: 2 Days

Level: Beginner to Advanced

Details

Apache Airflow was originally created by the nice folks at Airbnb. Airbnb was growing rapidly and, as they grew, so did their task and data pipeline orchestration needs. They created Airflow to solve their own urgent needs. And then they open-sourced it.

Airflow is a kind of task scheduler, but with a lot of super powers. Here are a few of things it's good at:

  • complicated task interdependencies: You can build complicated task structures to handle many different needs. In Airflow these are called DAGs - Directed Acyclic Graphs. You can do some pretty hardcore things with these.
  • logging and monitoring: You can see what tasks ran and when, and exactly what happened
  • retries: You can set tasks up so that they retry themselves, and you can rerun tasks and entire workflows whenever you want to
  • secret management: automated tasks often need credentials, and those need to be kept safe
  • scale: Airflow allows you to create as many workers as you need, and those workers can be spread across many computers/vms/pods/whatever. There isn't an upper bound
  • usability: It has a really nice UI that you can interact with to view and control things.
  • extendable: Airflow is designed for flexibility

One of the really cool things about Airflow is that DAGs are authored using Python code. A DAG is a graph that of tasks and their interdependencies. Since DAGs are written with normal Python code (instead of some kind of configuration language), you can be quite creative about how you author them.

What we will cover

This workshop will take you from the basics to advanced concepts, helping you to get to grips with some of Airflow's weirder parts for building, scheduling, and managing workflows at any scale. We'll show you how to use Airflow to create reliable, maintainable data pipelines, automate tasks, and troubleshoot complex workflows effectively.

  • Introduction to Workflow Orchestration and Apache Airflow: Understand the role of Airflow in data engineering and why it’s a popular choice for building and automating complex workflows.
  • Installing and Configuring Airflow: Get started with Airflow by setting up a development environment and learning the essentials of configuring the platform.
  • Understanding DAGs (Directed Acyclic Graphs): Learn how to define workflows using DAGs and understand their structure to create clear, maintainable workflows.
  • Creating and Scheduling Tasks: Discover the basics of creating tasks with Python operators, dependencies, and setting up scheduling rules.
  • Managing Data Pipelines: Build modular and reusable pipelines by breaking workflows into smaller tasks and organizing code efficiently. Understanding the importance of Idempotent tasks
  • Error Handling and Retries: Learn to manage failures and set up retry logic to make workflows more resilient and fault-tolerant.
  • Working with Airflow Operators: Explore the range of built-in operators (Python, Bash, Email, SQL, and more) and use custom operators to tailor workflows to your needs.
  • Managing Dependencies and Task Concurrency: Set up task dependencies and manage parallel execution to optimize workflow performance.
  • Advanced Scheduling with CRON and Timetables: Deepen your understanding of scheduling and configure custom schedules to fit specific data needs.
  • Data Transfer and Integration: Use Airflow’s integrations with popular data storage and processing tools (e.g., AWS, Google Cloud, Spark) for smooth data transfers.
  • Managing Secrets and Credentials: Securely handle credentials and API keys using Airflow’s connection management and environment variables.
  • Workflow Monitoring and Logging: Track and troubleshoot workflows with Airflow’s logging and monitoring tools, helping you spot issues before they become problems.
  • Dynamic DAGs: Implement dynamic DAG generation for flexible workflows. You can write Python code to generate DAGs for you

How the workshop will work

You will be introduced to concepts in a hands-on way. Every concept will be practised and implemented.

You will also be given DAG challenges to solve along the way to build up and solidify your skills.

Prerequisite knowledge

Participants need to be comfortable writing Python code.

Prerequisite software

Please be aware that Airflow only works on certain operating systems. Here is a link to the official docs:

Installation Prerequisites

Deploying your Django application with FlyIO

Based on popular demand! Deploying a Django application can be a challenging task, especially the first time around, with many steps and configurations to navigate. In this hands-on workshop, we’ll guide you through deploying your Django project, making it accessible on the web and ready for production use.

Duration: 1 day

Level: intermediate

Details

Deploying your Django application for the first time can feel daunting. From selecting a hosting provider to configuring your server, handling secrets, and ensuring security, there's a lot to tackle. This workshop will help you cut through the confusion and walk you through each step of getting your Django project live on FlyIO, a flexible and powerful hosting platform. By the end, you’ll have your own deployed Django application, complete with database setup, secure static file handling, and optimized performance.

What we will cover

In this tutorial, we’ll cover a complete deployment workflow, ensuring your application is production-ready. Topics include:

  • Fundamentals of Application Deployment: Learn the basics of deploying a Django application, from initial setup to going live.
  • Static File Hosting: Configure static file handling to serve CSS, JavaScript, and other resources efficiently.
  • Setting Up a PostgreSQL Database: Configure a cloud-based PostgreSQL database to handle your application’s data.
  • Performance Optimization: Explore caching strategies and performance tweaks that can improve load times and responsiveness.
  • Managing Secrets and Environment Variables: Securely manage sensitive information like API keys and database credentials.
  • Domain Setup and HTTPS Configuration: Set up a custom domain name for your application and configure HTTPS to ensure secure communication.
  • Monitoring and Logging: Implement monitoring and logging to gain visibility into your app’s performance and troubleshoot any issues that arise in production.

Who Should Attend

This workshop is designed for developers with intermediate experience in Django who are ready to take the next step and deploy their applications. Basic knowledge of Django is required, but prior experience with cloud deployment is not necessary.

Join us to turn your Django project into a live, production-ready application!

Django Database model design

Database design is at the heart of many Django applications. This hands-on workshop will introduce you to the basic concepts, and then build up your skills and understanding through a series of exercises of increasing difficulty.

Duration: 2 Days

Level: Intermediate

Details

Database design is at the heart of many Django applications, and understanding how to structure your models effectively can make or break your project. In this hands-on workshop, you’ll learn how to craft Django database models that meet real-world requirements, maintain performance, and remain easy to update as your application grows.

What we will cover

We'll start off with foundational concepts - in order to reason about Django models, it's important to have a grasp of the underlying structures. We'll start off with understanding the basics of SQL tables, relationships and queries.

Once the foundations are in place, we will move through a series of examples and challenges of increasing difficulty levels.

  • Introduction to SQL core concepts: Django models represent SQL tables. Here we will cover the core concepts of SQL
  • Introduction to Django Models: Learn the basics of defining models, field types, and how they relate to SQL
  • Relationships and Data Integrity: one-to-one, one-to-many, and many-to-many relationships with practical examples and best practices.
  • Design Patterns for Common Use Cases: Explore patterns for handling hierarchical data, tagging systems, audit trails, and more.
  • Advanced Querying with Django ORM: Write efficient queries using Django ORM methods, custom managers, and query optimizations.
  • Data Validation and Constraints: Use validators, constraints, and database-level checks to ensure data quality.
  • Migrations and Schema Evolution: Understand how to manage database migrations effectively and avoid common pitfalls during schema changes.
  • Best Practices for Model Design: Learn tips for scalability, maintainability, and aligning your models with application requirements.

How the workshop will work

You will be introduced to concepts in a hands-on way. Every concept will be practised and implemented.

You will also be given challenges to solve along the way to build up and solidify your skills.

Prerequisite knowledge

Participants need to be comfortable writing Python code.

This workshop is designed for developers familiar with Django basics who want to deepen their understanding of database modeling. It will be especially useful for people who have a project that they want to work on. There will be a lot of space for questions.

If you are not yet familiar with Django then you might take a little bit longer on some parts.

Django core fundamentals

This workshop provides a comprehensive introduction to Django, covering its core components and how they work together to help you build dynamic, data-driven web applications.

Duration: 2 days

Level: Beginner to intermediate

Details

Django, the web framework for perfectionists with deadlines, is a high-level Python web framework that takes the hassle out of web development by providing a set of robust tools for building secure, scalable, and maintainable applications. This hands-on workshop will guide you through the core concepts of Django, demystifying its components and showing you how to use them to create powerful web applications.

From models and views to templates and forms, you'll learn how Django’s architecture fits together, and how to leverage its features to handle everything from user input to database interactions. By the end, you’ll understand not just how to use Django, but how it helps developers write clean, efficient, and reusable code.

What we will cover

Getting Started with Django

  • When to use Django and how it compares to other web frameworks
  • Setting up a Django development environment.
  • Creating your first Django project and app.
  • Understanding the structure of a Django project.

The Django MVT Architecture

  • Models: Defining your data structure and working with Django's ORM.
  • Views: Writing functions to process user requests and return responses.
  • Templates: Building dynamic HTML pages with Django’s templating engine.

Connecting to a Database

  • Fundamental mechanisms of how Django interacts with a database
  • Using migrations to manage schema changes over time.
  • Querying and updating the database using Django’s ORM.

Handling User Input with Forms

  • Building and validating forms in Django.
  • Handling form submissions and processing user data securely.
  • Creating custom form fields and validators.

Routing and URLs

  • Mapping URLs to views using Django’s URL dispatcher.
  • Using dynamic URLs to handle parameters and route flexibility.

Static Files and Media

  • Managing static assets like CSS, JavaScript, and images.
  • Handling user-uploaded files with Django’s media handling features.

Authentication and Authorization

  • Setting up user authentication with Django’s built-in system.
  • Managing user accounts, login/logout functionality, and permissions.

Django Admin Interface

  • Using the Django admin to manage data and app configuration.
  • Customizing the admin interface for better usability.

Best Practices in Django

  • Writing clean, reusable code with Django apps.
  • Structuring your projects for scalability and maintainability.
  • Debugging common issues and understanding Django’s error messages.

Who is this for

  • Python developers who are new to web development and want to learn Django.
  • Developers with some experience in web development who want to add Django to their toolkit.
  • Anyone looking for a structured, practical introduction to Django’s core features.

What to expect

This workshop is hands-on and interactive, with guided examples and exercises to reinforce learning. By the end of the session, you’ll have built a small but complete Django application, gaining the confidence and knowledge to start creating your own projects.

Getting Git: A Beginner’s Guide to Version Control and the Terminal

Git is a life skill. This workshop is designed for absolute beginners to help you build a solid understanding of Git, the tool that powers modern software collaboration. You’ll also gain confidence using the terminal, setting you up for success in managing your projects efficiently and collaboratively.

Duration: 1 day

Level: Beginner

Details

Git can feel intimidating at first, but with the right foundation, it becomes a powerful tool in your developer toolkit. This hands-on workshop will demystify Git and version control, focusing on key concepts, essential commands, and practical workflows.

You’ll learn to track changes in your code, collaborate with others, and recover from mistakes. Along the way, we’ll get comfortable using the terminal to execute Git commands and build habits for a smooth development workflow.

No prior experience with Git or the terminal is needed—just a willingness to lean into the learning!

What we will cover

  • What is Version Control: Understand the purpose of Git and why version control is essential for developers.
  • Understanding the Git graph structure: To understand git, it's useful to be able to visualise what is happening under the hood
  • Getting Started with Git: Install Git, configure your environment, and create your first repository.
  • The Git Workflow: Learn the three stages of Git (Working Directory, Staging Area, and Commit History) and how they work together.
  • Essential Git Commands: Practice foundational commands like init, add, commit, status, and log.
  • Branching Basics: Understand branches and why they’re crucial for collaboration. Learn to create, switch, and merge branches.
  • Undoing Mistakes: Discover how to undo changes safely with commands like checkout, reset, and revert.
  • Connecting to Remote Repositories: Push and pull changes to/from platforms like GitHub.
  • Introduction to the Terminal: Gain confidence navigating the terminal, managing files, and running Git commands effectively.
  • Github fundamentals: Github is one of many online platforms that help you set up, manage and collaborate on Git repos. Learn the basics of this powerful platform and what it can do for you

Hands-on exercises

Participants will work on interactive exercises to reinforce learning, including:

  • Creating and managing a new Git repository for a simple project.
  • Simulating a typical Git workflow: making changes, staging files, committing updates, and viewing history.
  • Experimenting with branching to work on features or bug fixes independently.
  • Resolving common issues like merge conflicts in a guided and approachable way.
  • Pushing a project to GitHub and collaborating with a partner on a small task.

Who should attend

This workshop is for anyone new to Git or the terminal. Whether you’re just starting out in programming, transitioning into development, or looking to boost your confidence in version control, this workshop will set you on the right path.

Land Your Next Developer Job: Showcasing Skills and Building Trust

This short course is designed to help you honestly and effectively showcase your skills, build a strong portfolio, and earn the attention and trust of potential employers. Through practical advice and guided exercises, we’ll focus on crafting a standout online presence, sharing meaningful projects, and communicating your value as a developer—all without resorting to shortcuts or interview tricks.

Duration:

Level:

Details

In today’s competitive job market, many would-be developers try to hack the job market. Many rely on AI tools to generate false CVs and nonesense cover letters, many try to cheat at job interviews. This makes things risky for organisations looking to hire. This forces organisations to close doors on people with real potential, and to undercut their own ability to deliver value.

This workshop focuses on building job hunt strategies that focus on building trust and removing risk for employers.

In today’s competitive job market, authenticity and demonstrated skill stand out above all else.

This workshop focuses on helping developers build a solid foundation for their job search by presenting themselves honestly and professionally. You’ll learn how to create a portfolio that highlights your real-world abilities, write resumes and cover letters that connect with employers, and showcase your technical and communication skills in a way that earns trust.

The goal isn’t to game the hiring process — it’s to prepare you to step confidently into your next opportunity, armed with the tools and mindset to succeed.

What we will cover

The job hunt is not a single event, it's broken down into phases

Getting noticed

  • How to showcase projects that demonstrate your skills, problem-solving ability, and real-world impact.
  • Crafting clear project write-ups that highlight challenges, solutions, and results.
  • Tips for tailoring your portfolio to align with your career goals.
  • Writing resumes that focus on skills and accomplishments, not fluff.
  • Demonstrating soft skills like collaboration and communication effectively.
  • The power of community
  • Anti-patterns and resume padding
  • Setting up a professional portfolio site or GitHub profile.
  • Using LinkedIn to connect meaningfully with peers and potential employers.

Searching for and applying to jobs

  • Prioritising your efforts: What kind of job makes sense for you?
  • Keeping track of your job application efforts
  • Structuring cover letters to show genuine interest and alignment with a company’s mission.

The interview

  • Understanding what employers are really looking for during technical assessments.
  • Practising how to explain your thought process and problem-solving approach.
  • Honest strategies for handling “I don’t know” moments with professionalism and curiosity.
  • How to answer questions in a way that builds confidence in your honesty and ability.
  • Showing growth potential through stories of learning and overcoming challenges.
  • Balancing confidence with humility to create a positive impression.
  • Mindsets and attitudes for success

Accepting a job offer

  • Evaluating offers holistically: Considering salary, benefits, company culture, growth opportunities, and work-life balance.
  • Asking clarifying questions to ensure you understand expectations, role responsibilities, and potential challenges.
  • How to negotiate respectfully and professionally, including when and how to ask for adjustments.
  • Understanding when to accept or decline an offer based on alignment with your goals and values.
  • Setting the tone for your new role: Expressing gratitude and preparing for a successful start.

Who is this for

  • Developers actively seeking their first job or looking to advance in their careers.
  • Recent bootcamp graduates or self-taught developers ready to enter the job market.
  • Developers who want to showcase their skills authentically and build trust with employers.

What to expect

This workshop is highly practical and collaborative, with hands-on exercises to refine your portfolio, write impactful resumes, and rehearse authentic interview techniques. By the end, you’ll have a polished toolkit to showcase your skills and the confidence to approach job applications and interviews with integrity.

You will be expected to interact with your peers - you will be giving people honest feedback about their work, and seeing different approaches to showcasing skills. Remember that this is about authenticity so there will be things to learn from each other.

Modern frontend development with Django, HTMX, Tailwind, Playwright and AlpineJS

In this interactive workshop, you'll learn how to build a modern CRUD application using Django, HTMX, and AlpineJS. It's all about making web development faster, more fun, and accessible for backend developers. With a small group size and hands-on guidance, you’ll create your own project while exploring new tools and simplifying your workflow—all at your own pace.

Duration: 2 days

Level: Intermediate

Details

Once upon a time, if you wanted a truly modern web frontend experience for your Python web app you would have limited options. Many people would reach for heavy frontend tools and frameworks such as React, Vue or one of their many competitors. And those tools generally have their own recommendations around testing.

Times have changed - tools like HTMX and AlpineJS are taking Python Web dev by storm and simplifying the creation of modern frontends

These tools make full-stack web dev fast and fun, they simplify development, shrink code bases, and give backend devs the ability to do modern frontend work. In my personal experience, I've seen the adoption of these tools lead to massive productivity gains for junior and senior devs alike.

This workshop will walk you through the process of building and testing your own unique CRUD application with a rich and modern frontend.

Why HTMX is worth learning

If you are interested in learning more about why HTMX is worth being excited about, here is a webinar that goes into some detail.

The stack

We'll be using the following tools:

  • Django
  • HTMX
  • TailwindCSS
  • AlpineJS
  • Playwright

Prerequisite knowledge

It would be useful if you are comfortable with the following:

  • Python: You should be comfortable writing basic Python code
  • Virtual environments
  • HTML

Why Django?

Django is brilliant. It's the web framework for perfectionists with deadlines. It's worth knowing about. And, for newer web developers, Django is an amazing teacher in its own right.

That said, if you are not into Django then that is fine! The focus of this tutorial is on building the frontend. The vast majority of what we cover in this tutorial can be used as is with other web frameworks. For example FastAPI, ExpressJS or similar.

Why CRUD?

90% of the web is CRUD. CRUD stands for Create, Read, Update and Delete. Once you know how to implement simple CRUD apps, you will be able to do quite a lot.

My own unique CRUD app?

The workshop will guide you through the process of building a specific application. You will be encouraged to choose your own adventure and make use of the skills covered to build your own project.

In previous workshops learners have worked on projects like:

  • A music store for independent creators
  • A household chore scheduler
  • A conference talk tracker
  • A personal learning pathway creator
  • Yet another todo list app
  • much more

You can do quite a lot with a CRUD app.

See scheduled workshops