
Meet the instructor, a veteran mobile developer since 2010 with Fortune 500 experience and apps featured by Apple, who also publishes Udemy courses and books on MVM and architecture.
Review prerequisites: intermediate knowledge of the native language (closures, function calls, generics), familiarity with the surface framework, and basic Node.js concepts for GraphQL with Apollo.
Explore GraphQL as a query-based API protocol that uses a single URL to fetch precisely the data you request, powered by schemas, types, and mutations.
Master core GraphQL concepts: query, mutation, and subscription, and learn how clients fetch or modify JSON data; use fragments, arguments, and directives for precise queries.
Master building and executing GraphQL queries in an iOS SwiftUI context, exploring schema-driven data via continents, countries, and languages, with filters and variables.
Learn how to define and reuse fragments in GraphQL to avoid repeating fields like name, code, emoji, capital, and states across queries, using fragment definitions and spread syntax.
Build the first feature of the SIFISO app by consuming the country's QOL API to list countries with codes, native names, and flags, and show states when available.
Explore how Apollo for GraphQL, a framework to communicate with GraphQL APIs, supports iOS, React, Android, and servers, enabling strongly typed native iOS classes for queries, mutations, and other operations.
Install the Apollo command line interface globally using npm to access the tool from anywhere. Verify installation in the terminal and prepare to download our schema and perform other operations.
Learn to integrate the Apollo framework into a SwiftUI iOS app by adding Apollo packages with Swift Package Manager, selecting essential targets, and preparing for schema download and code generation.
Download the GraphQL schema with the Apollo tool and generate API.swift, then add the file to your project and set up the Get All Countries query.
Display a navigable SwiftUI list of countries from a GraphQL API, showing emoji and name, and navigate to a detail view with capital and states.
Implement the get country info GraphQL query by passing a required country code to fetch name, capital, emoji, and states, and test with codes like US.
Navigate from a country list to a detail view, pass in the country code, fetch details via a GraphQL query, and display name, capital, and states, with MVVM preparation.
Explain why mvvm separates the view from the model and uses a password reset view model. Validate inputs on the client side and prepare data for web api calls.
Apply mvvm architecture to manage web APIs, with the view asking the view model for data and the view model delegating to a web service client.
Refactor the country's application to utilize the MVP design pattern, update the code, and apply the museum design pattern for the rest of the course.
Create and integrate a country detail view model that exposes the country name, capital, and a list of state view models, enabling the UI to display country details by code.
Download starter project to access the user interface and wifi views, review the schema and basic queries with Apollo, and use it as the base to build the complete app.
Implement a weather fetch by city name using the Apollo GraphQL network layer, parse the returned JSON, and populate the weather view model with temperature, humidity, description, and icon.
Bind the city input to the weather view model, fetch weather by city name on submit, and render results by loading status with icon, description, temperature, and feels like.
Learn to query and mutate with the GitHub GraphQL API by building an iOS SwiftUI app that shows latest and top repositories and allows adding a new repository to GitHub.
Tour the starter project for GraphQL on iOS, review prebuilt screens and an Apollo client, and learn how to fetch a user’s repositories with a forthcoming GraphQL query.
Construct a GraphQL query to fetch a GitHub user's repositories by username, retrieving id, name, created date, url, stargazer count, and description.
Generate and securely store a GitHub personal access token to authenticate GraphQL requests, configure token scopes, and send it in the header for API operations.
Configure an Apollo client to send the GitHub access token in the Authorization header for every GraphQL request in a SwiftUI iOS app.
Explore building repository list and repository view models using GraphQL in SwiftUI, fetching latest repositories by username, mapping API nodes to view models, and preparing data for the MVVM UI.
Learn to fetch and display a user's latest repositories in SwiftUI, showing each repository's id, name, description, and star count, with stars hidden when rating is zero.
Apply a GraphQL mutation to create a repository with a required name and visibility and an optional description, returning the repository id and wiring the mutation to a view model.
Test the create repository mutation in the GraphQL explorer, supply variables, verify the returned id, and confirm repository creation on GitHub before implementing our ad repository view model.
Integrate the add repository screen with the add repository view model to automatically populate name, description, and visibility, and update the save flow to dismiss and refresh the repository list.
Learn to integrate AddRepositoryScreen with AddRepositoryViewModel in a GraphQL iOS app, and fix repository list updates by using a cache policy that ignores local cache and fetches from the server.
Construct a GraphQL query to fetch the top ten repositories for a user, ordered by stargazers_count descending, including id, name, description, and stargazers_count.
Implement getTopRepositoriesForUser in RepositoryListViewModel using the getTopRepositoriesForUser GraphQL query, unify node types with a protocol, and map results to repository view models.
Implement a repository node protocol to unify data from get repository by user name and get top repository for user name queries, exposing id, optional description, and stargazer count.
Switch between latest and top repositories by adding a repository display enum and a published repositories display property, and use Combine to update the content view accordingly.
GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. GraphQL is gaining popularity at a very fast pace and more and more companies are exposing their data using GraphQL. Some are even saying that GraphQL is the new REST and in a span of few years, it will become the default way for implementing APIs.
Check out the contents of the course:
Understanding GraphQL
In this section, you will learn the concepts behind GraphQL technology and how it is different from REST. You will learn about queries, mutations, fragments and subscriptions.
Countries App
In this section, you will learn how to consume Countries GraphQL API. You will learn how to integrate the Apollo framework with your iOS application, download schema, generate models and then finally display them in your SwiftUI application.
Understanding MVVM Design Pattern
In this section, you will learn the concepts behind the MVVM Design Pattern. You will learn the purpose of each component and how it fits in with the MVVM pattern.
Countries App - Building Using MVVM Pattern
In this section, you will revisit the Countries App and reimplement it using the principles of MVVM Design Pattern. You will learn how to implement container view models, read only view models in SwiftUI application.
Weather App
In this section, you will learn how to implement a Weather App in SwiftUI using GraphQL weather API. You will also implement the city search capability, which will allow you to search weather for a city by name.
GitHub App
In this section, you will learn how to consume the GitHub GraphQL API. You will start by getting comfortable with the GitHub GraphQL API using their build-in explorer. Next, you will integrate it with your SwiftUI application. You will allow the user to list their ten most recent repositories, as well as top starred repositories. Finally, you will implement the mutation, so users can add new repositories to their GitHub profile from right within the iOS application.
Getting Started with Apollo Server
In this section, you will learn how to implement a custom Apollo Server using NodeJS and JavaScript. You will learn about the GraphQL type system, schemas and how resolvers can be used to resolve the queries.
Movies App
In this section, you are going to implement a complete Movies App. You will learn to construct a custom GraphQL server using the Apollo framework and then you will make the iOS client in SwiftUI framework.
Requirements
1) Knowledge of Swift Language is recommended
2) Knowledge of SwiftUI is recommended
3) Some knowledge of NodeJS and JavaScript is recommended but not required
By the end of this course, you will be comfortable using GraphQL with your iOS applications.
Hope you enjoy the course!