<?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>DEV Community: Rakete</title>
    <description>The latest articles on DEV Community by Rakete (@rakete).</description>
    <link>https://dev.to/rakete</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4104813%2F49b8d65b-5fd7-4b60-938c-119a3e42d936.jpg</url>
      <title>DEV Community: Rakete</title>
      <link>https://dev.to/rakete</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rakete"/>
    <language>en</language>
    <item>
      <title>birkly.io is a normal site with a few special needs. Here is what it takes to build it.</title>
      <dc:creator>Rakete</dc:creator>
      <pubDate>Fri, 25 Sep 2026 06:52:46 +0000</pubDate>
      <link>https://dev.to/rakete/birklyio-is-a-normal-site-with-a-few-special-needs-here-is-what-it-takes-to-build-it-5985</link>
      <guid>https://dev.to/rakete/birklyio-is-a-normal-site-with-a-few-special-needs-here-is-what-it-takes-to-build-it-5985</guid>
      <description>&lt;p&gt;birkly.io is not an overcomplicated website. It has a contact form, a waitlist, donations, sponsor slots, and a club for members. What it does have, like most real projects, is its own special needs. Someone can donate any amount between €1 and €5,000, once or every month, appear on a public supporter list, and join the club with the same email. If they cancel a monthly donation, they keep their account. Only the supporter label on their profile changes.&lt;/p&gt;

&lt;p&gt;This post is about why Birkly was built. birkly.io was the first real website made with it, and it proved the point: those special needs can stay part of one normal site.&lt;/p&gt;

&lt;p&gt;On Birkly, that is what happened. The contact messages, waitlist entries, sponsor texts, and club posts are normal content. An automation sends the “you are on the waitlist” email, and another email later invites that group. A second automation updates the supporter label when a payment starts or a monthly donation ends. The club itself can be free, or people can join by donating. Free signup is turned off right now, so joining goes through the donation. Turning it back on does not remove the donation.&lt;/p&gt;

&lt;p&gt;The only paid plugin is Commerce. During early access it costs €29.90 a month, or €24.90 a month if you pay yearly. The listed price next to that offer is €39.90 a month. You also need your own server. Card fees are Stripe’s usual fees.&lt;/p&gt;

&lt;p&gt;An AI assistant can set this up with you. It can create the content, the forms, the emails, the donation, and the club, because those are the same buttons a person uses in the admin. Birkly does not charge extra for the AI. You can connect a free model from OpenRouter, or a paid one if you prefer.&lt;/p&gt;

&lt;p&gt;On other systems, the same special needs are often the part that gets difficult, or impossible, without extra products or custom software. You can still launch something. It is usually a smaller version of the idea, because the tool only sells part of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;Prices below are public prices from September 2026. Yearly prices are used when the company offers them. Dollar prices and euro prices are not the same currency. Card fees are extra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Birkly.&lt;/strong&gt; &lt;br&gt;
Could you build birkly.io with it? &lt;br&gt;
&lt;code&gt;Yes. This is how it is built.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost? &lt;br&gt;
&lt;code&gt;€24.90 a month + hosting.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shopify.&lt;/strong&gt;&lt;br&gt;
Could you build birkly.io with it?&lt;br&gt;
&lt;code&gt;No. Donation options are limited, and it has no community.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost?&lt;br&gt;
&lt;code&gt;About $123 a month, hosting included.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WordPress.&lt;/strong&gt;&lt;br&gt;
Could you build birkly.io with it?&lt;br&gt;
&lt;code&gt;Partly. Needs custom development to connect the plugins.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost?&lt;br&gt;
&lt;code&gt;About $44 a month + custom development + hosting.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strapi.&lt;/strong&gt;&lt;br&gt;
Could you build birkly.io with it?&lt;br&gt;
&lt;code&gt;No. Needs a complete custom build.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost?&lt;br&gt;
&lt;code&gt;Custom development + hosting.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Webflow.&lt;/strong&gt;&lt;br&gt;
Could you build birkly.io with it?&lt;br&gt;
&lt;code&gt;No. It cannot do this donation, and it has no community.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost?&lt;br&gt;
&lt;code&gt;About $139 a month, hosting included.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Squarespace.&lt;/strong&gt;&lt;br&gt;
Could you build birkly.io with it?&lt;br&gt;
&lt;code&gt;No. No supporter list, and no community.&lt;/code&gt;&lt;br&gt;
What would the closest possible solution cost?&lt;br&gt;
&lt;code&gt;About $113 a month, hosting included.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Shopify
&lt;/h2&gt;

