[{"data":1,"prerenderedAt":28},["ShallowReactive",2],{"blog-\u002Fblog\u002Fbuilding-shipmentpro":3},{"id":4,"title":5,"author":6,"body":7,"date":14,"description":15,"extension":16,"meta":17,"navigation":18,"path":19,"seo":20,"stem":21,"tags":22,"__hash__":27},"blog\u002Fblog\u002Fbuilding-shipmentpro.md","Why I Built ShipmentPro With Row-Level Security Instead of Application-Level Auth","Mohamed Abed",{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"2026-07-07","Most developers handle multi-tenant data isolation at the application layer. Here's why I chose PostgreSQL RLS instead — and what it cost me to get it right.","md",{},true,"\u002Fblog\u002Fbuilding-shipmentpro",{"title":5,"description":15},"blog\u002Fbuilding-shipmentpro",[23,24,25,26],"backend","security","postgresql","supabase","aoVteQxzbFm1SxprOivwbsxHa6OkV84tXsjCEUhfpyo",1783589640962]