Back to .md Directory

Workshop Playbook

Outlines a seven-section workshop for building Jamstack sites from plain HTML through serverless functions and auth.

May 2, 2026
0 downloads
2 views
ai rag
View source

What this file does

Outlines a seven-section workshop for building Jamstack sites from plain HTML through serverless functions and auth.

When to use it

  • Planning a hands-on Jamstack workshop with exercises and code-alongs
  • Structuring a multi-session tutorial on static sites, 11ty, and serverless functions
  • Creating a facilitator guide that mixes presentation, demo, and independent practice

Assumes this stack

HTMLCSS11tyNetlifyFaunaGatsby

Workshop Playbook

This document is a high-level overview of what we’ll cover in the workshop.

Legend

  • πŸ‘¨β€πŸ« Presentation β€” I’ll show slides, talk about concepts, and other teacher-ey things
  • πŸ‘€ Watch (or code-along) β€” I’ll build something and explain as I go. I’ll commit and push my changes after each of these steps, so you can watch this step, then pull the changes. Or, if you want extra practice, you can code along.
  • πŸ’ͺ Exercise β€” you’ll build something on your own to practice a skill we just learned. We’ll go over the solution together after each exercise.
  • 🀝 Code-Along β€” we’ll build something together.

Section 1: Static Sites, No Tools

Build a plain HTML and CSS site with no build tools or CLIs and get it live on the internet.

Move into the 01-really-static directory. The CSS for this exercise has already been created.

  • πŸ‘¨β€πŸ« Introduce the Jamstack architecture
  • πŸ‘€ Build index.html, load it in the browser
  • πŸ’ͺ Build about.html
    • NOTE: the nav on index.html will be out of date! 😱
  • 🀝 Add active nav item logic
  • πŸ‘€ Deploy to Netlify by dragging and dropping the folder with our website
  • πŸ’ͺ Create or log into your Netlify account, then deploy the site

Section 2: Build Time Rendering

Build a website using 11ty, then deploy it using Netlify’s CLI.

Move into the 02-static-site-generator directory. The CSS for this exercise has already been created.

  • πŸ‘¨β€πŸ« Introduce static site generators
  • πŸ‘¨β€πŸ« Build Time Rendering vs. Request Time Rendering
  • πŸ‘€ Confugure 11ty: create .eleventy.js, a layout file, and index.md
  • πŸ’ͺ Create about.md
  • 🀝 Add active nav item logic
  • 🀝 Initialize this directory as a new git repo and put it on GitHub
  • 🀝 Install the Netlify CLI and deploy the site

Section 3: Handle User Input

Add a contact form and a serverless function to handle form submissions.

Stay in the 11ty site. We’ll add this here.

  • πŸ‘¨β€πŸ« What are serverless functions?
  • πŸ‘€ Build a comment form in the layout (GitHub username, comment, page)
  • πŸ‘€ Build a serverless function that echoes the comment form data
  • πŸ’ͺ Build a contact page with a contact form (name, email, message)
  • πŸ’ͺ Build a serverless function that echoes the contact form data

Section 4: Save User Input to a Database

Create a database and have our serverless functions send data there for storage.

  • πŸ‘¨β€πŸ« How do databases work on the Jamstack?
  • 🀝 Create Fauna account
  • πŸ‘€ Define a schema for the comment form
    • Import GraphQL schema
    • Create a server key
    • Add to Netlify site env vars
  • πŸ‘€ Write a utility to send queries to Fauna
    • ntl dev
    • Submit a comment
    • Check in Fauna that it saved
  • πŸ’ͺ Add a Contact schema to the database
  • πŸ’ͺ Update the serverless function to save entries to the database

Section 5: Load and Display Data from a Database

Read from the database using a serverless function and return the data for display.

  • πŸ‘¨β€πŸ« Why do we use serverless functions to retrieve data?
  • 🀝 Modify the schema to add a query for comments by page
  • 🀝 Write a serverless function to query for comments
  • 🀝 Write the JavaScript to call the serverless function and display comments

Section 6: Protect Routes

This is a rudimentary setup for auth, but it shows the principals of how to protect a route.

  • πŸ‘¨β€πŸ« How does authentication work on the Jamstack?
  • πŸ‘¨β€πŸ« What are we not going to cover in this workshop?
  • 🀝 Deploy the Gatsby site
  • 🀝 Create Dashboard and Login pages
  • 🀝 Create a Secret Stuff component that redirects to login if not logged in
  • 🀝 Create a login form to β€œlog in”

Section 7: Load User-Specific Data Asynchronously

Once our users can identify themselves, we can customize the app’s content based on who they are.

  • πŸ‘¨β€πŸ« Loading content based on user-specific data
  • πŸ’ͺ Update the DB schema to query comments by user
  • πŸ’ͺ Write a serverless function to load comments by user
  • πŸ’ͺ Create a new component to call the serverless function and display the data
  • πŸ’ͺ Add the new component to the secret stuff component

What's inside

7 sections, 4 activity types (presentation, watch, exercise, code-along), 20+ steps

Change this for your project

  • Replace 01-really-static with your own exercise directory name
  • Replace 02-static-site-generator with your own exercise directory name
  • Replace jlengstorf/jamstack-fast-track with your own repository name

Where it goes

Keep it in your repository where the agent or team that needs it will read it.

Worth borrowing

  • Legend maps activity types to icons so participants know what to expect
  • Each section ends with a deploy or git step to keep progress visible
  • Exercises mirror earlier demos (e.g., contact form echoes comment form pattern)

Related Documents