{
    "componentChunkName": "component---packages-blog-gatsby-blog-core-src-templates-post-js",
    "path": "/how-does-graphql-work/",
    "result": {"data":{"post":{"id":"bcdd1461-6069-56a7-b618-6e13f6eb2306","title":"How does GraphQL work?","slug":"/how-does-graphql-work/","link":null,"excerpt":"Abstract Keywords: Software service architecture, RESTful, GraphQL, GraphQL architecture, Query…","tableOfContents":{"items":[{"url":"#abstract","title":"Abstract"},{"url":"#1-introduction","title":"1. Introduction"},{"url":"#2-why-to-use-graphql","title":"2. Why to use GraphQL?"},{"url":"#3-workflow","title":"3. Workflow"},{"url":"#4-getting-started-with-graphql","title":"4. Getting Started with GraphQL"},{"url":"#5-conclusion","title":"5. Conclusion"},{"url":"#references","title":"References"}]},"timeToRead":6,"featured":null,"protected":null,"thumbnailText":null,"date":"June 20, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"How does GraphQL work?\",\n  \"date\": \"2019-06-20T00:00:00.000Z\",\n  \"category\": \"Software Architecture\",\n  \"tags\": [\"GraphQL\", \"GraphQL workflow\"],\n  \"thumbnail\": \"graphql.png\",\n  \"author\": \"Suresh Kumar Mukhiya\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"abstract\"\n  }, \"Abstract\"), mdx(\"div\", {\n    style: {\n      \"backgroundColor\": \"#f1f0f0\",\n      \"color\": \"rgba(0, 0, 0, 1)\",\n      \"padding\": \"1rem\",\n      \"fontStyle\": \"italic\",\n      \"textAlign\": \"justify\"\n    }\n  }, \"GraphQL is a recently proposed, and increasingly adopted framework for providing a new type of data access interface on the web. The framework includes a graph query language that enables app developers to run queries against server API that traverse a graph of application objects and fetch exactly the right amount and format of data in a single request. Such APIs omit over-as well as under-fetching without the need for specialised servers, thus yielding performance benefits while being reusable. The potential of declarative data fetching have recently triggered discussion on whether a technology like GraphQL is going to replace REST architectural style and its implementation framework. This discussion is also relevant for existing RESTful systems with respect to possibilities of their modifications in order to benefit from declarative data fetching. The main aim of this article is to provide minimalistic background overview of how GraphQL works; what are the major components of GraphQL and finally how to get started with GraphQL.\"), mdx(\"h3\", {\n    \"id\": \"keywords\"\n  }, \"Keywords:\"), mdx(\"p\", null, \"Software service architecture, RESTful, GraphQL, GraphQL architecture, Query, mutations, resolvers.\"), mdx(\"h2\", {\n    \"id\": \"1-introduction\"\n  }, \"1. Introduction\"), mdx(\"p\", null, \"Back in 2012, Facebook faced a problem while they were developing their mobile applications which led them to create \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://graphql.org/learn/\"\n  }, \"GraphQL\"), \". Following are some of the main features of \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"#3\"\n  }, \"[\", mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"GraphQL\"), \"]\"), \":\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Hierarchical\"), \" - queries look exactly like the data they return.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Client-specified queries\"), \" - the client has the liberty to dictate what to fetch from the server,\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Strongly typed\"), \" - you can validate a query syntactically and within the GraphQL type system before execution. This also helps leverage powerful tools that improve the development experience, such as GraphiQL.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Introspective\"), \" - you can query the type system using the GraphQL syntax itself. This is great for parsing incoming data into strongly-typed interfaces, and not having to deal with parsing and manually transforming JSON into objects.\"))), mdx(\"h2\", {\n    \"id\": \"2-why-to-use-graphql\"\n  }, \"2. Why to use GraphQL?\"), mdx(\"p\", null, \"There are several reasons why and when one should consider using \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GraphQL\"), \". In this section, I am going to present some of the main reasons why \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GraphQL\"), \" is very beneficial especially for Health Information Exchange (HIE).\"), mdx(\"h3\", {\n    \"id\": \"single-endpoint\"\n  }, \"Single endpoint\"), mdx(\"p\", null, \"Let us check one of the most popular REST implementation of \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://hl7.org/fhir/resourcelist.html\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"HL7 FHIR\")), \" - \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://hapifhir.io/\"\n  }, \"Hapi FHIR\"), \". Hapi FHIR is \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"open-source\"), \" JAVA implementation of HL7 FHIR and can be downloaded to be installed on custom hosting platform. Let us take an example for \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Patients\"), \" HL7 FHIR resource.\"), mdx(\"p\", null, \"For Patients resource, they have at least following endpoints:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"GET\"), \": \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hapi.fhir.org/baseDstu3/Patient?_pretty=true\"\n  }, \"http://hapi.fhir.org/baseDstu3/Patient?_pretty=true\"), \", Get lists of all patients.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"GET\"), \": \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"\n  }, \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"), \", Get a single patient resource.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"POST\"), \": \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hapi.fhir.org/baseDstu3/Patient/_history/1?_pretty=true\"\n  }, \"http://hapi.fhir.org/baseDstu3/Patient/_history/1?_pretty=true\"), \", Create a patient record.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"PUT\"), \": \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"\n  }, \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"), \", Update a patients record,\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"DELETE\"), \": \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"\n  }, \"http://hapi.fhir.org/baseDstu3/Patient/1427171/_history/1?_pretty=true\"), \", Delete a patient record.\")), mdx(\"p\", null, \"For each HL7 FHIR resource, there can be two scenario:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Best Case\"), \": At least create 5 different endpoints as listed above. There are 143 resources listed on HL7 FHIR website, meaning in the best case scenario, one needs to maintain 143 x 5 = 715 endpoints.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Worst Case\"), \": There can be more endpoints to meet custom requirements, for example endpoints to fetch only patients from Bergen, Norway, all patients over 40 years old and many more.\"))), mdx(\"p\", null, \"One might argue that, we can create a single endpoint with query variables with RESTful approach to get all patients with all conditions. Sure, we can. The point here is:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Clients requirements are very dynamic. We can not predict requirements of each and every clients. Moreover, each clients requirements are affected by demographics, company\\u2019s ethics and rules. Creating or updating existing endpoints every time clients requirements change is inflexible and challenging.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Modification of existing endpoints can be risky for existing customers. For example, removing or adding extra attributes to a database table, would require existing customers to modify their request payloads. While it can meet the needs for newer customers, it will create additional tasks for existing customers. At a result of this, RESTful community started API versioning. However, the effect of changes on client, due to API versioning is very costly and challenging. A wonderful article is written about it here \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#1\"\n  }, \"[1]\"), \".\")), mdx(\"p\", null, \"Generally, it\\u2019s way more convenient and efficient to make a single call instead of multiple calls because it requires less code and less network overhead. More support for increased velocity and developer experience follow in respective sections. Microservices are great but they have some problems of their own. GraphQL can help. Here\\u2019s IBM\\u2019s experience using GraphQL for microservices:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"All in all, development and deployment of the GraphQL microservice was extremely quick. They started development in May and it was in production in July. The main reason for this was they didn\\u2019t ask for permission and just built it. He highly recommends this approach. It is far better than meetings.\\u201D \\u2014 GraphQL at massive scale: GraphQL as the glue in a microservice architecture, Jason Lengstorf (@jlengstorf) of IBM\")), mdx(\"h3\", {\n    \"id\": \"over-fetching\"\n  }, \"Over-fetching\"), mdx(\"p\", null, \"Over-fetching is characterized by fetching more data than actually required by an application. Each extra bits of data is subjective to consuming extra bandwidth in the network increasing cost on one hand and results in performance on the other. A real problem that annoys a lot of developers is over-fetching and under-fetching information through REST APIs. This is because REST APIs always return a fixed structure. We can\\u2019t get exactly the data that we want unless we create a specific endpoint for that.\"), mdx(\"h3\", {\n    \"id\": \"under-fetching-and-n1-request-problems\"\n  }, \"Under-fetching and \", mdx(\"inlineCode\", {\n    parentName: \"h3\"\n  }, \"n+1\"), \" request problems\"), mdx(\"p\", null, \"Under-fetching indicates that a particular endpoint doesn\\u2019t give sufficient of the essential data. The client will have to execute supplementary requests to fetch everything it necessitates. This can increase to a situation where a client requires to first get a list of elements but then needs to make one additional request per element to fetch the needed data referred to as \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"{n+1}\"), \" request problem. Each extra request is computationally expensive as well as increases deployment price. Increase is deployment price is more visible when using platform or infrastructure as service like \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.ibm.com/cloud/watson-assistant/pricing/\"\n  }, \"IBM Watson\"), \" where cost of usages is determined by number of requests sent to their server.\"), mdx(\"h3\", {\n    \"id\": \"improved-performance\"\n  }, \"Improved performance\"), mdx(\"p\", null, \"Engineers are not the only people benefiting from GraphQL. Users benefit too because performance (real or perceived) can improve due to the following:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Reduced payload (clients request only things they need without modifications on the backend)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Multiple requests combined into one which reduces network overhead\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client caching and backend batching&caching made easier with tooling\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Prefetching (e.g., Apollo prefetching)\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Optimistic UI updates\")), mdx(\"h3\", {\n    \"id\": \"versioning\"\n  }, \"Versioning\"), mdx(\"p\", null, \"One of the painful points in REST, in my opinion, is versioning. With REST APIs, it is very common to see a lot of APIs with v1 or v2, but in GraphQL there\\u2019s no need for it since you can evolve your APIs by adding new types or removing old ones.\"), mdx(\"p\", null, \"In GraphQL, all you need to do to evolve your API is to write new code. You can write new types, queries, and mutations without the need to ship another version of your API.\"), mdx(\"h2\", {\n    \"id\": \"3-workflow\"\n  }, \"3. Workflow\"), mdx(\"p\", null, \"GraphQL has two types of components:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Client Side components\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Server Side components\")), mdx(\"h3\", {\n    \"id\": \"server-side-components\"\n  }, \"Server-side components\"), mdx(\"p\", null, \"As shown in figure 1, GraphQL has three main server-side components:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Schema\"), \": A GraphQL schema is at the center of any GraphQL server implementation and describes the functionality available to the clients which connect to it.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Query:\"), \" A GraphQL query \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"#2\"\n  }, \"[2]\"), \" is the client application request to retrieve data from database or legacy API\\u2019s.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Resolver:\"), \" Resolvers provide the instructions for turning a GraphQL operation into data. They resolve the query to data by defining resolver functions. Resolver is a collection of functions that generate response for a GraphQL query. In simple terms, a resolver acts as a GraphQL query handler.\")), mdx(\"figure\", null, \"\\n  \", mdx(\"figure\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1140px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"33.33333333333333%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9klEQVQoz22R2aqEQAxE/f9P811EHBcGV1Tcd50MJ9CDXG6g6SaVqkonlojI5/MRE8dxyLIsMs+z7Psu53nKfd8yDIPeBDccw4MzTZPmLVMEeds2BZqmkaIoNFfXtXRd98MwwwSRdV1VZBxHNSRntW2rgOM4EgSBFkCkCBEEzAFP01SqqlI8iiI15R3HsRpZKEO0bVtFSZZlKe/3W0XoEJwufd9XQc/zhEZc19XRUEd313WJhQORJIkK0S2OHDoFp5B8GIaS57l+D5Esy37z5a2CzwFzEAB8vV76NbOkvu9/3UA0cySMIXzLbPm5tb9B3izvP+wZXxHAHTbu7gXXAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"GraphQL Workflow architecture\",\n    \"title\": \"GraphQL Workflow architecture\",\n    \"src\": \"/static/f91f32a59e0d8ea4f0c77193e008b380/b5cea/flow.png\",\n    \"srcSet\": [\"/static/f91f32a59e0d8ea4f0c77193e008b380/0e2fe/flow.png 285w\", \"/static/f91f32a59e0d8ea4f0c77193e008b380/432e7/flow.png 570w\", \"/static/f91f32a59e0d8ea4f0c77193e008b380/b5cea/flow.png 1140w\", \"/static/f91f32a59e0d8ea4f0c77193e008b380/09ede/flow.png 1710w\", \"/static/f91f32a59e0d8ea4f0c77193e008b380/d50e7/flow.png 2280w\", \"/static/f91f32a59e0d8ea4f0c77193e008b380/3c9d8/flow.png 2724w\"],\n    \"sizes\": \"(max-width: 1140px) 100vw, 1140px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"GraphQL Workflow architecture\"), \"\\n  \"), \"\\n  \", mdx(\"figcaption\", {\n    parentName: \"figure\"\n  }, \"Fig.1 - Architecture illustrating how GraphQL works internally\")), mdx(\"h3\", {\n    \"id\": \"client-side-components\"\n  }, \"Client-side components\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"GraphiQL:\"), \" Browser based interface for editing and testing GraphQL queries and mutations.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"ApolloClient\"), \": Best tool to build GraphQL client applications. Integrates well with all javascript front-end.\")), mdx(\"p\", null, \"The web server is built on NodeJs and Express framework. A request is made to the Apollo GraphQL Server by ReactJS application (built using Apollo Client library) or GraphiQL browser application. The query will be parsed and validated against a schema defined in the server. If the request schema passes the validation, then the associated resolver functions will be executed. The resolver will contain code to fetch data from an API or a database.\"), mdx(\"h2\", {\n    \"id\": \"4-getting-started-with-graphql\"\n  }, \"4. Getting Started with GraphQL\"), mdx(\"p\", null, \"Let us create a very simple \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"GraphQL\"), \" based API endpoints to fetch all the patients information and also get detailed information for a single patient.\"), mdx(\"h3\", {\n    \"id\": \"prerequisite\"\n  }, \"Prerequisite\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Have \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://nodejs.org/en/\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"NodeJS\")), \" and \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://yarnpkg.com/en/\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"a\"\n  }, \"yarn\")), \" installed in your system.\")), mdx(\"p\", null, \"Create a project with following files:\"), mdx(\"figure\", null, \"\\n  \", mdx(\"figure\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"475px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"57.54385964912281%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAABNklEQVQoz51S22qDQBCdXW+xokhMFBIVgy9RcyNRH5RaWpq2//9Dp8yGltKHRvswzOyyeziXIWpb0PUN9HoFPb+AhifQ+weo6/Ewn+Ox71FWFZqmQdd10DQNRPRHGQbItkGWdetS3mZdh5ASBnchFJBpmnfACCSFuP9oSrmuq4a2bZHnOcIoQpqm/wfUdV0Nm80GSZKoHoYh+J4lstTZbDYe0HEc9YlBjscjhmHAer1GVVU4HA5YLpe4XC7jAW3bhpQSi8UCWZahKAr4vo8gCLBarRTTLxWjiuVwisykLEvUdY0oihDHsZI/2UNmyJL3+z1Op5Ni2Pc9zuczPM/7Po8OyrIsxZB9Y0Ysk9PebrfqjpnyJvC70QzZIw6BzWcwtmG326kzhzVR9m0QPxZc/Fp2MWH5PwHsagxw4LfYwAAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Project Folder structure\",\n    \"title\": \"Project Folder structure\",\n    \"src\": \"/static/8fbd9ad80455a42898a634ec77d6fe22/466da/structure.png\",\n    \"srcSet\": [\"/static/8fbd9ad80455a42898a634ec77d6fe22/0e2fe/structure.png 285w\", \"/static/8fbd9ad80455a42898a634ec77d6fe22/466da/structure.png 475w\"],\n    \"sizes\": \"(max-width: 475px) 100vw, 475px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"Project Folder structure\"), \"\\n  \"), \"\\n  \", mdx(\"figcaption\", {\n    parentName: \"figure\"\n  }, \"Fig.2 - Demo Project Folder Structure\")), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Here is content for \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"package.json\"), \" file. All we did is install two libraries \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"apollo-server\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"graphql\"), \".\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"{\\n  \\\"name\\\": \\\"graphqlDemo\\\",\\n  \\\"version\\\": \\\"1.0.0\\\",\\n  \\\"main\\\": \\\"index.js\\\",\\n  \\\"license\\\": \\\"MIT\\\",\\n  \\\"dependencies\\\": {\\n    \\\"apollo-server\\\": \\\"2.4.8\\\",\\n    \\\"graphql\\\": \\\"14.2.1\\\"\\n  }\\n}\\n\\n\")), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"index.js\"), \" file and define schema.\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"const { ApolloServer, gql } = require(\\\"apollo-server\\\");\\nconst patient = require(\\\"./db\\\");\\n\\nconst typeDefs = gql`\\n  enum enumNameType {\\n    official\\n    usual\\n    temp\\n    nickname\\n    anonymous\\n    old\\n    maiden\\n  }\\n\\n  enum addressEnumType {\\n    home\\n    work\\n    temp\\n    old\\n    billing\\n  }\\n\\n  enum addressTypeEnum {\\n    postal\\n    physical\\n    both\\n  }\\n\\n  type Patient {\\n    resourceType: String\\n    id: ID!\\n    active: Boolean\\n    name: [NameSchema]\\n    gender: String\\n    address: [AddressSchema]\\n  }\\n\\n  type AddressSchema {\\n    use: addressEnumType\\n    type: addressTypeEnum\\n    text: String\\n    line: String\\n    city: String\\n    district: String\\n    state: String\\n    postalCode: String\\n    country: String\\n  }\\n\\n  type NameSchema {\\n    use: enumNameType\\n    family: String\\n    given: [String]\\n  }\\n\\n  type Query {\\n    patient: [Patient]\\n    patientById(id: ID!): Patient\\n  }\\n`;\\n\\nconst resolvers = {\\n  Query: {\\n    patient: () => patient,\\n    patientById: (parent, args, context, info) => {\\n      return patient.filter(item => item.id === args.id)[0];\\n    }\\n  }\\n};\\n\\nconst server = new ApolloServer({ typeDefs, resolvers });\\n\\nserver.listen().then(({ url }) => {\\n  console.log(`\\uD83D\\uDE80  Server ready at ${url}`);\\n});\\n\\n\")), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Create a mock up database file \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"db.js\"), \".\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"const patient = [\\n  {\\n    \\\"resourceType\\\": \\\"Patient\\\",\\n    \\\"id\\\": \\\"patients0001\\\",\\n    \\\"active\\\": true,\\n    \\\"name\\\": [\\n    {\\n      \\\"use\\\": \\\"official\\\",\\n      \\\"family\\\": \\\"Stark\\\",\\n      \\\"given\\\": [\\n        \\\"Arya\\\"\\n      ]\\n    },\\n  ],\\n  \\\"gender\\\": \\\"female\\\",\\n  \\\"address\\\": [\\n    {\\n      \\\"use\\\": \\\"home\\\",\\n      \\\"type\\\": \\\"physical\\\",\\n      \\\"text\\\": \\\"The North, Winterfell\\\",\\n    }\\n  ],\\n},\\n{\\n    \\\"resourceType\\\": \\\"Patient\\\",\\n    \\\"id\\\": \\\"patients0002\\\",\\n    \\\"active\\\": true,\\n    \\\"name\\\": [\\n    {\\n      \\\"use\\\": \\\"official\\\",\\n      \\\"family\\\": \\\"Snow\\\",\\n      \\\"given\\\": [\\n        \\\"Jon\\\"\\n      ]\\n    }\\n  ],\\n  \\\"gender\\\": \\\"female\\\",\\n  \\\"address\\\": [\\n    {\\n      \\\"use\\\": \\\"home\\\",\\n      \\\"type\\\": \\\"physical\\\",\\n      \\\"text\\\": \\\"The North, Winterfell\\\",\\n    }\\n  ],\\n},\\n{\\n    \\\"resourceType\\\": \\\"Patient\\\",\\n    \\\"id\\\": \\\"patients0003\\\",\\n    \\\"active\\\": false,\\n    \\\"name\\\": [\\n    {\\n      \\\"use\\\": \\\"official\\\",\\n      \\\"family\\\": \\\"Targaryen\\\",\\n      \\\"given\\\": [\\n        \\\"Daenerys\\\"\\n      ]\\n    }\\n  ],\\n  \\\"gender\\\": \\\"female\\\",\\n  \\\"address\\\": [\\n    {\\n      \\\"use\\\": \\\"home\\\",\\n      \\\"type\\\": \\\"physical\\\",\\n      \\\"text\\\": \\\"The Crownlands\\\",\\n    }\\n  ],\\n},\\n{\\n    \\\"resourceType\\\": \\\"Patient\\\",\\n    \\\"id\\\": \\\"patients0004\\\",\\n    \\\"active\\\": false,\\n    \\\"name\\\": [\\n    {\\n      \\\"use\\\": \\\"official\\\",\\n      \\\"family\\\": \\\"Lannister\\\",\\n      \\\"given\\\": [\\n        \\\"Cersei\\\"\\n      ]\\n    }\\n  ],\\n  \\\"gender\\\": \\\"female\\\",\\n  \\\"address\\\": [\\n    {\\n      \\\"use\\\": \\\"home\\\",\\n      \\\"type\\\": \\\"physical\\\",\\n      \\\"text\\\": \\\"The Westerlands\\\",\\n    },\\n    {\\n      \\\"use\\\": \\\"home\\\",\\n      \\\"type\\\": \\\"postal\\\",\\n      \\\"text\\\": \\\"The Crownlands\\\",\\n    }\\n  ],\\n  }\\n];\\n\\nmodule.exports = patient;\\n\\n\")), mdx(\"ol\", {\n    \"start\": 4\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"To run the example, execute follow commands in terminal from root folder of the project.\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"yarn\\nnode index.js\\n\")), mdx(\"p\", null, \"Your application should run at port \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"4000\"), \" and accessible to your by \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"http://localhost:4000/\"\n  }, \"localhost\"), \". You should get a browser user interface with playground like figure 3.\"), mdx(\"figure\", null, \"\\n  \", mdx(\"figure\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1140px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"65.96491228070175%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABiUlEQVQ4y52S20/CMBjF92wCDNnKEuUyIALdpUNCZAMBMRpf/XsN9wEPJv5Lx7S7UAzjwYeT00v66/n6VTl+/2ATHvC1WAnf7Y/Y7g/Ycg9j38seK4x8Fe6wXq+wWiyx3Oyg1AfvMDp9lBoObk0L+UoH+Ur7zAuxTusnib1qF0XTAmkyKMUWg9ryoDYY1IaHgslS8bWbewpn/IHB2yc06oPYI+hWAJ1K4vOujzt/FgMfPORrNgpcdVmOWNdaPdyxZxhsCqM3BXFHIDQAsWLZAfT2ENX5K5Si6YqD2bKRrznQuk8g9hhlbxYBqA/d8iPnya0AWmcIJUmReDJOFM1dEOqjLMqNDhMquy9K567IsEsJz4DuFOXHGQgbpamIFaRj7so1mAzU44aU3YlIIgBZwGtKLhMJnbF4v+QNE8g/gEnJExj9FxAv6nJGQqncuCl/xffSktnk4tulQP4l0sNZSU33VLITCF2CcVfUug217qDUZCJhrkKRq0qqUHEZoUPRZaM3F12WITLwF9PilU5vVrLgAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"GraphQL playground\",\n    \"title\": \"GraphQL playground\",\n    \"src\": \"/static/185a64e6139dd23c62610117b29f2ef2/b5cea/graphiql.png\",\n    \"srcSet\": [\"/static/185a64e6139dd23c62610117b29f2ef2/0e2fe/graphiql.png 285w\", \"/static/185a64e6139dd23c62610117b29f2ef2/432e7/graphiql.png 570w\", \"/static/185a64e6139dd23c62610117b29f2ef2/b5cea/graphiql.png 1140w\", \"/static/185a64e6139dd23c62610117b29f2ef2/09ede/graphiql.png 1710w\", \"/static/185a64e6139dd23c62610117b29f2ef2/bf8c1/graphiql.png 1722w\"],\n    \"sizes\": \"(max-width: 1140px) 100vw, 1140px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"GraphQL playground\"), \"\\n  \"), \"\\n  \", mdx(\"figcaption\", {\n    parentName: \"figure\"\n  }, \"Fig.3 - GraphiQL playground\")), mdx(\"ol\", {\n    \"start\": 5\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Querying your endpoints.\")), mdx(\"p\", null, \"Let us get the list of patients \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"name\"), \".\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"{\\n  patient {\\n    name {\\n      family\\n      given\\n    }\\n  }\\n}\\n\")), mdx(\"p\", null, \"Note with single implementation, we can control the attributes we want the endpoint to return. Provided, we are interested in getting \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"id\"), \" of the patients, we can modify the queries to:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"{\\n  patient {\\n    id\\n    name {\\n      family\\n      given\\n    }\\n  }\\n}\\n\\n\")), mdx(\"p\", null, \"Let us now query about a single Patient with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"id\"), \" of \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"patients0001\"), \". We can modify the quries as:\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\"\n  }, \"{\\n  patientById(id: \\\"patients0001\\\") {\\n    id\\n    name {\\n      family\\n      given\\n    }\\n  }\\n}\\n\\n\")), mdx(\"p\", null, \"Download complete working code here. \", mdx(\"a\", {\n    href: \"/0c9994134a45896bd7e211c8b2547677/graphqlDemo.zip\"\n  }, \"Click here.\")), mdx(\"p\", null, \"I have composed another article about how query is parsed, and validated before executing. \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/query-parsing-and-validation-in-graphQL/\"\n  }, \"Learn how a GraphQL query is parsed and validated here\"), \".\"), mdx(\"h4\", {\n    \"id\": \"here-is-link-to-the-second-part-of-the-article\"\n  }, \"Here is link to the \", mdx(\"a\", {\n    parentName: \"h4\",\n    \"href\": \"/query-parsing-and-validation-in-graphQL\"\n  }, \"second part of the article\"), \".\"), mdx(\"h2\", {\n    \"id\": \"5-conclusion\"\n  }, \"5. Conclusion\"), mdx(\"p\", null, \"GraphQL is a protocol and a query language. GraphQL API can access data stores directly but for most use cases GraphQL API is a data aggregator and an abstraction layer. The layer that improves velocity of development, decreases maintenance and makes developers happier. For these reasons, GraphQL makes even more sense for a public API. GraphQL is meant to be used for client applications, where network bandwidth and latency are critical. It provides clients, the ability to query an object graph (a hierarchical structure of related objects). Using GraphQL, clients also get to choose what fields need to be included in the response. This makes it a whole lot simpler and easier to use and manage data fetching on the client\\u2019s end.\"), mdx(\"h2\", {\n    \"id\": \"references\"\n  }, \"References\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    name: \"1\"\n  }), \"Li, J., Xiong, Y., Liu, X., & Zhang, L. (2013). How does web service API evolution affect clients? In Proceedings - IEEE 20th International Conference on Web Services, ICWS 2013. https://doi.org/10.1109/ICWS.2013.48\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    name: \"2\"\n  }), \"https://www.tutorialspoint.com/graphql/graphql_mutation.htm.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    name: \"3\"\n  }), \"https://graphql.org/learn/\")));\n}\n;\nMDXContent.isMDXComponent = true;","keywords":null,"tags":[{"id":"4412d279-876b-554b-8f10-cead0afdcbac","name":"GraphQL","slug":"/tag/graphql/"},{"id":"a7b982a3-c368-54d3-8a83-d9844b66214a","name":"GraphQL workflow","slug":"/tag/graphql-workflow/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/762edb84b0bf808c1746d10188ebf04a/19188/graphql.png","srcSet":"/static/762edb84b0bf808c1746d10188ebf04a/db297/graphql.png 190w,\n/static/762edb84b0bf808c1746d10188ebf04a/19188/graphql.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/762edb84b0bf808c1746d10188ebf04a/228d6/graphql.webp 190w,\n/static/762edb84b0bf808c1746d10188ebf04a/6b99c/graphql.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/762edb84b0bf808c1746d10188ebf04a/945a8/graphql.png","srcSet":"/static/762edb84b0bf808c1746d10188ebf04a/17e9b/graphql.png 800w,\n/static/762edb84b0bf808c1746d10188ebf04a/945a8/graphql.png 1600w","sizes":"(min-width: 1600px) 1600px, 100vw"},"sources":[{"srcSet":"/static/762edb84b0bf808c1746d10188ebf04a/c9f06/graphql.webp 800w,\n/static/762edb84b0bf808c1746d10188ebf04a/f47df/graphql.webp 1600w","type":"image/webp","sizes":"(min-width: 1600px) 1600px, 100vw"}]},"width":1600,"height":650}}},"tagCategoryPosts":{"nodes":[{"id":"9fe0732b-2cb8-5db5-9f24-c74d3b8c833b","title":"GraphQL query parsing and validation?","slug":"/graphql-query-parsing-and-validation/","link":null,"excerpt":"Abstract Keywords: Software service architecture, RESTful, GraphQL, GraphQL architecture, Query…","timeToRead":5,"featured":null,"thumbnailText":null,"date":"October 27, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/db297/ast.png 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/228d6/ast.webp 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/6b99c/ast.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/40116/ast.png 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png 1168w","sizes":"(min-width: 1168px) 1168px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/67375/ast.webp 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/64ebe/ast.webp 1168w","type":"image/webp","sizes":"(min-width: 1168px) 1168px, 100vw"}]},"width":1600,"height":650.6849315068494}}}]},"tagPosts":{"nodes":[{"id":"9fe0732b-2cb8-5db5-9f24-c74d3b8c833b","title":"GraphQL query parsing and validation?","slug":"/graphql-query-parsing-and-validation/","link":null,"excerpt":"Abstract Keywords: Software service architecture, RESTful, GraphQL, GraphQL architecture, Query…","timeToRead":5,"featured":null,"thumbnailText":null,"date":"October 27, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/db297/ast.png 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/228d6/ast.webp 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/6b99c/ast.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/40116/ast.png 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png 1168w","sizes":"(min-width: 1168px) 1168px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/67375/ast.webp 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/64ebe/ast.webp 1168w","type":"image/webp","sizes":"(min-width: 1168px) 1168px, 100vw"}]},"width":1600,"height":650.6849315068494}}}]},"categoryPosts":{"nodes":[{"id":"40c99c9c-876e-56bd-9a15-a00fd5b53059","title":"Difference between software architecture and software design","slug":"/difference-between-software-architecture-and-software-design/","link":null,"excerpt":"Abstract Keywords: Software design, Software architecture, Software system, Software pattern…","timeToRead":5,"featured":null,"thumbnailText":null,"date":"January 24, 2021","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/fab3b3276c4f887c6fb8194b3db9b256/19188/arch.png","srcSet":"/static/fab3b3276c4f887c6fb8194b3db9b256/db297/arch.png 190w,\n/static/fab3b3276c4f887c6fb8194b3db9b256/19188/arch.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/fab3b3276c4f887c6fb8194b3db9b256/228d6/arch.webp 190w,\n/static/fab3b3276c4f887c6fb8194b3db9b256/6b99c/arch.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#e85848","images":{"fallback":{"src":"/static/fab3b3276c4f887c6fb8194b3db9b256/945a8/arch.png","srcSet":"/static/fab3b3276c4f887c6fb8194b3db9b256/17e9b/arch.png 800w,\n/static/fab3b3276c4f887c6fb8194b3db9b256/945a8/arch.png 1600w","sizes":"(min-width: 1600px) 1600px, 100vw"},"sources":[{"srcSet":"/static/fab3b3276c4f887c6fb8194b3db9b256/c9f06/arch.webp 800w,\n/static/fab3b3276c4f887c6fb8194b3db9b256/f47df/arch.webp 1600w","type":"image/webp","sizes":"(min-width: 1600px) 1600px, 100vw"}]},"width":1600,"height":650}}},{"id":"38a729f0-c16d-5883-9dd4-4ed2a67942f5","title":"Test Driven Development vs Behaviour Driven Development","slug":"/test-driven-development-vs-behaviour-driven-development/","link":null,"excerpt":"Abstract Keywords: Test Driven Development, Behaviour Driven Development, Acceptance Test Driven…","timeToRead":2,"featured":null,"thumbnailText":null,"date":"December 24, 2020","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/c9cd266b0efb20736b1bcbd9a91097a2/19188/tdd.png","srcSet":"/static/c9cd266b0efb20736b1bcbd9a91097a2/db297/tdd.png 190w,\n/static/c9cd266b0efb20736b1bcbd9a91097a2/19188/tdd.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/c9cd266b0efb20736b1bcbd9a91097a2/228d6/tdd.webp 190w,\n/static/c9cd266b0efb20736b1bcbd9a91097a2/6b99c/tdd.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/c9cd266b0efb20736b1bcbd9a91097a2/8d218/tdd.png","srcSet":"/static/c9cd266b0efb20736b1bcbd9a91097a2/7bba1/tdd.png 434w,\n/static/c9cd266b0efb20736b1bcbd9a91097a2/8d218/tdd.png 867w","sizes":"(min-width: 867px) 867px, 100vw"},"sources":[{"srcSet":"/static/c9cd266b0efb20736b1bcbd9a91097a2/795fe/tdd.webp 434w,\n/static/c9cd266b0efb20736b1bcbd9a91097a2/d6f0a/tdd.webp 867w","type":"image/webp","sizes":"(min-width: 867px) 867px, 100vw"}]},"width":1600,"height":649.59630911188}}},{"id":"c21a2e38-b56e-5e0f-abc6-5cff1879670f","title":"Factory Design Pattern in Python","slug":"/factory-design-pattern-in-python/","link":null,"excerpt":"Abstract Keywords: Design pattern, Factory Design Pattern in Python, Creational Design Pattern…","timeToRead":3,"featured":null,"thumbnailText":null,"date":"July 29, 2020","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/15620787b55f5f970c115462cc86771a/19188/task.png","srcSet":"/static/15620787b55f5f970c115462cc86771a/db297/task.png 190w,\n/static/15620787b55f5f970c115462cc86771a/19188/task.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/15620787b55f5f970c115462cc86771a/228d6/task.webp 190w,\n/static/15620787b55f5f970c115462cc86771a/6b99c/task.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/15620787b55f5f970c115462cc86771a/4c012/task.png","srcSet":"/static/15620787b55f5f970c115462cc86771a/f8224/task.png 279w,\n/static/15620787b55f5f970c115462cc86771a/4c012/task.png 558w","sizes":"(min-width: 558px) 558px, 100vw"},"sources":[{"srcSet":"/static/15620787b55f5f970c115462cc86771a/a058d/task.webp 279w,\n/static/15620787b55f5f970c115462cc86771a/bd1be/task.webp 558w","type":"image/webp","sizes":"(min-width: 558px) 558px, 100vw"}]},"width":1600,"height":650.8960573476702}}},{"id":"9fe0732b-2cb8-5db5-9f24-c74d3b8c833b","title":"GraphQL query parsing and validation?","slug":"/graphql-query-parsing-and-validation/","link":null,"excerpt":"Abstract Keywords: Software service architecture, RESTful, GraphQL, GraphQL architecture, Query…","timeToRead":5,"featured":null,"thumbnailText":null,"date":"October 27, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/db297/ast.png 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/19188/ast.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/228d6/ast.webp 190w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/6b99c/ast.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png","srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/40116/ast.png 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/20d1c/ast.png 1168w","sizes":"(min-width: 1168px) 1168px, 100vw"},"sources":[{"srcSet":"/static/69d98b0c562bd0dfaa10f53baff6e903/67375/ast.webp 584w,\n/static/69d98b0c562bd0dfaa10f53baff6e903/64ebe/ast.webp 1168w","type":"image/webp","sizes":"(min-width: 1168px) 1168px, 100vw"}]},"width":1600,"height":650.6849315068494}}},{"id":"22454c7f-446b-5f84-aa6f-ad1756a5e602","title":"All about Information Architecture","slug":"/all-about-information-architecture/","link":null,"excerpt":"Abstract And many more. Well, being full stack web development/ frontend development these not very…","timeToRead":14,"featured":null,"thumbnailText":null,"date":"October 27, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/515a3b7ad5c1101c170a555bc2c979ac/19188/ia.png","srcSet":"/static/515a3b7ad5c1101c170a555bc2c979ac/db297/ia.png 190w,\n/static/515a3b7ad5c1101c170a555bc2c979ac/19188/ia.png 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/515a3b7ad5c1101c170a555bc2c979ac/228d6/ia.webp 190w,\n/static/515a3b7ad5c1101c170a555bc2c979ac/6b99c/ia.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/515a3b7ad5c1101c170a555bc2c979ac/a0508/ia.png","srcSet":"/static/515a3b7ad5c1101c170a555bc2c979ac/9e437/ia.png 657w,\n/static/515a3b7ad5c1101c170a555bc2c979ac/a0508/ia.png 1314w","sizes":"(min-width: 1314px) 1314px, 100vw"},"sources":[{"srcSet":"/static/515a3b7ad5c1101c170a555bc2c979ac/a3bb1/ia.webp 657w,\n/static/515a3b7ad5c1101c170a555bc2c979ac/bb649/ia.webp 1314w","type":"image/webp","sizes":"(min-width: 1314px) 1314px, 100vw"}]},"width":1600,"height":650.2283105022831}}},{"id":"27d95ea0-f879-5183-b4f2-8a8650eb45c1","title":"Adaptive Technology in Mental Health","slug":"/adaptive-technology-in-mental-health/","link":null,"excerpt":"Technology has open new domains in data collection and mental health. The uniqueness of mental…","timeToRead":3,"featured":null,"thumbnailText":null,"date":"January 04, 2019","category":{"id":"586422b6-b6df-56a6-b4f7-5071c49da347","name":"Software Architecture","slug":"/category/software-architecture/","color":null,"icon":"/static/171c4f2a122d83963638a8e07c0520ed/software.svg"},"author":{"id":"947e8b57-e3c9-5b4b-9872-fc27eb54f257","name":"Suresh Kumar Mukhiya","slug":"/author/suresh-kumar-mukhiya/","title":"Software Engineer","description":"Researcher by chance. I prefer green food and nice code. Artificial Intelligence, Big data and Frontend Technologies fascinates me. I like taking pictures.","skills":["Software Architecture","Frontend Development","Natural Language Processing"],"social":[{"name":"Github","url":"http://github.com/sureshHARDIYA/"},{"name":"Twitter","url":"https://twitter.com/dr_code_skm"},{"name":"Website","url":"https://www.skmukhiya.com.np/"}],"thumbnail":{"__typename":"ImageSharp","ImageSharp_small":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a7a66/suresh.png 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/416a0/suresh.png 96w","sizes":"48px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/a3542/suresh.webp 48w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/0f66d/suresh.webp 96w","type":"image/webp","sizes":"48px"}]},"width":48,"height":48},"ImageSharp_regular":{"layout":"fixed","placeholder":{"fallback":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='150'%20height='150'%20viewBox='0%200%20150%20150'%20preserveAspectRatio='none'%3e%3cpath%20d='M63%202a74%2074%200%201041%20142c8-4%208-4%205-5l-3-2c0-2%203-2%206-1%203%202%204%202%2011-4A74%2074%200%200063%202M41%2058c-19%208-25%2017-26%2035l-1%2011c-2%205%208%2010%2019%2010h6l-1-4-1-5%202-9%201%201%202%202%202%202c0%202%201%202%204%202%203-1%205%200%207%201%207%204%2016%201%2022-8l2-2-1%202-1%203h13c4-1%204-1%206-7%201-2%201-4%202-3l3%201%202%201%202%201c3%200%205%203%204%204l-1%206v5h5c6%200%2013-3%2013-6l-2-8c-1-8-5-19-8-21-2-3-15-12-19-12-1-1-3-1-4%201l-4%201c-1-1-2%200-3%202v3c3%201-3%2018-8%2022-4%203-4%201%200-3%205-6%204-8-2-3-8%208-8%208-14%202-4-4-5-5-5-3v3l-3-10c0-8-3-20-4-20l-9%203m62%2058l-6%204h-2c0-2-3-1-4%201%200%203%202%206%208%207l7%203c4%202%209%202%207-1l-3-8c-3-8-3-8-7-6m-15%2014c-1%205-1%206%204%207h8c7-2%206-2-2-6-11-5-10-5-10-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e"},"images":{"fallback":{"src":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png","srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/46e60/suresh.png 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/d612b/suresh.png 300w","sizes":"150px"},"sources":[{"srcSet":"/static/f5daa173e29dcd3a2863e27fd1dbc2d1/ae23d/suresh.webp 150w,\n/static/f5daa173e29dcd3a2863e27fd1dbc2d1/bd37b/suresh.webp 300w","type":"image/webp","sizes":"150px"}]},"width":150,"height":150}}},"thumbnail":{"__typename":"ImageSharp","ImageSharp_vertical":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/1b0e3b65008965142a63adb983e4a904/144fe/photo-1490474418585-ba9bad8fd0ea-cover.jpg","srcSet":"/static/1b0e3b65008965142a63adb983e4a904/9d7b9/photo-1490474418585-ba9bad8fd0ea-cover.jpg 190w,\n/static/1b0e3b65008965142a63adb983e4a904/144fe/photo-1490474418585-ba9bad8fd0ea-cover.jpg 380w","sizes":"(min-width: 380px) 380px, 100vw"},"sources":[{"srcSet":"/static/1b0e3b65008965142a63adb983e4a904/228d6/photo-1490474418585-ba9bad8fd0ea-cover.webp 190w,\n/static/1b0e3b65008965142a63adb983e4a904/6b99c/photo-1490474418585-ba9bad8fd0ea-cover.webp 380w","type":"image/webp","sizes":"(min-width: 380px) 380px, 100vw"}]},"width":380,"height":290},"ImageSharp_hero":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/1b0e3b65008965142a63adb983e4a904/2265f/photo-1490474418585-ba9bad8fd0ea-cover.jpg","srcSet":"/static/1b0e3b65008965142a63adb983e4a904/df20f/photo-1490474418585-ba9bad8fd0ea-cover.jpg 200w,\n/static/1b0e3b65008965142a63adb983e4a904/2265f/photo-1490474418585-ba9bad8fd0ea-cover.jpg 400w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/1b0e3b65008965142a63adb983e4a904/67e60/photo-1490474418585-ba9bad8fd0ea-cover.webp 200w,\n/static/1b0e3b65008965142a63adb983e4a904/6a2da/photo-1490474418585-ba9bad8fd0ea-cover.webp 400w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":1600,"height":652}}}]},"previous":{"id":"53381c6e-d615-520c-b256-e31be2f1ce22","slug":"/philosophy-of-science-and-its-relation-to-ai-assisted-adaptive-technology-for-mental-health-treatment/","title":"Philosophy of Science and its relation to AI-assisted Adaptive Technology for mental health treatment"},"next":{"id":"9fe0732b-2cb8-5db5-9f24-c74d3b8c833b","slug":"/graphql-query-parsing-and-validation/","title":"GraphQL query parsing and validation?"}},"pageContext":{"id":"bcdd1461-6069-56a7-b618-6e13f6eb2306","categoryId":"586422b6-b6df-56a6-b4f7-5071c49da347","tagsIds":["4412d279-876b-554b-8f10-cead0afdcbac","a7b982a3-c368-54d3-8a83-d9844b66214a"],"hasTags":true,"previousId":"53381c6e-d615-520c-b256-e31be2f1ce22","nextId":"9fe0732b-2cb8-5db5-9f24-c74d3b8c833b","paginatePostsPage":true,"basePath":"/","services":{"algolia":true,"mailchimp":false,"disqus":true,"graphComment":false,"facebookComment":false},"siteUrl":null,"mobileMenu":{"title":"Topics","items":[{"name":"Artificial Intelligence","slug":"/category/artificial-intelligence/"},{"name":"Frontend Cheetseat","slug":"/category/frontend-cheetseat/"},{"name":"My Philosophy","slug":"/category/my-philosophy/"},{"name":"Paper Review","slug":"/category/paper-review/"},{"name":"Research Methods","slug":"/category/research-methods/"},{"name":"Software Architecture","slug":"/category/software-architecture/"}]},"darkMode":true,"includeExcerpt":true,"includeTimeToRead":true,"includeTableOfContents":true,"imageQuality":75}},
    "staticQueryHashes": ["1992822086","2409295108","2918496967","2981853053","4235339838","4240507859"]}