<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Grafbase</title>
    <description>The latest articles on Forem by Grafbase (@grafbase).</description>
    <link>https://forem.com/grafbase</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F5907%2Faf709557-4b32-47c2-a5bf-1daaf98ec61a.png</url>
      <title>Forem: Grafbase</title>
      <link>https://forem.com/grafbase</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/grafbase"/>
    <language>en</language>
    <item>
      <title>Grafbase May 2023 Update</title>
      <dc:creator>Heather Thacker</dc:creator>
      <pubDate>Sun, 04 Jun 2023 22:55:53 +0000</pubDate>
      <link>https://forem.com/grafbase/grafbase-may-2023-update-2df7</link>
      <guid>https://forem.com/grafbase/grafbase-may-2023-update-2df7</guid>
      <description>&lt;p&gt;Hey there,&lt;/p&gt;

&lt;p&gt;May was a huge month at Grafbase. We are excited to share with you all the latest updates, and resources, including our newly released &lt;strong&gt;GraphQL Connector and Edge Caching&lt;/strong&gt; features!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/edge-caching"&gt;Edge Caching&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Add caching to any API using the OpenAPI and GraphQL connectors. Reduce latency with faster responses with Grafbase Edge Caching.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/edge-caching"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y8z4EkKr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nog8q8d6cru6ut59ap2v.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/graphql-connector"&gt;GraphQL Connector&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Unify all of your GraphQL APIs into one graph at the edge with the Grafbase Edge Gateway.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/graphql-connector"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G-BUpqV9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpxzer9epeu7004yyosk.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/hanko-integration-now-available"&gt;Hanko Integration&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Grafbase supports Hanko integration with a new JWKS auth provider.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/hanko-integration-now-available"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gkU4zbOa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ndqcacn7jrcudhh993dq.png" alt="Image description" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Check out more updates from our changelog:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/changelog/cli-and-openapi-connector-improvements"&gt;CLI and OpenAPI Connector Improvements&lt;/a&gt;&lt;/strong&gt;
CLI deploys, new flags for creating projects, and many improvements to the OpenAPI Connector, including reduced memory used with introspection queries and resolvers now emitting error logs with exceptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource Updates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-resolvers-vercel-and-postgres"&gt;[Guide] Working with resolvers and Vercel Postgres&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Create a GraphQL API to handle OpenAI vector embeddings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-graphql-and-turso-using-edge-resolvers"&gt;[Guide] Working with GraphQL and Turso using Edge Resolvers&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Leverage the &lt;code&gt;@libsql/client&lt;/code&gt; library inside Grafbase resolvers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-resolvers-and-upstash-ratelimit"&gt;[Guide] Rate limit ChatGPT API requests with Upstash and Grafbase resolvers&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Use Upstash Redis rate limiting through resolvers to prevent costly requests&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-graphql-mongodb-data-api-and-edge-resolvers"&gt;[Guide] Working with GraphQL, MongoDB Data API and Edge Resolvers&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Create a custom GraphQL query and mutation using Edge Resolvers to find and create MongoDB documents using the Data API&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/how-to-build-a-real-time-chat-app-with-nextjs-graphql-and-server-sent-events"&gt;[Guide] How to Build a Real-time Chat App with Next.js, GraphQL, and Server-Sent Events&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Build a chat app that uses server-sent events to deliver messages to users, with GraphQL Live Queries for streaming messages to the browser&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-mutation-resolvers-and-stripe-checkout"&gt;[Guide] Working with mutation resolvers and Stripe Checkout&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Create a custom mutation with Edge Resolvers using the server-side Stripe SDK to create a shopping cart checkout&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Learn about realtime GraphQL with Houdini at &lt;a href="https://guild.host/events/svelte-london-june-2023-vi6d2y"&gt;Svelte London&lt;/a&gt; June 21st.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PS. If you like what we’re building we’d love to hear more about what you think. Join us on &lt;a href="https://discord.gg/grafbase"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/grafbase"&gt;Twitter&lt;/a&gt;, &lt;a href="https://youtube.com/@grafbase"&gt;YouTube&lt;/a&gt;, and &lt;a href="http://github.com/grafbase"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope you had a great month, and looking forward to what's ahead!&lt;/p&gt;

</description>
      <category>api</category>
      <category>graphql</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Top 5 tools every frontend developer should be using with GraphQL in 2023</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Wed, 31 May 2023 08:33:01 +0000</pubDate>
      <link>https://forem.com/grafbase/top-5-tools-every-frontend-developer-should-be-using-with-graphql-in-2023-5gj3</link>
      <guid>https://forem.com/grafbase/top-5-tools-every-frontend-developer-should-be-using-with-graphql-in-2023-5gj3</guid>
      <description>&lt;p&gt;Every week, a bunch of fresh tools, services, and libraries make their debut, claiming to take the GraphQL developer experience to the next level.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/AV4Amf3Mag0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Here are my top 5 tools every frontend developer should be using with GraphQL in 2023:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Grafbase OpenAPI Connector
&lt;/h2&gt;

&lt;p&gt;Maximize the power of web and mobile app development by effortlessly blending REST and GraphQL APIs with Grafbase. Say goodbye to complexity and hello to a unified GraphQL API that supercharges your app development process.&lt;/p&gt;

&lt;p&gt;Enter &lt;a href="https://en.wikipedia.org/wiki/OpenAPI_Specification" rel="noopener noreferrer"&gt;OpenAPI&lt;/a&gt;, formerly known as Swagger - the ultimate game-changer for API definition and documentation. It simplifies things by describing APIs in a format that machines understand, making it easier for developers to work with all kinds of APIs. And with &lt;a href="https://grafbase.com/edge-gateway" rel="noopener noreferrer"&gt;Grafbase Edge Gateway&lt;/a&gt;, you can seamlessly merge OpenAPI-driven REST APIs and transform them into GraphQL, taking your stack to a whole new level of awesomeness.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;extend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;schema&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;openapi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;Stripe&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;githubusercontent&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="n"&gt;stripe&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="n"&gt;openapi&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="n"&gt;master&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="n"&gt;openapi&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="n"&gt;spec3&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="n"&gt;Bearer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="n"&gt;STRIPE_API_KEY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;}}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Query&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's free to get started and you don't even need an account to build locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx grafbase init &lt;span class="nt"&gt;--template&lt;/span&gt; openapi-stripe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. GraphQL Code Generator — Client Preset
&lt;/h2&gt;

&lt;p&gt;The type system in GraphQL is a major game-changer. We can leverage the GraphQL Code Generator to use that same type system to generate TypeScript types so we can build better frontends without error.&lt;/p&gt;

