<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?tags=graphql" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Sun, 19 Apr 2026 12:36:21 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogql-storybook-and-mocked-service</guid>
    <title>BlogQL: Storybook and Mocked Service Workers</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogql-storybook-and-mocked-service</link>
    <pubDate>Sat, 8 Apr 2023 20:43:51 +0000</pubDate>
    <category>Web Development</category>
    <category>graphql</category>
    <category>node</category>
    <category>react</category>
    <category>typescript</category>
<description>&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;One of the most interesting new technologies I learned about during the development of BlogQL is Storybook. Storybook allows you to develop and test React, Angular, and other web components in isolation.&amp;nbsp;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;Once you create stories for your components, and thanks to Chromatic, you can setup GitHub Actions to check each incoming Pull Request for changes to your UI, a visual diff! You can require that a developer approve each change. I found that all pretty compelling and started to develop stories for all of my React components.&amp;nbsp;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;The hardest part of this work was figuring out how to mock the GraphQL data needed for my components. It was difficult for me because I was still learning WebPack and polyfills in Node.js, but I got it working, in part thanks to&amp;nbsp;his very useful blog post:&amp;nbsp;&lt;a href=&quot;https://davidwcai.medium.com/mock-graphql-and-rest-in-storybook-and-jest-with-msw-78521ec44a9c&quot; target=&quot;_blank&quot;&gt;Mock GraphQL and REST in Storybook and Jest with MSW&lt;/a&gt;. &amp;nbsp;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;You can view the BlogQL Storybook online, thanks to Chromatic:&amp;nbsp;&lt;a href=&quot;https://63b0bf0f112b2d8b80a785f5-flfdjbdgsu.chromatic.com&quot; target=&quot;_blank&quot;&gt;https://63b0bf0f112b2d8b80a785f5-flfdjbdgsu.chromatic.com&lt;/a&gt;.&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;a href=&quot;https://rollerweblogger.org/roller/mediaresource/507fd7cc-03a6-420b-ad24-828ddef3bea2&quot;&gt;&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/507fd7cc-03a6-420b-ad24-828ddef3bea2&quot; width=&quot;500&quot; alt=&quot;Blog QL Storybook&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;This is part of a series of short posts about BlogQL:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogql-google-login</guid>
    <title>BlogQL, Apollo Server and Google Login</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogql-google-login</link>
    <pubDate>Fri, 31 Mar 2023 14:30:00 +0000</pubDate>
    <category>Web Development</category>
    <category>graphql</category>
    <category>nodejs</category>
    <category>opensource</category>
    <category>reactjs</category>
    <category>typescript</category>
<description>&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;The BlogQL server uses Apollo Server to provide a GraphQL API. Initially, I was using Apollo Server standalone, but when I stared integrating Google Login I realized I needed a couple of REST APIs so I added Express&amp;nbsp;&lt;a href=&quot;https://expressjs.com/&quot; rev=&quot;en_rl_none&quot;&gt;https://expressjs.com&lt;/a&gt;&amp;nbsp;for that. On the frontend, I&amp;#39;m using &lt;a href=&quot;https://www.npmjs.com/package/@react-oauth/google&quot; target=&quot;_blank&quot;&gt;React Oauth2&lt;/a&gt;&amp;nbsp;which makes adding Google Login support very easy to implement.&amp;nbsp; This all works fine, but if I were to start over I might consider using a server-side framework like Next.js&amp;nbsp;&lt;a href=&quot;https://nextjs.org/&quot; rev=&quot;en_rl_none&quot;&gt;https://nextjs.org&lt;/a&gt;&amp;nbsp;instead of rolling my own Apollo Server and Express setup.&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This is part of a series of short posts about BlogQL:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogql-create-react-app</guid>
    <title>BlogQL and create-react-app</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogql-create-react-app</link>
    <pubDate>Wed, 29 Mar 2023 17:35:21 +0000</pubDate>
    <category>Web Development</category>
    <category>graphql</category>
    <category>node</category>
    <category>opensource</category>
    <category>react</category>
    <category>typescript</category>
