├── LICENSE ├── README.md ├── step00_testing_rest_api_with_postman └── readme.md ├── step01_testing_graphql_api_with_postman └── readme.md ├── step01a_graphql_postman └── readme.md ├── step02_api_first_design_development └── readme.md ├── step03_usecase_driven_graphql_api_design_testing └── readme.md ├── step04_graph_databases └── readme.md ├── step05_production_ready_graphql └── readme.md ├── step06_relational_databases └── readme.md ├── step07_openapi_swagger_postman └── readme.md ├── step08_team_postman └── readme.md ├── step09_integrating_with_postman └── readme.md ├── stepxx_create_api └── readme.md ├── stepxx_define_api_specifications └── readme.md ├── stepxx_newman └── readme.md └── stepxx_postman_mock_servers └── readme.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Panacloud Multi-Cloud Internet-Scale Modern Global Apps 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # API Designing, Prototyping, and Testing: Everything Must and Will be Transformed into an Application Programming Interface (API) 2 | 3 | Everything must and will be transformed into an Application Programming Interface (API). Every digital and physical asset and item on the globe must be controlled and communicated with. To make this happen, we need to make every digital asset programmable, thereby turning everything into an API. The world is on track to have a trillion programmable endpoints in the near future. 4 | 5 | This learning repo is part of [Bootcamp 2021](https://panacloud.github.io/bootcamp-2021/) 6 | 7 | [The Future of Software Development and APIs, with Postman CTO Ankit Sobti](https://www.youtube.com/watch?v=qIgnVczcFgY) 8 | 9 | [REST vs GraphQL](https://www.youtube.com/watch?v=eqnjWkVGvYw) 10 | 11 | [What is GraphQL?](https://www.youtube.com/watch?v=pkqBe4SduYk) 12 | 13 | You can follow a number of differnt workflows in developing an API. 14 | 15 | We suggest that you should follow this workflow when designing and developing an API and an application: 16 | 17 | 1. Start by [define an API specification](https://learning.postman.com/docs/designing-and-developing-your-api/defining-an-api/) (Step 04) 18 | 2. [Generate a collection](https://learning.postman.com/docs/designing-and-developing-your-api/defining-an-api/#generating-a-collection) from it. 19 | 3. Once you have a collection, you can [create a mock server from it](https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/setting-up-mock/#creating-a-mock-from-a-collection) (step 05) 20 | 4. Your UI Application team can now start developing an UI application by using the mock server. 21 | 5. Your API developing team can now start developing the actual API implementation in the parallel to the UI application. There are many options, we recommend that you do develop serverless APIs. In case of REST implementation by using [AWS Gateway and Lambda Functions](https://github.com/panacloud-modern-global-apps/full-stack-serverless-cdk/tree/main/step01_hello_lambda) and GrpahQL using [AWS App Sync and Lambda Functions](https://github.com/panacloud-modern-global-apps/full-stack-serverless-cdk/tree/main/step03_appsync_lambda_as_datasource) using AWS CDK in TypeScript. 22 | 6. Once the API implementation and development implementation is complete you can change the URL in your UI application and test collections from the mock URL to the implementation URL. 23 | 7. During development you can run collections on the command line with [Newman](https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/) and integrate it with your CI/CD e.g. [Google Actions](https://github.com/marketplace/actions/newman-cli-postman-action). 24 | 25 | Note: 26 | 27 | To Learn how to develop the Serverless Cloud APIs visit the [Panacloud Serverless CDK Repo](https://github.com/panacloud-modern-global-apps/full-stack-serverless-cdk) 28 | 29 | If you want to learn to develop SaaS and UI applications using APIs visit [Bootcamp 2020](https://panacloud.github.io/bootcamp-2020/) 30 | -------------------------------------------------------------------------------- /step00_testing_rest_api_with_postman/readme.md: -------------------------------------------------------------------------------- 1 | # REST API Testing with Postman 2 | 3 | [Download and install the Postman App](https://www.postman.com/downloads/) 4 | 5 | [Sending your first request](https://learning.postman.com/docs/getting-started/sending-the-first-request/) 6 | 7 | [We will be doing Introduction to Postman course](https://github.com/vdespa/introduction-to-postman-course) 8 | 9 | [Watch Postman Beginner's Course - API Testing Video](https://www.youtube.com/watch?v=VywxIQ2ZXw4) 10 | 11 | [We will be using Simple Books REST APIs](https://github.com/vdespa/introduction-to-postman-course/blob/main/simple-books-api.md) 12 | 13 | [Course Notes](https://github.com/vdespa/introduction-to-postman-course/blob/main/course-notes.md) 14 | 15 | Note: Do Lesson 31 - CI/CD overview with GitHub Actions 16 | 17 | [GitHub Actions Quick Start](https://docs.github.com/en/actions/quickstart) 18 | 19 | [GitHub Newman Action](https://github.com/marketplace/actions/newman-action) 20 | 21 | [Newman CLI Postman Collection Runner](https://github.com/marketplace/actions/newman-cli-postman-action) 22 | 23 | Documentation: 24 | 25 | [Building requests Documentation](https://learning.postman.com/docs/sending-requests/requests/) 26 | 27 | [Grouping requests in collections](https://learning.postman.com/docs/sending-requests/intro-to-collections/) 28 | 29 | ## Project 30 | 31 | [Simple Book API](https://github.com/panacloud/bootcamp-2021#project-4-develop-simple-book-api-on-aws) 32 | 33 | -------------------------------------------------------------------------------- /step01_testing_graphql_api_with_postman/readme.md: -------------------------------------------------------------------------------- 1 | # GraphQL with Postman 2 | 3 | [Watch GraphQL Core Features till 8:15](https://www.youtube.com/watch?v=eyWE0md1doA) 4 | 5 | GraphQL Hasura Server URL: 6 | 7 | https://hasura.io/learn/graphql/graphiql 8 | 9 | [First, go to Hasura to Explore](https://hasura.io/learn/graphql/graphiql) 10 | 11 | [Now watch and learn how to run GraphQL Queries in Postman](https://youtu.be/eyWE0md1doA?t=496) 12 | 13 | [GraphQL Client Server Architecture](https://www.youtube.com/watch?v=GWdNTIdinr8) 14 | 15 | [GraphQL Schema, Query and Mutation (CRUD Operation)](https://www.youtube.com/watch?v=VvLHlAsJPsw) 16 | 17 | [Understand Schemas](https://www.apollographql.com/docs/apollo-server/schema/schema/) 18 | 19 | [You can also do it in Postman](https://www.youtube.com/watch?v=VvLHlAsJPsw&t=884s) 20 | 21 | [GraphQL Query Variables](https://www.youtube.com/watch?v=XzBIwKJ0mHo) 22 | 23 | [Free Amazing Public GraphQL APIs for Practice](https://www.youtube.com/watch?v=TozP6fiTbZE) 24 | 25 | [How to do GraphQL Automation with Postman](https://www.youtube.com/watch?v=6PgDCw_Rc5M) 26 | 27 | Additional Watching: 28 | 29 | [GraphQL in Postman Demo](https://www.youtube.com/watch?v=7pUbezVADQs) 30 | 31 | ## Project 32 | 33 | [Todo project](https://github.com/panacloud/bootcamp-2021#project-5-develop-todo-qraphql-api-on-aws) 34 | -------------------------------------------------------------------------------- /step01a_graphql_postman/readme.md: -------------------------------------------------------------------------------- 1 | # Developing GraphQL APIs with Postman 2 | 3 | [Postman QraphQL Training By Waris in Urdu](https://www.youtube.com/watch?v=0srkr4MhMn4) -------------------------------------------------------------------------------- /step02_api_first_design_development/readme.md: -------------------------------------------------------------------------------- 1 | # API-First Design and Development 2 | 3 | [API-first software development for modern organizations](https://medium.com/better-practices/api-first-software-development-for-modern-organizations-fdbfba9a66d3) 4 | 5 | [API-First Design and Development | The Exploratory](https://www.youtube.com/watch?v=Y4MUtculz0w) 6 | 7 | [Should you adopt an API-first approach to development?](https://searchapparchitecture.techtarget.com/tip/Should-you-adopt-an-API-first-approach-to-development) 8 | 9 | [API-First, API Design-First, or Code-First](https://blog.stoplight.io/api-first-api-design-first-or-code-first-which-should-you-choose) 10 | 11 | [Be API-First, Not API-Last](https://www.postman.com/postman-galaxy/postman-platform-overview-be-api-first-not-api-last/) -------------------------------------------------------------------------------- /step03_usecase_driven_graphql_api_design_testing/readme.md: -------------------------------------------------------------------------------- 1 | # Use-Case Driven QraphQL API Design and Testing 2 | 3 | ## Design Thanking and API Design 4 | 5 | [What is Design Thinking and Why Is It So Popular?](https://www.interaction-design.org/literature/article/what-is-design-thinking-and-why-is-it-so-popular) 6 | 7 | [Design Thinking and Wicked Problems for APIs](https://dzone.com/articles/design-thinking-and-wicked-problems-for-apis) 8 | 9 | [How Design Thinking Can Make Your Good API Amazing](https://www.programmableweb.com/news/how-design-thinking-can-make-your-good-api-amazing/sponsored-content/2018/10/24) 10 | 11 | [Design Thinking and API Design](https://medium.com/capital-one-tech/experimental-api-strategy-from-capital-one-be72db15362) 12 | 13 | 14 | ## API As a Product 15 | 16 | [What Is an API-as-a-Product?](https://nordicapis.com/what-is-an-api-as-a-product/) 17 | 18 | [Is Product Thinking the same as Design Thinking?](https://blog.axway.com/others/product-thinking-and-design-thinking) 19 | 20 | [Design Strategy for APIs](https://uxplanet.org/design-strategy-for-apis-581849a821a) 21 | 22 | 23 | ## Use Case Driven Design 24 | 25 | [Use Case And Use Case Testing Complete Tutorial](https://www.softwaretestinghelp.com/use-case-testing/) 26 | 27 | ## Data and Use-Case Driven Design 28 | 29 | [The tension between data & use-case driven GraphQL APIs](https://xuorig.medium.com/the-tension-between-data-use-case-driven-graphql-apis-8f982198653b) 30 | 31 | ## User Centric Mutations 32 | 33 | [Designing GraphQL Mutations](https://www.apollographql.com/blog/graphql/basics/designing-graphql-mutations/) 34 | 35 | ## Panacloud API Design Process 36 | 37 | Each and every step in our application design process is ‘user-oriented’: 38 | 39 | ### Use Cases: 40 | 41 | In this document we will specify ‘What are the actions done by the user?’, ‘What the Actors see in a system?’ and ‘How the system responds?’. 42 | 43 | https://docs.google.com/presentation/d/18NeTETwvKojwKlfD2Ap7c1zSV7QqPha_--0j-dFGHTU/edit?usp=sharing 44 | 45 | 46 | ## Wireframes (Use Case Driven): 47 | 48 | From these Use Cases we are developing the Wireframes. A website/app wireframe, also known as a page schematic or screen blueprint, is a visual guide that represents the skeletal framework of a website.  Wireframes are created for the purpose of arranging elements to best accomplish a particular purpose. We will identify which screens as are addressing which use case. It is complete representation of what the Actor sees in the system: 49 | 50 | https://docs.google.com/presentation/d/1war9JkYBS8FG_em59oyRtrx1TXJhoZz74hgvgsPvY4A/edit?usp=sharing 51 | 52 | ## Panacloud MVP Coverage (Use Case Driven) 53 | 54 | This documents the Use Cases and Wireframes which we will build first. 55 | 56 | https://docs.google.com/presentation/d/1Y0n8etHrvviCh8D14bXkFgDlmmZ_NO39gnyNhzLihL0/edit?usp=sharing 57 | 58 | ## GraphQL MVP APIs (Use Case Driven): 59 | 60 | These are the APIs that the wireframes (frontend) call to interact with the backend. This document documents all the GraphQL Schemas for the queries and mutations for each use case: 61 | 62 | https://docs.google.com/presentation/d/1QhoYR0FNS7RPFgCtlvTdtYeTfnAEtqv_xcJQjaZubvg/edit?usp=sharing 63 | 64 | ## Events MVP Design and Schema 65 | A event is a significant change in state. 66 | 67 | https://docs.google.com/presentation/d/1qB2uU4CrFXYNhD7YtXmJm4M929TAm0Iunzjr3MVJLiw/edit?usp=sharing 68 | 69 | ## Graph Database MVP Design and Queries (Use Case Driven): 70 | 71 | These are designs of a Property Graph Database. In the long-run our plan is to support GQL and Graph Schema Defination ISO standards when they become available, but the implementations are a few years way. Therefore, for now we use openCypher 9 (perfect onramp for GQL) to define the queries and use diagrams to define the graph database schemas. 72 | 73 | https://docs.google.com/presentation/d/14SpbzXFAhD1EDnSuHx-vCkeND5JiGLwu8xZ_npzAS6w/edit?usp=sharing 74 | 75 | 76 | -------------------------------------------------------------------------------- /step04_graph_databases/readme.md: -------------------------------------------------------------------------------- 1 | # Graph Database 2 | 3 | ## Introduction 4 | 5 | [Graph Databases for Dummies Book, chapter 1,2, and 4](https://neo4j.com/graph-databases-for-dummies/) 6 | 7 | [Cyper Queries](https://neo4j.com/developer/cypher/querying/) 8 | 9 | [Cyper Updates]( https://neo4j.com/developer/cypher/updating/) 10 | 11 | [We used Sandbox to do practice on Movie Database](https://neo4j.com/sandbox/) 12 | 13 | [You can use this Arrows.app to draw pictures of graphs](https://arrows.app/) 14 | 15 | ## AWS Neptune 16 | 17 | [Follow this Repo](https://github.com/panacloud-modern-global-apps/full-stack-serverless-cdk/tree/main/step45a_neptune_cypher_gql) 18 | 19 | ## In Depth 20 | 21 | [GraphQL and Graph Databases](https://datalanguage.com/blog/graphql-and-graph-databases) 22 | 23 | [Intro to Graph Databases: More than just GraphQL](https://developers.mews.com/intro-to-graph-databases/) 24 | 25 | [Databases, graphs, and GraphQL: The past, present, and future](https://www.zdnet.com/article/databases-graphs-and-graphql-past-present-and-future/) 26 | 27 | 28 | [Amazon Neptune update: Machine learning, data science, and the future of graph databases](https://www.zdnet.com/article/aws-neptune-update-machine-learning-data-science-and-the-future-of-graph-databases/) 29 | -------------------------------------------------------------------------------- /step05_production_ready_graphql/readme.md: -------------------------------------------------------------------------------- 1 | # Design and build predictable, performant, and secure GraphQL APIs at scale 2 | 3 | 4 | [Production Ready QraphQL Book](https://book.productionreadygraphql.com/#get-the-book) 5 | 6 | [Book's Table of Content](https://book.productionreadygraphql.com/toc.html) 7 | 8 | ### We will cover the following chapters: 9 | 10 | An Introduction to GraphQL 11 | 12 | GraphQL Schema Design 13 | 14 | Implementing GraphQL Servers 15 | 16 | Workflow 17 | 18 | Documenting GraphQL APIs 19 | 20 | -------------------------------------------------------------------------------- /step06_relational_databases/readme.md: -------------------------------------------------------------------------------- 1 | # Learning Relational Databases 2 | 3 | ### Relational Databases Design 4 | 5 | Reading Material: 6 | 7 | [Database Design in DBMS Tutorial: Learn Data Modeling](https://www.guru99.com/database-design.html) 8 | 9 | [What is Normalization in DBMS (SQL)? 1NF, 2NF, 3NF, BCNF](https://www.guru99.com/database-normalization.html) 10 | 11 | [What is ER Modeling?](https://www.guru99.com/er-modeling.html) 12 | 13 | ### Learning SQL 14 | 15 | [Download PostgreSQL](https://www.postgresql.org/download/) 16 | 17 | [Download DBeaver](https://dbeaver.io/) 18 | 19 | Reading Material: 20 | 21 | [Chapters 1, 4-10 of the SQL QuickStart Guide](https://github.com/RaoAkif/Books/raw/main/SQL/Walter%20Shields%20-%20SQL%20QuickStart%20Guide_%20The%20Simplified%20Beginner's%20Guide%20to%20Managing%2C%20Analyzing%2C%20and%20Manipulating%20Data%20With%20SQL%20(2019%2C%20ClydeBank%20Media%20LLC).pdf) 22 | 23 | [W3C SQL Tutorial](https://www.w3schools.com/sql/default.asp) 24 | 25 | ### Serverless PostgreSQL Databases 26 | 27 | Reading Material: 28 | 29 | [CockroachDB Serverless Launches, Aspires to Be Developers’ Database](https://thenewstack.io/cockroachdb-serverless-launches-aspires-to-be-developers-database/) 30 | 31 | A new class of Serverless PostgreSQL Databases are emerging we plan to focus on them: 32 | 33 | 1. [Amazon Aurora Serverless](https://aws.amazon.com/rds/aurora/serverless/) 34 | 2. [Azure Database for PostgreSQL - Hyperscale (Citus)](https://docs.microsoft.com/en-gb/azure/postgresql/hyperscale/) 35 | 3. [CockroachDB Serverless](https://www.cockroachlabs.com/blog/how-we-built-cockroachdb-serverless/) 36 | 37 | CockroachDB Serverless runs on all three major cloud platforms, without requiring an account on any one of them and also has a free tier. This versatility is attractive to developers and for teaching students. Therefore, we will use it for teaching. 38 | 39 | [Introduction to Serverless Databases and CockroachDB Serverless](https://university.cockroachlabs.com/courses/intro-to-serverless/) 40 | 41 | [Using the DBeaver Client to Run SQL Commands](https://www.youtube.com/watch?v=xFv-TeIroV8) 42 | 43 | Additional Reading Material: 44 | 45 | [Build a Full-Stack Node.js App with CockroachDB Serverless](https://www.cockroachlabs.com/blog/full-stack-node-app/) 46 | 47 | [We will use Sequelize](https://sequelize.org/master/) 48 | 49 | [Sequelize tutorial](https://zetcode.com/javascript/sequelize/) 50 | 51 | [Using Sequelize with TypeScript](https://blog.logrocket.com/using-sequelize-with-typescript/) 52 | 53 | [Sequelize Typescript Documentation](https://sequelize.org/master/manual/typescript.html) 54 | 55 | [AWS Lambda](https://github.com/sequelize/sequelize/pull/12642) 56 | -------------------------------------------------------------------------------- /step07_openapi_swagger_postman/readme.md: -------------------------------------------------------------------------------- 1 | # Open API Testing and Development with Swagger and Postman 2 | 3 | [We will start by covering this book: Designing APIs with Swagger and OpenAPI](https://www.manning.com/books/designing-apis-with-swagger-and-openapi) 4 | 5 | [Design and Prototype an API](https://www.youtube.com/watch?v=r4kb3jOSsmk) 6 | 7 | Now we will go through the following Books in detail to fill the gap in our knowledge: 8 | 9 | [API Testing and Development with Postman Book](https://www.packtpub.com/product/api-testing-and-development-with-postman/9781800569201) 10 | 11 | [Book on Oreilly Website](https://learning.oreilly.com/library/view/api-testing-and/9781800569201/) 12 | 13 | [Book Repo](https://github.com/PacktPublishing/API-Testing-and-Development-with-Postman) 14 | 15 | -------------------------------------------------------------------------------- /step08_team_postman/readme.md: -------------------------------------------------------------------------------- 1 | # Working in a Team with Postman 2 | 3 | [Working With Your Team in Postman | The Exploratory](https://www.youtube.com/watch?v=5lscUV-Exac) 4 | 5 | [Working with your team](https://learning.postman.com/docs/collaborating-in-postman/collaboration-intro/) 6 | 7 | [Collaborating with your team](https://learning.postman.com/docs/getting-started/introduction/#collaborating-with-your-team) -------------------------------------------------------------------------------- /step09_integrating_with_postman/readme.md: -------------------------------------------------------------------------------- 1 | # Integrating Postman in our Workflows and Applications 2 | 3 | [Integrations: how Postman plays with some of your favorite tools](https://blog.postman.com/integrations-how-postman-plays-with-some-of-your-favorite-tools/) 4 | 5 | [Introduction to Postman APIs](https://learning.postman.com/docs/developer/intro-api/) 6 | 7 | [Integrating with Postman](https://learning.postman.com/docs/integrations/intro-integrations/) 8 | 9 | [Postman API](https://www.postman.com/postman/workspace/postman-public-workspace/documentation/12959542-c8142d51-e97c-46b6-bd77-52bb66712c9a) -------------------------------------------------------------------------------- /stepxx_create_api/readme.md: -------------------------------------------------------------------------------- 1 | # Create API 2 | 3 | [API Development Overview](https://learning.postman.com/docs/designing-and-developing-your-api/the-api-workflow/) 4 | 5 | [Creating an API](https://learning.postman.com/docs/designing-and-developing-your-api/creating-an-api/) -------------------------------------------------------------------------------- /stepxx_define_api_specifications/readme.md: -------------------------------------------------------------------------------- 1 | # Define a API Specification 2 | 3 | [Defining an API Specification](https://learning.postman.com/docs/designing-and-developing-your-api/defining-an-api/) -------------------------------------------------------------------------------- /stepxx_newman/readme.md: -------------------------------------------------------------------------------- 1 | # Running collections with Newman 2 | 3 | [Running collections on the command line with Newman](https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/) 4 | 5 | [CI with Postman API](https://learning.postman.com/docs/running-collections/using-newman-cli/continuous-integration/) 6 | 7 | [Integrating with Github Actions](https://github.com/marketplace/actions/newman-cli-postman-action) -------------------------------------------------------------------------------- /stepxx_postman_mock_servers/readme.md: -------------------------------------------------------------------------------- 1 | # Mock Servers with Postman 2 | 3 | [Watch Mock Servers | The Exploratory](https://www.youtube.com/watch?v=n_7UUghLpco) 4 | 5 | [Setting Up a Mock Server](https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/setting-up-mock/) 6 | 7 | [Mocking GraphQL queries](https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/mocking-with-examples/#mocking-graphql-queries) --------------------------------------------------------------------------------