&lt;p&gt;In the past, we relied on the GraphQL Code Generator to generate hooks for our existing GraphQL clients. But it was a pain when we wanted to switch to new clients.&lt;/p&gt;

&lt;p&gt;The GraphQL Code Generator recommends using the &lt;a href="https://the-guild.dev/graphql/codegen/plugins/presets/preset-client" rel="noopener noreferrer"&gt;&lt;code&gt;client-preset&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://the-guild.dev/graphql/codegen/plugins/typescript/typed-document-node" rel="noopener noreferrer"&gt;&lt;code&gt;TypedDocumentNode&lt;/code&gt;&lt;/a&gt; to level up our functions and make sure we're getting the correct operation and variable types.&lt;/p&gt;

&lt;p&gt;Plus, it's all about keeping operations and fragments in their own components. This approach reduces code complexity, keeps things tidy, and makes it a breeze to switch to any GraphQL client that supports &lt;code&gt;TypedDocumentNode&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;LessonFragment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;graphql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="cm"&gt;/* GraphQL */&lt;/span&gt; &lt;span class="s2"&gt;`
  fragment LessonItem on Lesson {
    title
  }
`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Lesson&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;lesson&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;FragmentType&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;LessonFragment&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lesson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useFragment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;LessonFragment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lesson&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="c1"&gt;// Fully typed!&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;lesson&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. GQty
&lt;/h2&gt;

&lt;p&gt;Are you tired of the hassle of writing GraphQL operations and configuring codegen for TypeScript? Say goodbye to all that and switch to &lt;a href="https://gqty.dev/" rel="noopener noreferrer"&gt;GQty&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;With GQty, you don't even need a separate GraphQL client. It's like magic! GQty takes care of transforming your code into a GraphQL operation behind the scenes. So sit back, relax, and let GQty handle all the heavy lifting for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FunctionComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useQuery&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../gqty/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;FunctionComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;me&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;friends&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useQuery&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      Hello &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;!
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Query&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. GraphQL Network Inspector
&lt;/h2&gt;

&lt;p&gt;The days of struggling to identify &lt;code&gt;/graphql&lt;/code&gt; requests in the Network Inspector are over!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/warrenday/graphql-network-inspector" rel="noopener noreferrer"&gt;GraphQL Network Inspector&lt;/a&gt;, an awesome extension for developer tools that makes debugging a breeze. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fkyrn7rqj9f5sji90j1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fkyrn7rqj9f5sji90j1.png" alt="GraphQL Network Inspector" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It categorizes requests into queries, mutations, and subscriptions and even uses the GraphQL operation name. Say goodbye to confusion and hello to simplified debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. GraphMan
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Escape-Technologies/graphman" rel="noopener noreferrer"&gt;GraphMan&lt;/a&gt; takes away all the boring and time-consuming aspects of crafting queries and mutations for a GraphQL API. &lt;/p&gt;

&lt;p&gt;With GraphMan, you can effortlessly generate a comprehensive collection from a single GraphQL endpoint. Each collection includes requests for every query and mutation, all conveniently pre-filled variables.&lt;/p&gt;

&lt;p&gt;To create a collection, just pass your Grafbase API URL to the command below. It's that easy!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run https://deno.land/x/graphman@v1.2.1/src/cli.ts GRAFBASE_API_URL_HERE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
   Join us at GraphQL Conf
&lt;/h2&gt;

&lt;p&gt;Do you want to learn more about GraphQL? Join us at GraphQL Conf this year. &lt;a href="https://graphql.org/conf/" rel="noopener noreferrer"&gt;Get your tickets now&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>graphql</category>
      <category>tooling</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Grafbase April 2023 Update</title>
      <dc:creator>Heather Thacker</dc:creator>
      <pubDate>Fri, 05 May 2023 17:26:49 +0000</pubDate>
      <link>https://forem.com/grafbase/grafbase-april-2023-update-1hmi</link>
      <guid>https://forem.com/grafbase/grafbase-april-2023-update-1hmi</guid>
      <description>&lt;p&gt;April was a big month at Grafbase! We are thrilled to share with you all the latest updates, resources, and recap from launch week.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/edge-resolvers"&gt;Edge Resolvers&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Deploy custom business logic to the edge&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q2odO1Yy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yeja57nwwod99bxhbrwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q2odO1Yy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yeja57nwwod99bxhbrwn.png" alt="Edge Resolvers" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/serverless-search"&gt;Serverless Search&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Advanced queries and filters using serverless search&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--go8x-1s6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c27sgwluka75i9tp953w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--go8x-1s6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c27sgwluka75i9tp953w.png" alt="Serverless Search" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/owner-based-authorization"&gt;Owner-based Authorization&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Build multi-tenant applications with the new owner-based rule&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Seyg4el6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b5il0bsz8kpwipt7y51i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Seyg4el6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b5il0bsz8kpwipt7y51i.png" alt="Owner-based Authorization" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/openapi-connector"&gt;OpenAPI Connector&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Connect REST APIs to your unified data layer&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nR-AKUw4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ge89rgqr6efrhrvr8g5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nR-AKUw4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ge89rgqr6efrhrvr8g5r.png" alt="OpenAPI Connector" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/cli-deploys"&gt;CLI Deploys&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;From idea to production GraphQL API in seconds&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZO1aBzov--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cvyw0slduw8cbcihgdxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZO1aBzov--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cvyw0slduw8cbcihgdxm.png" alt="CLI Deploys" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/pro-plan"&gt;Pro Plan&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Usage-based billing for the serverless era&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_7kVVUP4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/578e5u3vdt5i78oj5s43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_7kVVUP4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/578e5u3vdt5i78oj5s43.png" alt="Pro Plan" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/pathfinder"&gt;Pathfinder&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A new way to explore your GraphQL API&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3fGb6fIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k4ipl8rdpn10msxlupso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3fGb6fIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k4ipl8rdpn10msxlupso.png" alt="Pathfinder" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://grafbase.com/changelog/scoped-unique-fields"&gt;Scoped @unique fields&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Include additional fields when checking for uniqueness&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.producthunt.com/posts/grafbase"&gt;Product Hunt Launch&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We launched public beta on Product Hunt&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource Updates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grafbase.com/guides/working-with-query-resolvers-and-openai"&gt;[Guide] Working with query resolvers and OpenAI&lt;/a&gt;&lt;br&gt;
Create a GraphQL API that exposes a single query resolver to ask OpenAI  a question with GPT-3.5&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grafbase.com/guides/using-remix-loaders-for-fetching-data"&gt;[Guide] Using Remix loader for fetching data &lt;/a&gt;&lt;br&gt;
Set up a Remix project and fetch data in a loader on the server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grafbase.com/guides/working-with-remix-actions-and-graphql"&gt;[Guide] Working with Remix actions and GraphQL&lt;/a&gt;&lt;br&gt;
Add a form that submits a GraphQL mutation of information through a Remix action&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://grafbase.com/guides/working-with-field-resolvers-and-fetch"&gt;[Guide] Working with field resolvers and Fetch&lt;/a&gt;&lt;br&gt;
Create a GraphQL API that stores places and fetch current weather with field resolvers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tinybird.co/blog-posts/chatting-graphql-with-jamie-barton-of-grafbase"&gt;[Interview] Tinybird and Jamie have a chat&lt;/a&gt;&lt;br&gt;
Conversation about Grafbase building a serverless platform and how Tinybird increases development speed while supporting data integration&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://neon.tech/docs/guides/grafbase"&gt;[Guide] Use Grafbase Edge Resolvers with Neon&lt;/a&gt;&lt;br&gt;
Create a GraphQL API and use Grafbase Edge Resolvers with the Neon serverless driver to interact with your database&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=46SMmLMGLYM"&gt;[Video] Check out Launch Week announcements on Youtube&lt;/a&gt;&lt;br&gt;
Check out announcement videos, like this clip about Pathfinder&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Catch us in Salt Lake City, UT for &lt;a href="https://remix.run/conf/2023"&gt;RemixConf 2023&lt;/a&gt; during May 9-11th.&lt;/p&gt;

&lt;p&gt;Hosting a &lt;a href="https://www.eventbrite.com/e/nashville-data-happy-hour-tickets-627297322177"&gt;Data Happy Hour&lt;/a&gt; in Nashville, TN with Tinybird on May 17, reach out if you are in the area and interested in attending.&lt;/p&gt;

&lt;p&gt;PS. If you like what we’re building we’d love to hear more about what you think. Join us on &lt;a href="https://discord.gg/grafbase"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/grafbase"&gt;Twitter&lt;/a&gt;, &lt;a href="https://youtube.com/@grafbase"&gt;YouTube&lt;/a&gt;, and &lt;a href="http://github.com/grafbase"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hope you had a great month, and lastly, here's a team photo from our offsite week in Barcelona, Spain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lojsaHUM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/media/FuTyXEYWYAIiDAD%3Fformat%3Djpg%26name%3Dlarge" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lojsaHUM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/media/FuTyXEYWYAIiDAD%3Fformat%3Djpg%26name%3Dlarge" alt="Team Photo" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>graphql</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Grafbase Public Beta</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Mon, 24 Apr 2023 08:44:38 +0000</pubDate>
      <link>https://forem.com/grafbase/grafbase-public-beta-2bi0</link>
      <guid>https://forem.com/grafbase/grafbase-public-beta-2bi0</guid>
      <description>&lt;p&gt;Grafbase is now in Public Beta!&lt;/p&gt;

&lt;p&gt;Since launching the &lt;a href="https://grafbase.com/blog/announcing-grafbase" rel="noopener noreferrer"&gt;Private Beta&lt;/a&gt; in July 2022, thousands of early adopters have joined our growing community to help shape and improve the Grafbase platform.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1650416869927534592-845" src="https://platform.twitter.com/embed/Tweet.html?id=1650416869927534592"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1650416869927534592-845');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1650416869927534592&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The core feature of the Grafbase platform is the &lt;a href="https://grafbase.com/edge-gateway" rel="noopener noreferrer"&gt;Edge Gateway&lt;/a&gt;, a programmable realtime GraphQL API deployed to the edge.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>graphql</category>
    </item>
    <item>
      <title>Grafbase March 2023 Update</title>
      <dc:creator>Heather Thacker</dc:creator>
      <pubDate>Mon, 03 Apr 2023 11:30:43 +0000</pubDate>
      <link>https://forem.com/grafbase/whats-new-with-grafbase-511i</link>
      <guid>https://forem.com/grafbase/whats-new-with-grafbase-511i</guid>
      <description>&lt;p&gt;Hey!&lt;/p&gt;

&lt;p&gt;We are thrilled to share with you all of the latest product updates, resources, and a preview of what we’re working on next. &lt;/p&gt;

&lt;p&gt;Let’s get right into it…&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Updates
&lt;/h3&gt;

&lt;p&gt;March has been an exciting month packed with feature updates, new resources, and preparing for Launch Week in a couple weeks!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uhGHt3kl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/og/houdini.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uhGHt3kl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/og/houdini.png" alt="Houdini GraphQL" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/changelog/graphql-live-queries-with-houdini"&gt;GraphQL Live Queries with Houdini&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build realtime applications faster than ever using GraphQL Live Queries and Houdini GraphQL. Houdini’s Live Queries plugin was the topic of March’s Twitter Space where maintainers Alec and Jean-Yves talked about the process of adding support for Live Queries and what’s ahead for Houdini GraphQL with React.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ubXLM1kJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/changelog/pipedream-integration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ubXLM1kJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/changelog/pipedream-integration.png" alt="Pipedream Integration" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/changelog/pipedream-integration"&gt;Pipedream Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build and run event-driven workflows using the Grafbase API. Use thousands of triggers and actions across thousands of apps. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JcV87AwB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/changelog/project-usage.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JcV87AwB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://grafbase.com/images/changelog/project-usage.png" alt="Project Usage" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/changelog/project-usage"&gt;Project Usage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Track usage in the dashboard by viewing metrics around API requests and database units with read, write, and storage. Track these metrics in real-time, and by projects that belong to organizations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource Updates
&lt;/h3&gt;

&lt;p&gt;There were lots of existing updates to the resources helping you build with Grafbase, including videos, guides, and documentation improvements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/guides/getting-started-with-sveltekit-houdini-and-grafbase"&gt;&lt;strong&gt;[Guide]: Getting started with SvelteKit, Houdini and Grafbase&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setup a SvelteKit application with Houdini GraphQL to automatically add types for fragments, mutations, or queries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/guides/working-with-sveltekit-houdini-and-graphql-live-queries"&gt;&lt;strong&gt;[Guide]: Working with SvelteKit, Houdini and GraphQL Live Queries&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn how to add Live Queries with the Houdini GraphQL library in a SvelteKit application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/guides/working-with-apollo-client-relay-style-pagination"&gt;&lt;strong&gt;[Guide]: Working with Apollo Client and Relay style pagination&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grafbase exposes a Relay-style pagination API that can be used with other client libraries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/guides/working-cross-platform-with-kotlin-and-graphql"&gt;&lt;strong&gt;[Guide]: Working cross-platform with Kotlin, GraphQL, and Grafbase&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Kotlin as a cross-platform layer when building native applications for web, mobile, and desktop.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/guides/using-auth0-as-your-identity-provider-with-grafbase"&gt;&lt;strong&gt;[Guide]: Using Auth0 as your Identity Provider with Grafbase&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add Auth0 to a frontend application for adaptable authentication and authorization patterns, with Grafbase Identity Provider for requests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafbase.com/docs/quickstart/get-started"&gt;&lt;strong&gt;[Docs]: Embedded videos to Quickstart documentation&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ve added videos to follow along with our Quickstart guide!&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;We’re working on lots of new features, including search, data explorer, CLI deploys, edge caching, resolvers, owner-based auth, and an OpenAPI connector. &lt;/p&gt;

&lt;p&gt;Launch week is April 17 - 21, be on the look out for public beta announcements in April!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fOwgG1u2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05gpr6n2xe2kavi4f0q4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fOwgG1u2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05gpr6n2xe2kavi4f0q4.png" alt="Launch Week" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/grafbase/status/1640439800338456586"&gt;Check out the announcement on Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PS. If you like what we’re building we’d love to hear more about what you think. Join us on &lt;a href="https://discord.gg/grafbase"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/grafbase"&gt;Twitter&lt;/a&gt;, &lt;a href="https://youtube.com/@grafbase"&gt;YouTube&lt;/a&gt;, and &lt;a href="http://github.com/grafbase"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>api</category>
      <category>database</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Grafbase January 2023 Update</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Thu, 02 Feb 2023 14:06:25 +0000</pubDate>
      <link>https://forem.com/grafbase/grafbase-january-2023-update-58g4</link>
      <guid>https://forem.com/grafbase/grafbase-january-2023-update-58g4</guid>
      <description>&lt;p&gt;Hey &lt;strong&gt;Dev.to&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;We are thrilled to share with you all of the latest product updates, resources, and a preview of what we’re working on next. &lt;/p&gt;

&lt;p&gt;Let’s get right to it…&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Updates
&lt;/h3&gt;

&lt;p&gt;January has been an exciting month packed with lots of feature updates. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/blog/simplify-building-realtime-applications-with-graphql-live-queries" rel="noopener noreferrer"&gt;Live Queries&lt;/a&gt;&lt;/strong&gt;
Grafbase becomes the first hosted GraphQL platform to provide Live Queries. GraphQL Live Queries enable developers to build and deploy realtime apps with ease.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/roadmap" rel="noopener noreferrer"&gt;Product Roadmap&lt;/a&gt;&lt;/strong&gt;
Since launching the private beta last year, users have been asking about the future of Grafbase product roadmap. We’re super excited to share the public roadmap that you can follow, and even upvote features to be worked on first!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/examples" rel="noopener noreferrer"&gt;Examples Directory&lt;/a&gt;&lt;/strong&gt;
With new examples being created every week we have made it even easier to find the example you’re looking for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/guides" rel="noopener noreferrer"&gt;Guides Directory&lt;/a&gt;&lt;/strong&gt;
Learn how to build the next generation of web and mobile apps with new guides added every week!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can see what’s new even quicker by following us on &lt;a href="https://twitter.com/grafbase" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, browsing the &lt;a href="https://grafbase.com/changelog" rel="noopener noreferrer"&gt;changelog&lt;/a&gt;, or joining our &lt;a href="https://discord.com/invite/grafbase" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource Updates
&lt;/h3&gt;

&lt;p&gt;Also in January, there were lots of new documentation, guides, videos, tutorials, and code examples. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=YsFwI7H1iWM" rel="noopener noreferrer"&gt;[VIDEO]: Serverless GraphQL API with Grafbase by Simon Grimm&lt;/a&gt;&lt;/strong&gt;
Learn how to build a mobile application from scratch using Ionic with popular YouTuber Simon Grimm.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/grafbase/playground/tree/main/packages/grafbase-urql-exchange" rel="noopener noreferrer"&gt;[PLUGIN]: URQL Exchange for Live Queries&lt;/a&gt;&lt;/strong&gt;
To celebrate the launch of Live Queries we made it even easier so developers don’t need to mess around configuring SSE. Install the custom URQL exchange and go!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/grafbase/playground/tree/main/packages/grafbase-apollo-link" rel="noopener noreferrer"&gt;[PLUGIN]: Apollo Link for Live Queries&lt;/a&gt;&lt;/strong&gt;
We also made it easier for developers using Apollo Client to get going with Live Queries. Add the custom Apollo Link by Grafbase and go!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/grafbase/grafbase/tree/main/examples/qwik" rel="noopener noreferrer"&gt;[EXAMPLE]: Qwik + Qwik City&lt;/a&gt;&lt;/strong&gt;
Everyone is talking about how “Qwik” this new framework is so Heather created an example to show how you can fetch data with GraphQL with Qwik City.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/guides/build-your-own-low-code-graphql-admin-ui-with-retool" rel="noopener noreferrer"&gt;[GUIDE]: Build your own low-code GraphQL Admin UI with Retool&lt;/a&gt;&lt;/strong&gt;
In this guide, Jamie shows how you can build your own Admin UI to manage Grafbase content using Retool.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grafbase.com/guides/working-with-eleventy-and-graphql" rel="noopener noreferrer"&gt;[GUIDE]: Working with Eleventy and GraphQL&lt;/a&gt;&lt;/strong&gt;
In this guide, Jamie shows how you can use the popular Static Site Generator Eleventy with GraphQL to fetch data from Grafbase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dropjs.com/Building-GraphQL-Backends-with-SDL?notify-me" rel="noopener noreferrer"&gt;[WORKSHOP]: Building GraphQL Backends with SDL&lt;/a&gt;&lt;/strong&gt;
In this weekly JS Drop by This Dot Labs, Jamie releases a video on you build a GraphQL backend with Grafbase using SDL.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What’s next?
&lt;/h3&gt;

&lt;p&gt;We’re working on lots of new features, including a new directive that lets you write your own resolvers, as well as CLI deploys, data explorer, and much more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That’s it for January!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PS. If you like what we’re building we’d love to hear more about what you think. Join us on &lt;a href="https://discord.gg/grafbase" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, &lt;a href="https://twitter.com/grafbase" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://youtube.com/@grafbase" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;, and &lt;a href="https://github.com/grafbase" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>backend</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build realtime GraphQL backends with Grafbase</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Mon, 16 Jan 2023 16:01:35 +0000</pubDate>
      <link>https://forem.com/grafbase/build-realtime-graphql-backends-with-grafbase-3bpl</link>
      <guid>https://forem.com/grafbase/build-realtime-graphql-backends-with-grafbase-3bpl</guid>
      <description>&lt;p&gt;There are developers who don't want the hassle of building a backend, managing deployments, configuring continuous integration, juggling connection pooling, and more. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafbase.com" rel="noopener noreferrer"&gt;Grafbase&lt;/a&gt; was built to manage all of the above. You get a distributed GraphQL API at the edge by creating a single &lt;code&gt;grafbase/schema.graphql&lt;/code&gt; file in your project.&lt;/p&gt;

&lt;p&gt;Your schema contains models with special directives to relate data, set default values, validation, and more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="c"&gt;# grafbase/schema.graphql&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;unique&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In 2021, &lt;a href="https://twitter.com/n1rual" rel="noopener noreferrer"&gt;Laurin Quast&lt;/a&gt; introduced a collection of packages to support the use of GraphQL Live Queries on the server and client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Today, Grafbase is happy to announce it now supports GraphQL Live Queries!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means that all you need to do to start using GraphQL Live Queries is add &lt;code&gt;@live&lt;/code&gt; to your query!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;@live&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;postCollection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;edges&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;@live&lt;/code&gt; directive will observe any changes to the data and send a message using &lt;a href="https://grafbase.com/docs/realtime/live-queries#server-sent-events" rel="noopener noreferrer"&gt;Server-Sent Events&lt;/a&gt; with the patch to update the current query state.&lt;/p&gt;

&lt;p&gt;The event is in the format of &lt;a href="https://grafbase.com/docs/realtime/live-queries#json-patch" rel="noopener noreferrer"&gt;JSON Patch&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"patch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"op"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"add"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/postCollection/edges/3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"post_01GJMDWJ2M6WWTM26S7C1KKYBE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Instant serverless GraphQL backends"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"revision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Together with &lt;a href="https://the-guild.dev/" rel="noopener noreferrer"&gt;The Guild&lt;/a&gt;, Grafbase is also releasing 2 new packages (with more on the way) to further abstract the effort needed to implement Live Queries on the frontend.&lt;/p&gt;

&lt;p&gt;Starting with support for &lt;a href="https://www.apollographql.com/docs/react/" rel="noopener noreferrer"&gt;Apollo Client&lt;/a&gt; and &lt;a href="https://formidable.com/open-source/urql/" rel="noopener noreferrer"&gt;URQL&lt;/a&gt;, you can add Live Queries with the following packages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@grafbase/apollo-link" rel="noopener noreferrer"&gt;&lt;code&gt;@grafbase/apollo-link&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@grafbase/urql-exchange" rel="noopener noreferrer"&gt;&lt;code&gt;@grafbase/urql-exchange&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/EaMt6ch80WI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/N2dCu02SJoE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Developers not using either of those libraries can still use Live Queries with the native &lt;a href="https://grafbase.com/docs/realtime/live-queries#eventsource" rel="noopener noreferrer"&gt;&lt;code&gt;EventSource&lt;/code&gt;&lt;/a&gt; API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Now!
&lt;/h2&gt;

&lt;p&gt;You can try Live Queries by building your own backend in one simple command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx grafbase init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've modelled your data using the &lt;a href="https://grafbase.com/docs/schema/overview" rel="noopener noreferrer"&gt;schema&lt;/a&gt; you can run your backend locally to build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx grafbase dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>realtime</category>
      <category>database</category>
    </item>
    <item>
      <title>This Week @ Grafbase - Dec 9</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Fri, 09 Dec 2022 13:18:26 +0000</pubDate>
      <link>https://forem.com/grafbase/this-week-grafbase-dec-9-54jc</link>
      <guid>https://forem.com/grafbase/this-week-grafbase-dec-9-54jc</guid>
      <description>&lt;p&gt;Happy Friday 🥳&lt;/p&gt;

&lt;p&gt;It’s been a few weeks since our last update about what’s going on at &lt;a href="https://grafbase.com" rel="noopener noreferrer"&gt;Grafbase&lt;/a&gt;, and for good reason...&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s new?
&lt;/h2&gt;

&lt;p&gt;🎮 &lt;strong&gt;Dashboard tweaks&lt;/strong&gt;&lt;br&gt;
We’ve made some significant changes to our Dashboard UI. You should start to see updates rolling out every few days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finbsoafrs23samluwu2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finbsoafrs23samluwu2h.png" alt="Grafbase Project Card" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;Bulk Environment Variables&lt;/strong&gt;&lt;br&gt;
We've made it even easier to add environment variables. Check it out! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhunzrry29kxno1wb1b8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhunzrry29kxno1wb1b8.png" alt="Environment variables UI" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛰️ &lt;strong&gt;GraphQL Galaxy&lt;/strong&gt;&lt;br&gt;
Grafbase Founder &amp;amp; CEO Fredrik Björk spoke at GraphQL Galaxy with other industry experts on the future of server-side GraphQL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe00q64jri43lk50c3nam.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe00q64jri43lk50c3nam.jpeg" alt="GraphQL Galaxy Panel" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📢 &lt;strong&gt;Base64 cursors&lt;/strong&gt;&lt;br&gt;
Collection queries returning edges will now return a base64 encoded &lt;code&gt;cursor&lt;/code&gt; value you can use with the &lt;code&gt;before&lt;/code&gt;/&lt;code&gt;after&lt;/code&gt; pagination arguments. &lt;a href="https://grafbase.com/docs/reference/pagination" rel="noopener noreferrer"&gt;Learn more about pagination&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🧰 &lt;strong&gt;New home for examples&lt;/strong&gt;&lt;br&gt;
There's a &lt;a href="https://github.com/grafbase/examples/" rel="noopener noreferrer"&gt;new GitHub repo&lt;/a&gt; for all examples! Go check it out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;⚡️ &lt;strong&gt;Live Queries&lt;/strong&gt;&lt;br&gt;
We’re putting the final touches on our realtime GraphQL support. Next week we will introduce this officially. For those keen enough, you can try it out today if you dig around the documentation 😉.&lt;/p&gt;

&lt;p&gt;🔢 &lt;strong&gt;Improved numeric operations&lt;/strong&gt;&lt;br&gt;
We’ve made it easier to increment and decrement numeric fields. This change is live in production now but coming to CLI support next week with an official changelog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GraphQL Galaxy Workshop&lt;/strong&gt;&lt;br&gt;
In this workshop, we'll cover the basics of GraphQL, and then use that knowledge to build a backend using SDL. Once we've created our schema, we'll run it locally, deploy to production, and create deployment branches for any changes to our schema. We'll finish the workshop by fetching data from our backend from the frontend, as well as adding authentication to lock down data access!&lt;br&gt;
&lt;a href="https://graphqlgalaxy.com/workshops-3h" rel="noopener noreferrer"&gt;https://graphqlgalaxy.com/workshops-3h&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next week we will introduce some significant changes, including Live Queries, Numeric operations, Improved Documentation, and lots more!&lt;/p&gt;




&lt;p&gt;We love to hear from our users what we can be doing better. No matter how small you might think it is, we want to hear from you!&lt;/p&gt;

&lt;p&gt;Make sure to click &lt;strong&gt;Feedback&lt;/strong&gt; once logged in and share your thoughts. &lt;strong&gt;We read them all!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy02jeblz7znfkvm3qx81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy02jeblz7znfkvm3qx81.png" alt="Feedback form" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have a great weekend! 💚&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>api</category>
    </item>
    <item>
      <title>This Week @ Grafbase - Nov 25</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Fri, 25 Nov 2022 10:51:57 +0000</pubDate>
      <link>https://forem.com/grafbase/this-week-grafbase-nov-25-149i</link>
      <guid>https://forem.com/grafbase/this-week-grafbase-nov-25-149i</guid>
      <description>&lt;p&gt;Happy Friday 🥳&lt;/p&gt;

&lt;p&gt;These posts provide a summary of everything we've been working on this week at Grafbase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's new?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔑 &lt;strong&gt;JWT Provider&lt;/strong&gt;&lt;br&gt;
Today we announced the release of a new auth provider strategy that lets you set a &lt;code&gt;secret&lt;/code&gt; to verify JWTs as part of your authorisation strategy.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/jwt-authorization-provider-added" rel="noopener noreferrer"&gt;https://grafbase.com/changelog/jwt-authorization-provider-added&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfxky5va3lmdcs8s8s08.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwfxky5va3lmdcs8s8s08.png" alt="JWT Provider" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚒️ &lt;strong&gt;New examples!&lt;/strong&gt;&lt;br&gt;
We've 3 new examples - &lt;a href="https://github.com/grafbase/grafbase/tree/main/examples/fresh" rel="noopener noreferrer"&gt;Fresh&lt;/a&gt;, &lt;a href="https://github.com/grafbase/grafbase/tree/main/examples/solid-start" rel="noopener noreferrer"&gt;SolidStart&lt;/a&gt;, and &lt;a href="https://github.com/grafbase/grafbase/tree/main/examples/nextauthjs-credentials" rel="noopener noreferrer"&gt;NextAuth.js Credentials&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;📚 &lt;strong&gt;New guides!&lt;/strong&gt;&lt;br&gt;
We have got some new guides! &lt;a href="https://grafbase.com/guides/working-with-typescript-and-apollo-client" rel="noopener noreferrer"&gt;Working with TypeScript, React, and Apollo Client&lt;/a&gt;, &lt;a href="https://grafbase.com/guides/username-and-password-authentication-with-next-auth" rel="noopener noreferrer"&gt;Username and Password authentication with NextAuth.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;💚 &lt;strong&gt;NuxtNation&lt;/strong&gt;&lt;br&gt;
The NuxtNation conference was last week and you can replay &lt;br&gt;
&lt;a href="https://vi.to/hubs/nuxtnation" rel="noopener noreferrer"&gt;https://vi.to/hubs/nuxtnation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also have a small competition for those who joined NuxtNation. So make sure to checkout the swag link in the email if you attended.&lt;/p&gt;

&lt;p&gt;🔥 &lt;strong&gt;Cloudflare&lt;/strong&gt;&lt;br&gt;
We’re excited to continue building Grafbase for scale with Workers by joining the Cloudflare Workers Launchpad!&lt;br&gt;
&lt;a href="https://blog.cloudflare.com/launchpad-fall-22/" rel="noopener noreferrer"&gt;https://blog.cloudflare.com/launchpad-fall-22/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hqzxwtburvk74wz9ui4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hqzxwtburvk74wz9ui4.png" alt="Cloudflare Workers Launchpad cohort" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;⚡️ &lt;strong&gt;Live Queries&lt;/strong&gt;&lt;br&gt;
General availability for Live Queries is coming very soon! If you'd like early access, please let us know.&lt;/p&gt;

&lt;p&gt;🏎️ &lt;strong&gt;Performance&lt;/strong&gt;&lt;br&gt;
We're working on improving the already fast deployment, and API response times.&lt;/p&gt;

&lt;p&gt;🎮 &lt;strong&gt;Dashboard Updates&lt;/strong&gt;&lt;br&gt;
You should start to see some improvements to the Dashboard soon.&lt;/p&gt;

&lt;p&gt;Stay tuned 👀&lt;/p&gt;

&lt;p&gt;Have a great weekend! 👋&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>api</category>
    </item>
    <item>
      <title>This Week @ Grafbase - Nov 11</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Fri, 11 Nov 2022 16:54:07 +0000</pubDate>
      <link>https://forem.com/grafbase/this-week-grafbase-nov-11-45h6</link>
      <guid>https://forem.com/grafbase/this-week-grafbase-nov-11-45h6</guid>
      <description>&lt;p&gt;Happy Friday 🥳&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Week @ Grafbase&lt;/strong&gt; has been all about product, conferences, and realtime!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's new?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhwd23qvuvq4d1q9tqvx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdhwd23qvuvq4d1q9tqvx.png" alt="Grafbase.com" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💅 &lt;strong&gt;New homepage!!&lt;/strong&gt;&lt;br&gt;
We wanted to share with everyone what we're building. The homepage shares more about we've created already as well as what's coming next. Check it out and let us know of any feedback.&lt;br&gt;
&lt;a href="https://grafbase.com" rel="noopener noreferrer"&gt;https://grafbase.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📆 &lt;strong&gt;Date scalar added&lt;/strong&gt;&lt;br&gt;
You can now use the &lt;code&gt;Date&lt;/code&gt; scalar for fields in your models.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/date-scalar-added" rel="noopener noreferrer"&gt;https://grafbase.com/changelog/date-scalar-added&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔢 &lt;strong&gt;&lt;code&gt;@length&lt;/code&gt; directive added&lt;/strong&gt;&lt;br&gt;
You can now set min and max values for the length of a field value or list.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/length-directive-added" rel="noopener noreferrer"&gt;https://grafbase.com/changelog/length-directive-added&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔐 &lt;strong&gt;Model-level authorization rules&lt;/strong&gt;&lt;br&gt;
You can now override the global &lt;code&gt;@auth&lt;/code&gt; rules for each &lt;code&gt;@model&lt;/code&gt; in your schema.&lt;br&gt;
&lt;a href="https://grafbase.com/docs/reference/directives#model-level-authorization-rules" rel="noopener noreferrer"&gt;https://grafbase.com/docs/reference/directives#model-level-authorization-rules&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🗝️ &lt;strong&gt;Auth groups claim configuration&lt;/strong&gt;&lt;br&gt;
You can now set the &lt;code&gt;groupsClaim&lt;/code&gt; for group-based auth to use a custom claim different from the default groups claim.&lt;br&gt;
&lt;a href="https://grafbase.com/docs/reference/directives#operations" rel="noopener noreferrer"&gt;https://grafbase.com/docs/reference/directives#operations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌉 &lt;strong&gt;Jamstack Conf&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This week was all about Jamstack Conf! It was a blast to meet the community and see people IRL once again!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0lzahet9qcpdhboyl3v.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0lzahet9qcpdhboyl3v.jpeg" alt="Jamie and Colby" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Be sure to check &lt;a href="https://jamstack.org/conf/" rel="noopener noreferrer"&gt;jamstack.org/conf&lt;/a&gt; to watch all of the the talks when they're published!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;💚 NuxtNation is happening!&lt;br&gt;
This event happens November 16 &amp;amp; 17, online!&lt;br&gt;
&lt;a href="https://nuxtnation.com/" rel="noopener noreferrer"&gt;https://nuxtnation.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💗 We’re close to releasing the initial version of &lt;code&gt;@live&lt;/code&gt; queries! We should have something to show you very, very soon!&lt;br&gt;
&lt;a href="https://grafbase.com/changelog" rel="noopener noreferrer"&gt;Subscribe to the changelog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More exciting updates coming next week!&lt;/p&gt;

&lt;p&gt;Have a great weekend 👋&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>webdev</category>
      <category>news</category>
      <category>javascript</category>
    </item>
    <item>
      <title>This Week @ Grafbase - Nov 4</title>
      <dc:creator>Jamie Barton</dc:creator>
      <pubDate>Fri, 04 Nov 2022 10:10:00 +0000</pubDate>
      <link>https://forem.com/grafbase/this-week-grafbase-1nkp</link>
      <guid>https://forem.com/grafbase/this-week-grafbase-1nkp</guid>
      <description>&lt;p&gt;Happy Friday 🥳&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Week @ Grafbase&lt;/strong&gt; has been all about product and documentation!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's new?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;Docs Quickstart&lt;/strong&gt;&lt;br&gt;
There is now a Quickstart that you can follow to get up to speed with Grafbase in a few short steps.&lt;br&gt;
&lt;a href="https://grafbase.com/docs/quickstart/get-started"&gt;https://grafbase.com/docs/quickstart/get-started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;Update and Delete by unique fields&lt;/strong&gt;&lt;br&gt;
You can now update and delete data by &lt;code&gt;id&lt;/code&gt; and any &lt;code&gt;@unique&lt;/code&gt; field.&lt;br&gt;
&lt;a href="https://grafbase.com/changelog/update-and-delete-by-unique"&gt;https://grafbase.com/changelog/update-and-delete-by-unique&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/laY8fQUTVi4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;▲ &lt;strong&gt;Next.js conf&lt;/strong&gt;&lt;br&gt;
We recently sponsored Next.js conf and have a free workshop you can join happening later this month — &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScv01U8yk8H_xYfc12IF8fiOt9hFcaQmI2kaqIAa_eSEowzHw/viewform"&gt;more info&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📈 &lt;strong&gt;Funding announcement&lt;/strong&gt;&lt;br&gt;
You may have already seen but we announced a $7.3m raise to build the data platform of the future.&lt;br&gt;
&lt;a href="https://grafbase.com/blog/announcing-7-3m-funding"&gt;https://grafbase.com/blog/announcing-7-3m-funding&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🫐 We're attending and sponsoring &lt;a href="https://jamstack.org/conf/"&gt;Jamstack Conf&lt;/a&gt;. There's still tickets available for any last minute attendees. Get 40% off your ticket with code: &lt;code&gt;GRAFBASE40&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://jamstack.org/conf"&gt;https://jamstack.org/conf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💚 We're also sponsoring Nuxt Nation! This event happens November 16 &amp;amp; 17, online!&lt;br&gt;
&lt;a href="https://nuxtnation.com/"&gt;https://nuxtnation.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔓 We're working on more Data Validation topics and investigating how to properly implement migrations, resolvers, and more. &lt;a href="https://discord.gg/grafbase"&gt;Join the community on Discord&lt;/a&gt; to have your say on how we should build the data platform for the future!&lt;/p&gt;

&lt;p&gt;More exciting updates coming next week!&lt;/p&gt;

&lt;p&gt;Have a great weekend 👋&lt;/p&gt;

</description>
      <category>grafbase</category>
      <category>graphql</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Grafbase: Instant serverless GraphQL backends</title>
      <dc:creator>Fredrik Björk</dc:creator>
      <pubDate>Thu, 28 Jul 2022 12:15:00 +0000</pubDate>
      <link>https://forem.com/grafbase/grafbase-instant-serverless-graphql-backends-3j2k</link>
      <guid>https://forem.com/grafbase/grafbase-instant-serverless-graphql-backends-3j2k</guid>
      <description>&lt;p&gt;As a developer, you are faced with many decisions before your backend is ready for use. What API framework do you use? What database? Where do you deploy your API? Where do you deploy your database? Authorization? What about full-text search? And message queue? We haven't even talked about local development or CI/CD yet. The time to market from idea to production is much longer than it has to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We can do better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We are very excited to announce &lt;strong&gt;Grafbase&lt;/strong&gt;, an edge-native data platform for developers. Our mission is to dramatically simplify and accelerate the development of GraphQL backends.&lt;/p&gt;

&lt;p&gt;Grafbase combines GraphQL, Serverless, and Edge Computing to provide a seamless developer experience for shipping backends. Go from idea to serverless GraphQL backend in seconds without spending time on infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Run the following command in a new directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx grafbase init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then populate &lt;code&gt;grafbase/schema.graphql&lt;/code&gt; with this schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Todo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;ID&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start your local development environment run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx grafbase dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can interact with your GraphQL API using the Playground, which runs on &lt;a href="http://localhost:4000"&gt;http://localhost:4000&lt;/a&gt; by default.&lt;/p&gt;

&lt;p&gt;Create a new Todo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;mutation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;todoCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello, world!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;todo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;complete&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations! You have just built your first Todo GraphQL backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  GraphQL
&lt;/h2&gt;

&lt;p&gt;Frontend and mobile developers love GraphQL. However, building a performant and flexible GraphQL backend can be difficult and time-consuming.&lt;/p&gt;

&lt;p&gt;There have been attempts at modernizing GraphQL backend development by building an interface on top of traditional databases. However, this approach involves complex infrastructure, which is asking too much from the developer and takes away from valuable time that could be spent shipping their product.&lt;/p&gt;

&lt;p&gt;Grafbase lets you design your GraphQL backend using a declarative approach and watch it come to life in a matter of seconds.&lt;/p&gt;

&lt;p&gt;Use powerful GraphQL directives to define models, permissions, caching, validation, and more.&lt;/p&gt;

&lt;p&gt;Grafbase will vastly reduce your time to market.&lt;/p&gt;

&lt;p&gt;Another benefit of using GraphQL is that you can use any GraphQL client or SDK that you already know.&lt;/p&gt;

&lt;p&gt;Your architecture is also vastly simplified since you no longer need to deploy a proxy in front of your traditional database or deal with connection pooling since your backend is served from a GraphQL endpoint via HTTP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Livin' on the Edge
&lt;/h2&gt;

&lt;p&gt;Jamstack websites are globally fast thanks to pre-rendered content delivered by CDNs. However, dynamic content is predominantly served from APIs deployed to a single region, resulting in suboptimal response times everywhere else.&lt;/p&gt;

&lt;p&gt;The Grafbase platform runs on a global edge network to achieve fast response times globally.&lt;/p&gt;

&lt;p&gt;To further improve performance, we are planning to offer edge caching for all GraphQL APIs deployed to Grafbase.&lt;/p&gt;

&lt;p&gt;GraphQL APIs deployed to Grafbase run on V8 isolates, which means no cold starts. V8 isolates give you the freedom to build your backend using JavaScript or any language that compiles to WebAssembly.&lt;/p&gt;

&lt;h2&gt;
  
  
  WebAssembly
&lt;/h2&gt;

&lt;p&gt;WebAssembly (Wasm) offers near-native performance with a sandboxed security model and is portable - making it a perfect technology for hosting a GraphQL API at the edge.&lt;/p&gt;

&lt;p&gt;Thanks to Wasm and its security model, we allow developers to write business logic in the form of GraphQL resolvers in their language of choice.&lt;/p&gt;

&lt;p&gt;Are you an iOS developer and want to code in Swift? An Android developer who loves Kotlin? A Jamstack developer that prefers Deno? The promise of portability is finally here thanks to server-side Wasm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jamstack
&lt;/h2&gt;

&lt;p&gt;The Jamstack has removed multiple moving parts and systems to make websites easy to deploy with fast page load times thanks to pre-rendered content delivered by CDNs. In addition, the abstraction layer that the Jamstack and CDNs have provided makes it much easier to ship a static website. But when your application requires dynamic functionality beyond a static page and you need a backend - creating that backend is still not as simple as it should be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battle-Tested
&lt;/h2&gt;

&lt;p&gt;Grafbase stands on the shoulders of giants like Cloudflare and AWS to ensure our infrastructure is reliable, performant, and predictable. This lets us focus our energy on building the best developer experience for building and deploying GraphQL backends that scale from startups to enterprises.&lt;/p&gt;

&lt;p&gt;The Grafbase platform is built with Rust and runs on rock-solid serverless infrastructure like Cloudflare Workers and DynamoDB. This enables us to offer incredible P99 performance guarantees from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless
&lt;/h2&gt;

&lt;p&gt;On-demand infrastructure and usage-based pricing are the future. However, the tooling and developer experience to adopt serverless is still in the dark ages.&lt;/p&gt;

&lt;p&gt;Cloud services like Cloudflare Workers and AWS DynamoDB are very powerful, but the DX is lacking. Grafbase aims to change that by building higher-level abstractions with a developer-first mindset.&lt;/p&gt;

&lt;p&gt;Projects deployed to Grafbase come with a globally replicated serverless database seamlessly integrated into every GraphQL API.&lt;/p&gt;

&lt;p&gt;Grafbase will offer usage-based pricing that scales to zero. This means you can have hundreds of preview environments for your backend at very low cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local Development
&lt;/h2&gt;

&lt;p&gt;We're building Grafbase with a developer-first mindset to remove friction and make backend development seamless.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx grafbase dev&lt;/code&gt; gives you a zero config local environment that simulates production.&lt;/p&gt;

&lt;p&gt;The local development environment hot reloads when detecting changes to files in the &lt;code&gt;grafbase&lt;/code&gt; directory for fast iteration of your GraphQL API.&lt;/p&gt;

&lt;p&gt;The Grafbase CLI is written in Rust and open-sourced on &lt;a href="https://github.com/grafbase/grafbase/tree/main/cli"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Branching
&lt;/h2&gt;

&lt;p&gt;Grafbase is deeply integrated with GitHub to provide a modern Git-based workflow for backend development.&lt;/p&gt;

&lt;p&gt;Branches are instantly provisioned on serverless infrastructure with production parity.&lt;/p&gt;

&lt;p&gt;Deployments take 3 seconds from Git push to live, which enables blazing fast iteration of your backend in isolation before deploying to production.&lt;/p&gt;

&lt;p&gt;If you use Vercel or Netlify today, you're already used to this workflow. We were inspired by this approach and offer similar functionality at Grafbase, but geared towards backend development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Over the coming months, we will be working closely with the community to make Grafbase the best platform to build and deploy instant serverless GraphQL backends.&lt;/p&gt;

&lt;p&gt;Grafbase is currently in private beta. Sign up for the Private Beta &lt;a href="https://grafbase.com/join-the-waitlist"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Read our &lt;a href="https://grafbase.com/docs"&gt;Documentation&lt;/a&gt;. Check out the &lt;a href="https://grafbase.com/changelog"&gt;Changelog&lt;/a&gt;. Follow us on &lt;a href="https://twitter.com/grafbase"&gt;Twitter&lt;/a&gt; and &lt;a href="https://github.com/grafbase"&gt;GitHub&lt;/a&gt;. Join our &lt;a href="https://grafbase.com/community"&gt;Community&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>serverless</category>
      <category>grafbase</category>
      <category>webassembly</category>
    </item>
  </channel>
</rss>