<description>&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;When I first started with &lt;a href=&quot;https://github.com/snoopdave/blogql&quot; target=&quot;_blank&quot;&gt;BlogQL&lt;/a&gt;, I used&amp;nbsp;&lt;a href=&quot;https://create-react-app.dev/&quot; target=&quot;_blank&quot;&gt;create-react-app&lt;/a&gt;&amp;nbsp;(CRA) to generate the code. It worked well and allowed me to focus on learning React, but eventually I found it too constraining. I wanted to learn the underlying technologies of WebPack and Babel and CRA tucks those away. It took some time, but was able to remove CRA and replace it with my own WebPack and Babel setup. &lt;/div&gt;&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div slice=&quot;0 1 []&quot; clipboard=&quot;true&quot;&gt;If I had to start again, I might consider using&amp;nbsp;&lt;a href=&quot;https://vitejs.dev/&quot; target=&quot;_blank&quot;&gt;Vite&lt;/a&gt;, which is growing in popularity as an alternative to WebPack.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This is part of a series of short posts about BlogQL:&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;/div&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogql</guid>
    <title>BlogQL</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogql</link>
    <pubDate>Mon, 27 Mar 2023 16:20:32 +0000</pubDate>
    <category>Web Development</category>
    <category>graphql</category>
    <category>node</category>
    <category>react</category>
    <category>typescript</category>
<description>&lt;div slice=&quot;1 1 []&quot; clipboard=&quot;true&quot;&gt;Last summer, I started a side project to enhance my knowledge of Node, TypeScript, React, GitHub Actions and to dog-food &lt;a href=&quot;https://www.apollographql.com&quot; target=&quot;_blank&quot;&gt;Apollo GraphQL&lt;/a&gt; Studio&amp;#39;s features that I was working on. In the past couple of months, I&amp;#39;ve continued to work on BlogQL and now that the UI is not a total embarrassment, I&amp;#39;m going to share a little about the project.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;BlogQL is a blog app made up of a TypeScript/Node backend that provides a GraphQL API and a TypeScript/React-based frontend with a rich-text editor for editing blog entries. Below is a two-minute demo so you can see the features that BlogQL supports. You can find the complete source for BlogQL on GitHub&amp;nbsp;&lt;a href=&quot;https://github.com/snoopdave/blogql&quot; rev=&quot;en_rl_none&quot;&gt;https://github.com/snoopdave/blogql&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;caret-color:rgba(0, 0, 0, 0.9);color:rgba(0, 0, 0, 0.9);font-family:-apple-system, system-ui, BlinkMacSystemFont, &amp;quot;&quot;&gt;I&amp;#39;ll be following this up with a series of short posts about the technologies I&amp;#39;m using in BlogQL.&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;

</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/blogging-about-roller-6-1</guid>
    <title>Blogging about Roller 6.1</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/blogging-about-roller-6-1</link>
    <pubDate>Wed, 22 Dec 2021 22:53:38 +0000</pubDate>
    <category>Open Source</category>
    <category>blogql</category>
    <category>graphql</category>
    <category>node</category>
    <category>react</category>
    <category>roller</category>
<description>&lt;p&gt;I barely even update this blog, but I do update the software that powers it and I&amp;#39;m happy to still have the help of an awesome team of volunteers who pitch in when they want to and always when needed. Today we released Apache Roller 6.1.0, a release we had been talking about, but that was prompted by the Log4J vulnerability. See the &lt;a href=&quot;https://rollerweblogger.org/project/entry/apache-roller-6-1-0&quot; target=&quot;_blank&quot;&gt;project&amp;#39;s blog&lt;/a&gt; for details.&lt;/p&gt;&lt;p&gt;I&amp;#39;m not the one making the most code changes in Roller now days, but I do help with releases. I&amp;#39;ve been spending my spare cycles hacking on BlogQL, a Node/TypeScript-based blog server with a GraphQL API and a React front-end. It&amp;#39;s really more of an example app to help me understand those technologies, kind of like Roller was. Maybe I&amp;#39;ll write about it someday. That&amp;#39;s all for now.&lt;/p&gt;</description>  </item>
</channel>
</rss>