&lt;p&gt;Shopify can publish the pages, the contact form, and a waitlist. The Basic plan is $29 a month and includes hosting, automatic emails, and 10,000 emails a month.&lt;/p&gt;

&lt;p&gt;It cannot take the donation the way birkly.io does. A small app, about $5 a month, lets someone type a one-time amount. A monthly donation has to be a fixed price, such as €5 or €15, not “any amount between €1 and €5,000.” Shopify also has no club with posts, comments, and a supporter label. For that you add another product, such as Circle, at $89 a month. Members then have a second login, separate from the shop.&lt;/p&gt;

&lt;p&gt;You can launch a shop, a one-time donation, a few fixed monthly amounts, and a club on another site. That is a real website. It is not the same idea. The total is about $123 a month, hosting included. If you use Stripe instead of Shopify’s own payments, Basic adds an extra 2% fee.&lt;/p&gt;

&lt;p&gt;Shopify’s own assistant, Sidekick, is included. It can help you set up the shop. It cannot add a donation or a club that Shopify does not offer.&lt;/p&gt;

&lt;h2&gt;
  
  
  WordPress
&lt;/h2&gt;

&lt;p&gt;WordPress can end up doing the same things for visitors. It does not do them as one product. You install separate plugins, and someone has to connect them.&lt;/p&gt;

&lt;p&gt;A free form plugin can take contact messages and sponsor enquiries. FluentCRM Pro, at $129 a year, can send the waitlist confirmation and the later invite. GiveWP Pro, at $399 a year, can take a custom donation amount every month through Stripe. BuddyBoss is free and can give members a profile, a feed, and a free registration.&lt;/p&gt;

&lt;p&gt;These plugins do not automatically know about each other. A donation does not, by itself, create a club account, add the supporter label, or keep the account when the monthly donation stops. Someone has to build that link. The public list of supporters, with names and logos, is also something you add. The plugins are about $44 a month, plus the custom development that connects them, plus a server.&lt;/p&gt;

&lt;p&gt;So the site is possible. The hard part is the link between “this person paid” and “this person is a member,” and you have to look after that link when the plugins update.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strapi
&lt;/h2&gt;

&lt;p&gt;Strapi is a content system. It can store pages, sponsor texts, and form entries. It does not include donations, waitlist emails, supporter labels, or a club.&lt;/p&gt;

&lt;p&gt;To get the same website, a developer has to build those parts: the payment page, the emails, the rule that updates a member’s label, and the club with posts and comments. The Strapi license can be free. What you are paying for, in time or in money, is that custom development, plus hosting. A smaller version is Strapi for the pages, plus Circle at $89 a month for the community. Donors and members are still in two different places.&lt;/p&gt;

&lt;h2&gt;
  
  
  Webflow
&lt;/h2&gt;

&lt;p&gt;Webflow can design the pages and the sponsor section. The Premium plan is $25 a month and includes hosting. It cannot take the birkly.io donation: any amount, once or every month, together with a public supporter list. It also has no club. Built-in member accounts, and this kind of monthly payment, have been removed.&lt;/p&gt;

&lt;p&gt;A login tool such as Memberstack, about $25 a month, can hide pages until someone logs in. That is a locked page, not a club with posts and a supporter label. The waitlist emails need another tool, such as Zapier or Make.&lt;/p&gt;

