<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Groveback Blog</title>
    <link>https://groveback.com/blog/</link>
    <description>Short notes from building real apps on Groveback: tips, gotchas and patterns we found along the way.</description>
    <language>en</language>
    <item>
      <title>Why your first query returns nothing: policies are fail-closed</title>
      <link>https://groveback.com/blog/fail-closed-policies/</link>
      <guid>https://groveback.com/blog/fail-closed-policies/</guid>
      <description>A new collection with no policy denies every non-admin caller. Here's why, and the three-line policy that fixes it.</description>
      <pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate>
      <category>policies</category>
      <category>authorization</category>
      <category>gotcha</category>
    </item>
    <item>
      <title>grove dev --seed --persist: fixtures beat a local database</title>
      <link>https://groveback.com/blog/local-loop-seed-persist/</link>
      <guid>https://groveback.com/blog/local-loop-seed-persist/</guid>
      <description>The local backend is in-memory on purpose. One flag pair turns it into a workflow where your schema and test data live in git.</description>
      <pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate>
      <category>cli</category>
      <category>local development</category>
      <category>workflow</category>
    </item>
    <item>
      <title>pre or post? Picking the right timing for a function</title>
      <link>https://groveback.com/blog/pre-vs-post-hooks/</link>
      <guid>https://groveback.com/blog/pre-vs-post-hooks/</guid>
      <description>pre hooks run inside the write and can abort it; post hooks run after and can reach the database. Mixing them up is the classic functions bug.</description>
      <pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate>
      <category>functions</category>
      <category>hooks</category>
      <category>tips</category>
    </item>
  </channel>
</rss>
