Welcome! We're really glad you're here. This repo holds everything for Day 1: lessons, labs, and runnable projects. Day 2 (federation, security & production readiness) lives in its own repo.
- Eve Porcello: Twitter | Email
- Moon Highway Training: Website | Mailing List
The morning is 100% browser-based - you need nothing installed. For the afternoon:
- Node 20+ (
node --version) - Apollo Server 5 requires it - VS Code or IntelliJ with a GraphQL extension (nice to have)
- Clone this repo. Each project folder in
projects/installs independently withnpm install(forsnowtooth-apiandsnowtooth-ui, run it insidestart/orcomplete/).
| # | Lesson | Lab | Playground |
|---|---|---|---|
| 01 | What is GraphQL? | - | - |
| 02 | The GraphQL Query Language | Query Lab | Snowtooth · Pet Library |
| 03 | Effective Schema Design | Schema Lab | Apollo Sandbox |
| Project | What it is | Run |
|---|---|---|
projects/snowtooth-api |
Ski resort GraphQL API - Apollo Server 5. start/ = mocked server, complete/ = real resolvers |
npm start (in start/ or complete/) |
projects/pet-library-schema |
Schema-design lab (SDL only) + complete solution | no server needed |
projects/pokemon-rest-wrapper |
GraphQL layer over the REST PokéAPI | npm start |
projects/snowtooth-ui |
Next.js + React 19 + Apollo Client 4 lift-status board. start/ = placeholder, complete/ = finished app |
npm run dev (in start/ or complete/) |
- GitHub GraphQL Explorer - a huge real-world graph to explore
- GraphQL Spec
- Schema Cheatsheet
- Relay Connection Spec (cursor pagination)
- Apollo Server (we use v5)
- Migrating from older Apollo Server versions - useful when reading old tutorials
- Mocking
- Fetching from REST
- Apollo Client (React) (we use v4)
- Apollo Client + Next.js integration
| Package | Version | Notes |
|---|---|---|
@apollo/server |
^5 | Node 20+, graphql ≥ 16.11 |
@apollo/client |
^4 | React hooks from @apollo/client/react |
graphql |
^16.11 | v17 is still pre-release - don't use it yet |
See you tomorrow for Day 2: Federation, Security & Production Readiness! 🚀