&lt;p&gt;The closest setup is about $139 a month, hosting included. That pays for the site, a login tool, and a separate club. The donation of any amount every month, and the supporter list, are still missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Squarespace
&lt;/h2&gt;

&lt;p&gt;Squarespace includes hosting, the forms, and a donation block on the Basic plan at $16 a month. What it cannot do is the public supporter list with names and logos, or a community. Memberships can be free or paid, and they open pages, courses, and videos. They do not give members a feed, comments, or a supporter label that updates when a donation starts or stops.&lt;/p&gt;

&lt;p&gt;The waitlist needs Squarespace Email, about $8 a month. A real club means a separate product such as Circle, at $89 a month, with its own login. Together that is about $113 a month, hosting included. The donation and the club still do not share one account.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you still want the full idea
&lt;/h2&gt;

&lt;p&gt;On the other systems, you can almost always build the missing parts yourself, inside the CMS or as a separate tool next to it. That work is expensive and slow, and it does not stop when the site goes live. Someone has to keep it working after release.&lt;/p&gt;

&lt;p&gt;An AI that controls the screen can operate those systems too, because it can use the same admin a person sees. That ability costs money, and it also raises the chance of mistakes, opens more security gaps, and can expose private information to the AI provider. What it builds is still custom software, so the cost and the upkeep remain.&lt;/p&gt;

&lt;p&gt;Birkly is the way through this without those compromises. The donation, the emails, and the club are already part of the product, and an assistant uses those same parts instead of building them, or taking over the whole screen to reach them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this example exists
&lt;/h2&gt;

&lt;p&gt;This is not a post against Shopify, WordPress, Strapi, Webflow, or Squarespace. They are capable products, and each one fits the people it was made for.&lt;/p&gt;

&lt;p&gt;birkly.io is not a specially complicated site. It is a normal project with a few advanced needs, which is what most projects turn out to have. It was also the first real website built with Birkly, and building it showed why Birkly exists: so those needs can be met in the product itself.&lt;/p&gt;

&lt;p&gt;Birkly was not made to copy birkly.io. It is meant to stay flexible, simple, and powerful, so a project with its own requirements can be built natively, without giving up part of the idea to match the tool.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>wordpress</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Bring your own AI: the three ways to connect an assistant to a Birkly site</title>
      <dc:creator>Rakete</dc:creator>
      <pubDate>Tue, 15 Sep 2026 09:28:00 +0000</pubDate>
      <link>https://dev.to/rakete/bring-your-own-ai-the-three-ways-to-connect-an-assistant-to-a-birkly-site-41h2</link>
      <guid>https://dev.to/rakete/bring-your-own-ai-the-three-ways-to-connect-an-assistant-to-a-birkly-site-41h2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Quick bit of context first, since this is a small project and there's a decent chance you're reading this without knowing what Birkly even is. Birkly is an open, AI-native content management platform that enables everyone to build, manage and operate digital experiences without vendor lock-in, unnecessary software complexity or dependency-heavy technology stacks. You can read more about it on &lt;a href="https://birkly.io" rel="noopener noreferrer"&gt;https://birkly.io&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's something I like about how Birkly handles AI: it treats an AI connection the same way it treats a person. You give it a role, and that role decides what it can and can't do. There's no looser, separate rulebook for "what an AI is allowed to touch." It goes through the exact same role and permission system a human user does.&lt;/p&gt;

&lt;p&gt;That one choice shapes everything else. There are three different ways to connect an AI to a site: a personal connector, a service agent, and a built in assistant. Each one answers the same underlying question a bit differently, namely which role the AI is actually operating under. But no matter which of the three you use, admins still keep the final say. A site wide switch and a hard denylist sit above all three, all the time, and neither can be talked around.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways to assign that role
&lt;/h2&gt;

&lt;p&gt;Which role an AI connection ends up with, and where that role comes from, depends on which method you pick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Personal connector: the AI acts as whoever's logged in&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the default option. Under Settings → AI there's a single MCP URL for the whole site. You paste that into whatever AI client you're using, Claude, ChatGPT, Cursor, anything that speaks MCP, sign in with your Birkly account, and approve a consent screen that spells out exactly which role you're handing over.&lt;/p&gt;

