[{"data":1,"prerenderedAt":426},["ShallowReactive",2],{"$fi_SA3l8D9e4tuLzFLMXUroEj8Vi4FUp0B2g2TbBke08":3,"post-supabase-for-wordpress-people":147},{"site":4,"features":8,"stripe":10,"bridalfile":12,"navigation":13,"branding":124,"footer":127},{"id":5,"name":6,"domain":7},"7578a1b2-a8ec-462f-8980-d46ebefc76a2","Pwa Developer","pwadeveloper.uk",{"products":9,"bookings":9,"event_capacity":9,"ugc":9},false,{"enabled":9,"test_mode":11},true,{"enabled":9},{"footer":14,"header":42,"services":67},{"id":15,"name":16,"items":17},"4c83a83d-7d89-442d-8e4c-717e61d71c19","Footer Navigation",[18,22,26,30,34,38],{"id":19,"url":20,"label":21},"b8c9d0e1-f2a3-4b4c-5d6e-7f8a9b0c1d2e","/about","About",{"id":23,"url":24,"label":25},"c9d0e1f2-a3b4-4c5d-6e7f-8a9b0c1d2e3f","/blog","Blog",{"id":27,"url":28,"label":29},"d0e1f2a3-b4c5-4d6e-7f8a-9b0c1d2e3f4a","/contact","Contact",{"id":31,"url":32,"label":33},"e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b","/websites","Websites",{"id":35,"url":36,"label":37},"d1e2f3a4-1111-4a2b-8c3d-dddd11112222","/services/nuxt","Nuxt",{"id":39,"url":40,"label":41},"d2e3f4a5-2222-4b3c-9d4e-dddd22223333","/services/supabase","Supabase",{"id":43,"name":44,"items":45},"090e7007-6dd0-4416-8ce2-2680c446d2a9","Main Navigation",[46,48,52,56,58,60,62],{"id":47,"url":20,"label":21},"c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f",{"id":49,"url":50,"label":51},"a43446fd-355b-474a-a846-6f02ba7b4f68","/services","Services",{"id":53,"url":54,"label":55},"6b5e66d9-5267-4948-86b9-11ef75fcf821","/how-i-build","How I Build",{"id":57,"url":32,"label":33},"a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",{"id":59,"url":24,"label":25},"d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a",{"id":61,"url":28,"label":29},"f6a7b8c9-d0e1-4f2a-3b4c-5d6e7f8a9b0c",{"id":63,"url":64,"label":65,"target":66},"e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b","https://www.youtube.com/@anothermagentodev9161","YouTube","_blank",{"id":68,"name":69,"items":70},"9a2b3c4d-9999-4a2b-8c3d-aaaabbbbcccc","Services Menu",[71,77,83,89,95,101,107,113,119],{"id":72,"url":73,"icon":74,"label":75,"description":76},"1a2b3c4d-1111-4a2b-8c3d-111122223333","/services/pwa","fa-solid fa-mobile-screen-button","PWA","Installable, offline-first apps",{"id":78,"url":79,"icon":80,"label":81,"description":82},"2b3c4d5e-2222-4b3c-9d4e-222233334444","/services/wordpress","fa-brands fa-wordpress","WordPress","Themes, plugins, rescue work",{"id":84,"url":85,"icon":86,"label":87,"description":88},"3c4d5e6f-3333-4c4d-8e5f-333344445555","/services/magento","fa-solid fa-cart-shopping","Magento","Ecommerce & platform work",{"id":90,"url":91,"icon":92,"label":93,"description":94},"4d5e6f70-4444-4d5e-9f60-444455556666","/services/vue","fa-brands fa-vuejs","Vue & Nuxt","Reactive frontends, SSR apps",{"id":96,"url":97,"icon":98,"label":99,"description":100},"708192a3-7777-4081-8293-777788889999","/services/headless-cms","fa-solid fa-cube","Headless","Structured content APIs",{"id":102,"url":103,"icon":104,"label":105,"description":106},"8192a3b4-8888-4192-93a4-88889999aaaa","/services/ai-consultancy","fa-solid fa-robot","AI Consultancy","Where AI actually helps",{"id":108,"url":109,"icon":110,"label":111,"description":112},"a1b2c3d4-1234-4a2b-8c3d-aaaa11112222","/services/migrations","fa-solid fa-arrow-right-arrow-left","Migrations","Move platforms, keep your SEO",{"id":114,"url":115,"icon":116,"label":117,"description":118},"b2c3d4e5-2345-4b3c-9d4e-bbbb22223333","/services/technical-seo","fa-solid fa-gauge-high","Technical SEO & Performance","Core Web Vitals & speed",{"id":120,"url":32,"icon":121,"label":122,"description":123},"c3d4e5f6-3456-4c4d-8e5f-cccc33334444","fa-solid fa-globe","Custom Websites","Bespoke sites, not templates",{"logo":125,"logoDark":125,"favicon":125,"tagline":126},null,"WordPress & Web Developer in Hull, East Yorkshire",{"summary":128,"copyright":125,"address":129,"contact":133,"socialLinks":134,"openingHours":146,"logos":125},"Senior freelance web developer in Hull, East Yorkshire. 15+ years building fast, custom websites and web apps in WordPress, Magento, Vue and Nuxt. Work directly with the developer.",{"line1":125,"line2":125,"city":130,"state":131,"postalCode":125,"country":132},"Hull","East Yorkshire","United Kingdom",{"phone":125,"email":125},[135,138,142],{"url":64,"icon":136,"platform":137},"fa-brands fa-youtube","youtube",{"url":139,"icon":140,"platform":141},"https://github.com/adamcjackson1982","fa-brands fa-github","github",{"url":143,"icon":144,"platform":145},"https://www.linkedin.com/in/adamcjackson/","fa-brands fa-linkedin","linkedin",[],{"id":148,"slug":149,"title":150,"excerpt":151,"content":152,"content_format":417,"featured_image":418,"published":11,"published_at":419,"meta_title":420,"meta_description":421,"fields":422},"0999d727-7071-4a7c-8ca7-0632b7e22909","supabase-for-wordpress-people","Supabase for People Who've Only Used WordPress Hosting","Supabase explained against the thing you already know. What it gives you, what it deliberately does not, and how I decide whether a project needs it or is fine staying on WordPress.",{"type":153,"content":154},"doc",[155,161,165,172,176,180,185,189,193,198,238,243,247,251,255,260,264,290,303,308,334,339,343,355,360,364,368,373,385,397,402,406],{"type":156,"content":157},"paragraph",[158],{"text":159,"type":160},"If your entire experience of hosting a website is a control panel, a MySQL database you have never once opened, and a hosting company that emails you about renewals, then Supabase looks odd the first time you meet it. I get asked what it actually is fairly often, usually by people who have heard me mention it and want to know whether it has anything to do with them.","text",{"type":156,"content":162},[163],{"text":164,"type":160},"So here is the plain version, explained against WordPress hosting, because that is the frame most people already have in their head.",{"type":166,"attrs":167,"content":169},"heading",{"level":168},2,[170],{"text":171,"type":160},"The one sentence version",{"type":156,"content":173},[174],{"text":175,"type":160},"Supabase is a hosted Postgres database with all the things you normally have to build around a database already attached: an API, user logins, file storage, and somewhere to run small bits of server code.",{"type":156,"content":177},[178],{"text":179,"type":160},"That is it. It is a database and the plumbing that always ends up bolted to a database.",{"type":166,"attrs":181,"content":182},{"level":168},[183],{"text":184,"type":160},"How that differs from WordPress hosting",{"type":156,"content":186},[187],{"text":188,"type":160},"WordPress hosting is a furnished flat. You get the walls, the kitchen, the sofa and a front door key, and you move in. WordPress decides what a post is, what a page is, where the login screen lives and how the admin looks. You change the decor with themes and add features with plugins.",{"type":156,"content":190},[191],{"text":192,"type":160},"Supabase is a serviced building where the structure, wiring and security are done and you fit out your own rooms. Nothing decides what your data looks like except you. That is the freedom and it is also the work.",{"type":166,"attrs":194,"content":195},{"level":168},[196],{"text":197,"type":160},"The parts, one at a time",{"type":199,"content":200},"bulletList",[201,208,214,220,226,232],{"type":202,"content":203},"listItem",[204],{"type":156,"content":205},[206],{"text":207,"type":160},"The database. Postgres, which is the same family of thing as the MySQL database sat under your WordPress site. It holds tables you design rather than the wp_posts and wp_options tables WordPress gives you.",{"type":202,"content":209},[210],{"type":156,"content":211},[212],{"text":213,"type":160},"The API. Every table gets a working API the moment you create it. On a WordPress build you would be writing endpoints or wrestling the REST API into shape. Here you do not write one at all.",{"type":202,"content":215},[216],{"type":156,"content":217},[218],{"text":219,"type":160},"Auth. Sign up, sign in, password resets, magic links, Google or Apple logins. The equivalent of wp-login, built for apps and kept separate from your content.",{"type":202,"content":221},[222],{"type":156,"content":223},[224],{"text":225,"type":160},"Storage. Files and images, so your uploads folder, with rules about who can see what.",{"type":202,"content":227},[228],{"type":156,"content":229},[230],{"text":231,"type":160},"Edge functions. Small pieces of server code for jobs that cannot happen in the browser, like talking to a payment provider or sending an email.",{"type":202,"content":233},[234],{"type":156,"content":235},[236],{"text":237,"type":160},"Row Level Security. The important one, and the one I will come back to.",{"type":166,"attrs":239,"content":240},{"level":168},[241],{"text":242,"type":160},"Row Level Security, in plain English",{"type":156,"content":244},[245],{"text":246,"type":160},"In a WordPress site, the rules about who can see what mostly live in PHP. A template file checks whether the current user is allowed, and any new route into the data needs that check repeating. Miss one and you have a leak.",{"type":156,"content":248},[249],{"text":250,"type":160},"Supabase pushes those rules down into the database itself. You write a rule saying a user can only read rows where the owner column matches their own id, and from then on it does not matter whether the request comes from your website, a phone app, or someone poking at the API with a script. The database refuses.",{"type":156,"content":252},[253],{"text":254,"type":160},"Set up properly, this is a safer arrangement than the WordPress one. Not set up at all, your data is sitting on the open internet. There is no middle ground, which is why it is the first thing I check on any project I inherit.",{"type":166,"attrs":256,"content":257},{"level":168},[258],{"text":259,"type":160},"What you do not get",{"type":156,"content":261},[262],{"text":263,"type":160},"This is the part that catches people out, so I will be blunt about it.",{"type":199,"content":265},[266,272,278,284],{"type":202,"content":267},[268],{"type":156,"content":269},[270],{"text":271,"type":160},"No editor. There is no admin screen where your team writes a blog post. There is a table viewer for developers, which is not the same thing at all.",{"type":202,"content":273},[274],{"type":156,"content":275},[276],{"text":277,"type":160},"No themes. Nothing renders a page. Supabase has no opinion about what your site looks like because it never sees it.",{"type":202,"content":279},[280],{"type":156,"content":281},[282],{"text":283,"type":160},"No plugin for that. If you want a contact form, a booking flow or a newsletter signup, somebody builds it.",{"type":202,"content":285},[286],{"type":156,"content":287},[288],{"text":289,"type":160},"No structure handed to you. You decide what a customer, an order or a booking is, and you live with those decisions later.",{"type":156,"content":291},[292,294,301],{"text":293,"type":160},"The front end is a separate job, which is where Nuxt usually comes in for me. I wrote a longer piece on ",{"text":295,"type":160,"marks":296},"what each of those two actually does",[297],{"type":298,"attrs":299},"link",{"href":300},"/nuxt-vs-supabase-what-each-one-does",{"text":302,"type":160}," if that split is still fuzzy.",{"type":166,"attrs":304,"content":305},{"level":168},[306],{"text":307,"type":160},"When I would reach for it",{"type":199,"content":309},[310,316,322,328],{"type":202,"content":311},[312],{"type":156,"content":313},[314],{"text":315,"type":160},"The site needs to do something rather than say something. Bookings, member areas, dashboards, anything where users log in and see their own data.",{"type":202,"content":317},[318],{"type":156,"content":319},[320],{"text":321,"type":160},"The content is things rather than pages. Venues, courses, vehicles, properties. WordPress can model these with custom post types, but past a certain complexity you are fighting it.",{"type":202,"content":323},[324],{"type":156,"content":325},[326],{"text":327,"type":160},"A WordPress site has turned into thirty plugins holding up two features, with the risk and the bill creeping up together.",{"type":202,"content":329},[330],{"type":156,"content":331},[332],{"text":333,"type":160},"Two apps need the same data. A website and a phone app sharing one API is calmer than two things scraping one WordPress install.",{"type":166,"attrs":335,"content":336},{"level":168},[337],{"text":338,"type":160},"When I would tell you to stay on WordPress",{"type":156,"content":340},[341],{"text":342,"type":160},"Often, honestly. If you have a brochure site and a blog, someone in the office updates it weekly without asking for help, and it converts fine, moving to a custom stack buys you nothing you can measure. You would be paying for engineering to get back to where you already are.",{"type":156,"content":344},[345,347,353],{"text":346,"type":160},"Same answer if there is no appetite for a developer being involved again later. A custom build needs someone to call. WordPress, for all its faults, can be picked up by almost anyone. I have made this argument at length in ",{"text":348,"type":160,"marks":349},"when a page builder is genuinely fine",[350],{"type":298,"attrs":351},{"href":352},"/when-a-page-builder-is-genuinely-fine",{"text":354,"type":160}," and I have talked people out of custom work on exactly these grounds.",{"type":166,"attrs":356,"content":357},{"level":168},[358],{"text":359,"type":160},"The cost shape",{"type":156,"content":361},[362],{"text":363,"type":160},"It is a different shape rather than a straight saving. There is a free tier that is genuinely usable for a small project, and a paid tier once you have real traffic and want backups you can rely on. Pricing moves, so check the current page rather than trusting a number in a blog post, mine included.",{"type":156,"content":365},[366],{"text":367,"type":160},"What changes the total is rarely the hosting line. It is that you pay for a build up front instead of paying plugin subscriptions every year forever, and whether that trade works depends on how long the site is going to live.",{"type":166,"attrs":369,"content":370},{"level":168},[371],{"text":372,"type":160},"The bits I would warn you about",{"type":156,"content":374},[375,377,383],{"text":376,"type":160},"Get your security rules right before you put a single real record in. Set up backups and check one actually restores. And resist the urge to put business logic in six different places. I made a decent set of these mistakes myself and wrote them up in ",{"text":378,"type":160,"marks":379},"the Nuxt and Supabase mistakes post",[380],{"type":298,"attrs":381},{"href":382},"/nuxt-3-supabase-mistakes-i-made",{"text":384,"type":160},".",{"type":156,"content":386},[387,389,395],{"text":388,"type":160},"One thing I will not cover here: if what you are really asking about is moving an online shop onto this kind of stack, that is a bigger conversation about ecommerce platforms and it lives on ",{"text":390,"type":160,"marks":391},"Headless Digital",[392],{"type":298,"attrs":393},{"href":394},"https://headless-digital.com",{"text":396,"type":160}," rather than here.",{"type":166,"attrs":398,"content":399},{"level":168},[400],{"text":401,"type":160},"If you are trying to work out which side you are on",{"type":156,"content":403},[404],{"text":405,"type":160},"The question I would ask is simple. Does your site mostly need to publish, or does it need to remember things about individual people? Publishing is WordPress territory and there is no shame in that. Remembering is where Supabase starts to pay for itself.",{"type":156,"content":407},[408,410,415],{"text":409,"type":160},"If you are genuinely unsure, book the ",{"text":411,"type":160,"marks":412},"free 30 minute surgery",[413],{"type":298,"attrs":414},{"href":28},{"text":416,"type":160},". Bring the site and whatever is annoying you about it, and I will tell you straight whether this is a stack problem or something much cheaper to fix.","tiptap","https://sktegczfmabucrnpgrvp.supabase.co/storage/v1/object/public/media/7578a1b2-a8ec-462f-8980-d46ebefc76a2/2025/12/1767022900877-blog-hero-nuxt-supabase.svg","2026-08-15T08:00:00+00:00","What Is Supabase? Explained for WordPress Users","Supabase explained against WordPress hosting: what you get, what you lose, when it is worth it and when WordPress is still the right call.",{"tags":423},[424,425],"supabase","wordpress",1787990429303]