/photo-share-api

The main back-end exercise for GraphQL Workshop.

Primary LanguageJavaScriptMIT LicenseMIT

PhotoShare API

PhotoShare is the main back-end exercise for GraphQL Workshop. In this exercise, students build a GraphQL API for a small photo sharing application.

Iterations

a. Start

  1. Initial Project Folder
  2. Basic GraphQL Yoga Setup (diff) (files)
  3. Structure, Move Schema (diff) (files)
  4. Structure, Move Resolvers (diff) (files)
  5. Extend Express, Add Home Route (diff) (files)
  6. GraphQL Yoga Options (diff) (files)

b. The Photo Type

  1. Counting the Photos (diff) (files)
  2. Posting a Photo (diff) (files)
  3. Handling Photo Categories (diff) (files)
  4. Using an Input Type (diff) (files)
  5. Listing All Photos (diff) (files)
  6. Querying a Single Photo (diff) (files)

c. The User Type

  1. Adding the User Type (diff) (files)
  2. Adding Some Sample Data (diff) (files)
  3. Listing All Users (diff) (files)
  4. Querying a Single User (diff) (files)
  5. Add User to postPhoto Mutation (diff) (files)
  6. Adding postedBy Connection (diff) (files)
  7. Adding postedPhotos (diff) (files)

d. Tagging Photos

  1. Adding Sample Tags (diff) (files)
  2. Finding Users Tagged in a Photo (diff) (files)
  3. Finding All Photos where a User has Been Tagged (diff) (files)
  4. Adding the Tag Photo Mutation (diff) (files)
  5. Adding a Custom Scalar (diff) (files)

e. Incorporating a Database

  1. Environment Variables (diff)(files)
  2. Adding a Database Connection to Context (diff) (files)
  3. Querying Data (diff) (files)
  4. Posting Photos to the Database (diff) (files)
  5. Adding Fake Users (diff) (files)
  6. Tagging Photos with the Database (diff) (files)

f. Github Authorization

  1. Environment Variables (diff) (files)
  2. Adding Github Authorization Mutation (diff) (files)
  3. Authorizing with Github (diff) (files)
  4. Authorizing Fake Users (diff) (files)

g. Enhancements

  1. Adding Subscription Support (diff) (files)
  2. Publishing Events (diff) (files)
  3. Modifying the Schema to Support File Uploads (diff) (files)
  4. Uploading File with postPhoto (diff) (files)