&lt;p&gt;From then on the AI simply has that account's permissions. If you're an Editor, it acts as an Editor. If you're an Admin, it acts as an Admin, full access to content, media, settings, plugins, the whole site. There's no separate "AI role" to think about, because there's no separate identity at all. It's just you, working through a different interface. One set of permissions to keep track of instead of two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Service agent: a fixed role, not tied to a person&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes "acts as whoever's logged in" isn't what you want. Maybe it's an automation, an integration, or a teammate who really doesn't need full account access just so their AI client can help with content. That's what a service agent is for. An admin creates it, gives it a fixed role that never changes (always Editor, say, no matter who's actually behind it), decides which people can even see it, and hands out its own dedicated MCP URL.&lt;/p&gt;

&lt;p&gt;Under the hood it's the same tool registry and the same permission checks as the personal connector. The only real difference is where the role comes from. A personal connector's role follows the account. A service agent's role is pinned in place by an admin and stays put.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Built in assistant: bring your own model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The third option skips MCP entirely and lives right inside the admin panel as a chat window. You connect it with an API key from whatever provider you already use, OpenAI, Anthropic, Google, OpenRouter, a local Ollama setup, even a custom endpoint. You set its role the same way you would for a connector, and there's an optional "Require approval" setting that holds every write it proposes in an Approvals tab until a human actually clicks confirm.&lt;/p&gt;

&lt;p&gt;This one's for people who just want a chat box in their CMS, backed by whichever model they already have access to, without setting up a separate AI app. Birkly genuinely doesn't care which company made the model. It only cares that it can call the same tool registry the other two methods use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same registry, three doors
&lt;/h2&gt;

&lt;p&gt;What ties all three together is that they're not really three different feature sets. They're three different doors into the same room. Whether an AI is working through a person's own login, acting as a fixed role service bot, or chatting away in the admin panel on someone's own API key, it's reaching the exact same catalog of actions: content, media, the site's files, plugin admin tools, settings, all of it. The thing that changes between them is whose identity it's borrowing, and how a write actually gets confirmed. OAuth consent up front for the two MCP methods, an optional approval queue for the built in one.&lt;/p&gt;

&lt;p&gt;"Bring your own AI" usually just means "point any model at our API." Here it stretches a bit further than that. You bring your own client, your own model provider, and your own identity story, personal, service, or built in, and the underlying permission model never has to bend to accommodate any of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A ceiling above all three
&lt;/h2&gt;

&lt;p&gt;Borrowing a role, whether it's a person's own or a service agent's fixed one, is the identity layer. But it's not the only thing standing between an AI connection and something going wrong. Two site wide settings sit above all three methods, and they apply no matter which role is in play.&lt;/p&gt;

&lt;p&gt;The first is the AI &amp;amp; MCP tools switch. It has three states. Normal, where tools simply follow role permissions and this is the default. Read only chat, where the built in assistant still works but no MCP tools get exposed or executed at all. And Disabled, where all tool execution is blocked outright and MCP's tools list comes back empty. This overrides whatever a connection's own approval setting says. If the site is set to Read only or Disabled, nothing gets more access than that, no matter how privileged its role is.&lt;/p&gt;

&lt;p&gt;The second is the Plugin Security Denylist. Specific collections can be marked as protected, and specific plugin admin spaces can be denied entirely, which blocks that plugin's sidebar injection and any space scoped hooks it would otherwise get. Anything on this list is simply off limits to every plugin, regardless of what capabilities it's been granted elsewhere. The settings page describes it plainly as a hard barrier that can't be overridden.&lt;/p&gt;

&lt;p&gt;So the role based model answers one question: whose permissions does this AI have. These two settings answer a different one entirely: what's the absolute ceiling, no matter whose permissions those are. Same doors as before, just with a breaker switch sitting above all of them that doesn't care which one an AI happened to walk through.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
