[{"data":1,"prerenderedAt":760},["ShallowReactive",2],{"header-nav":3,"footer-primary":155,"footer-secondary":232,"footer-description":258,"header-nav-data":260,"github-stars":262,"8f849cd0-a47b-4e32-bb19-b478973c90f7":366,"dfd79d2b-7af5-4cdb-aa94-3f73de97ebd8":372,"74634853-196b-4ce3-b256-4534c054838f":379,"site-banner":408,"358b0659-1f05-4427-bd1c-4bc03a43c182":412,"9df3f40e-6272-4ec6-a0d7-cc29265e087c":419,"1b444c23-b593-4391-9410-4ca5d2c7a7cb":423,"blog/stop-overengineering-your-multitenant-architecture":426,"resource-sidebar-cta":486,"2a1ce79b-5635-40f7-8723-ccb9e9174522":490,"sales-reps":494,"638ac033-8449-428b-8e8f-8f4297e7fe2b":746,"7d40c0db-cdf2-44c5-b3b2-6491d2f67be1":749,"3ef03a7c-3640-4c70-9612-32ea9a2cf83e":756,"5ed90117-f3e4-4e04-919c-bb78528094e3":758},{"items":4},[5,74,136,141,148],{"id":6,"title":7,"url":8,"callout":9,"callout_title":10,"children_title":11,"page":8,"children":12},"62c04c6c-5793-4702-8ed1-73dd563fd605","Product",null,"8f849cd0-a47b-4e32-bb19-b478973c90f7","Project Showcase","Use Cases and Features",[13,21,29,37,43,51,59,67],{"id":14,"title":15,"url":16,"description":17,"image":8,"icon":18,"page":19},"e7d7d5ed-89b1-4455-8b4a-8ae92c70e3a0","Headless CMS","/solutions/headless-cms/","Manage and deliver content with ease","code_blocks",{"permalink":20},"/solutions/headless-cms",{"id":22,"title":23,"url":24,"description":25,"image":8,"icon":26,"page":27},"60bdefd9-95e6-45a3-9f81-4748d07c59d3","Backend-as-a-Service","/solutions/backend-as-a-service/","Build and ship applications faster","speed",{"permalink":28},"/solutions/backend-as-a-service",{"id":30,"title":31,"url":32,"description":33,"image":8,"icon":34,"page":35},"5f9aebeb-4f89-445e-9850-5b1261a2743c","Headless Commerce","/solutions/product-information-management/","A single source of truth for products","shopping_cart_checkout",{"permalink":36},"/solutions/product-information-management",{"id":38,"title":39,"url":40,"description":41,"image":8,"icon":42,"page":8},"49e46134-80be-470e-8c73-afb1417fa9b6","100+ More Use Cases","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus","Build anything (or everything)","lightbulb",{"id":44,"title":45,"url":46,"description":47,"image":8,"icon":48,"page":49},"a589ac77-a5ce-45c5-a054-e43111e19158","Instant APIs","/products/connect/","Connect a database, get REST + GraphQL APIs","api",{"permalink":50},"/toolkit/connect",{"id":52,"title":53,"url":54,"description":55,"image":8,"icon":56,"page":57},"4a0f129a-c546-4493-b0a9-306e51692e90","Granular Policy-Based Auth","/products/auth/","Provide secure, autonomous data access","lock_person",{"permalink":58},"/toolkit/auth",{"id":60,"title":61,"url":62,"description":63,"image":8,"icon":64,"page":65},"f9250f2c-93a4-4108-80db-011bbe391ecf","Visual Automation Builder","/products/automate/","Automate content and data workflows with ease","build",{"permalink":66},"/toolkit/automate",{"id":68,"title":69,"url":8,"description":70,"image":8,"icon":71,"page":72},"f1ae4e40-5b05-42a4-9cd3-33dda35cc939","50+ More Features","Get everything you need out-of-the-box","auto_fix",{"permalink":73},"/features",{"id":75,"title":76,"url":8,"callout":77,"callout_title":78,"children_title":79,"page":8,"children":80},"2f6ad0d1-6dd3-4f17-b5c8-9f2abf71409a","Resources","dfd79d2b-7af5-4cdb-aa94-3f73de97ebd8","Watch Directus TV","Learn More",[81,88,96,102,109,116,122,129],{"id":82,"title":83,"url":84,"description":85,"image":8,"icon":86,"page":87},"0a3bf9f5-1ef2-43f4-bc09-7ff7488241c5","Blog","/blog","Read our latest articles and guides","library_books",{"permalink":84},{"id":89,"title":90,"url":91,"description":92,"image":8,"icon":93,"page":94},"165e3dc2-e51b-4456-8382-99c5775b0412","Case Studies","#","Case studies and success stories","magic_button",{"permalink":95},"/case-studies",{"id":97,"title":98,"url":99,"description":100,"image":8,"icon":101,"page":8},"5ae324b6-bf44-4c21-95ad-e6dc0c1c1f40","Community Forum","https://community.directus.io/","Questions and conversations","comment",{"id":103,"title":104,"url":91,"description":105,"image":8,"icon":106,"page":107},"b1db03f0-e537-490e-8c0f-c61c401d1024","Agency Directory","Browse our list of agency partners ","handshake",{"permalink":108},"/agency-directory",{"id":110,"title":111,"url":112,"description":113,"image":8,"icon":114,"page":115},"991731c8-eb40-4eec-85a5-6e977bcd7ec9","About Us","/about","Learn more about Directus and the team","supervised_user_circle",{"permalink":112},{"id":117,"title":118,"url":119,"description":120,"image":8,"icon":121,"page":8},"52aebf38-b3ad-4a27-807d-ce52398cd509","Wall of Love","https://testimonial.to/directus/all","See what others are saying about us","heart_plus",{"id":123,"title":124,"url":91,"description":125,"image":8,"icon":126,"page":127},"a86eca65-d5ae-4263-b7d9-4f1a1c50a0b1","Contact","Have a general inquiry or question for us?","mark_email_unread",{"permalink":128},"/contact",{"id":130,"title":131,"url":8,"description":132,"image":8,"icon":133,"page":134},"28225825-8d41-4809-9032-192fbf5c6e5d","Support","Reach out to Directus support","support",{"permalink":135},"/support",{"id":137,"title":138,"url":139,"callout":8,"callout_title":8,"children_title":8,"page":8,"children":140},"a3f1275d-b088-4b11-99bf-143fcbf39104","Developers","/docs",[],{"id":142,"title":143,"url":144,"callout":8,"callout_title":8,"children_title":8,"page":145,"children":147},"fae8fded-d2e2-468e-a68b-82abec7a7225","Enterprise","/solutions/enterprise/",{"permalink":146},"/solutions/enterprise",[],{"id":149,"title":150,"url":151,"callout":8,"callout_title":8,"children_title":8,"page":152,"children":154},"5c5e2fbc-49fd-4e41-a71e-e4f8db2b00cf","Pricing","/pricing/",{"permalink":153},"/pricing/self-hosted",[],{"items":156},[157,174,193,212],{"id":158,"title":159,"url":8,"page":8,"children":160},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",[161,164,167,171],{"id":162,"title":15,"url":8,"page":163},"fcafe85a-a798-4710-9e7a-776fe413aae5",{"permalink":20},{"id":165,"title":23,"url":8,"page":166},"79972923-93cf-4777-9e32-5c9b0315fc10",{"permalink":28},{"id":168,"title":169,"url":8,"page":170},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":36},{"id":172,"title":173,"url":40,"page":8},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build",{"id":175,"title":76,"url":8,"page":8,"children":176},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f",[177,181,185,189],{"id":178,"title":179,"url":180,"page":8},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":182,"title":183,"url":184,"page":8},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":186,"title":187,"url":188,"page":8},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":190,"title":191,"url":192,"page":8},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":194,"title":131,"url":8,"page":8,"children":195},"d61fae8c-7502-494a-822f-19ecff3d0256",[196,200,204,208],{"id":197,"title":198,"url":199,"page":8},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":201,"title":202,"url":203,"page":8},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":205,"title":206,"url":207,"page":8},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":209,"title":210,"url":211,"page":8},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":213,"title":214,"url":8,"page":8,"children":215},"49141403-4f20-44ac-8453-25ace1265812","Organization",[216,220,225,229],{"id":217,"title":218,"url":112,"page":219},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About",{"permalink":112},{"id":221,"title":222,"url":91,"page":223},"b84bf525-5471-4b14-a93c-225f6c386005","Careers",{"permalink":224},"/careers",{"id":226,"title":227,"url":228,"page":8},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":230,"title":124,"url":8,"page":231},"8d2fa1e3-198e-4405-81e1-2ceb858bc237",{"permalink":128},{"items":233},[234,240,246,252],{"id":235,"title":236,"url":8,"page":237,"children":239},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",{"permalink":238},"/cloud-policies",[],{"id":241,"title":242,"url":91,"page":243,"children":245},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License",{"permalink":244},"/bsl",[],{"id":247,"title":248,"url":91,"page":249,"children":251},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":250},"/terms",[],{"id":253,"title":254,"url":91,"page":255,"children":257},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":256},"/privacy",[],{"description":259},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"header_cta_buttons":261},"74634853-196b-4ce3-b256-4534c054838f",{"id":263,"node_id":264,"name":265,"full_name":266,"private":267,"owner":268,"html_url":285,"description":286,"fork":267,"url":287,"forks_url":288,"keys_url":289,"collaborators_url":290,"teams_url":291,"hooks_url":292,"issue_events_url":293,"events_url":294,"assignees_url":295,"branches_url":296,"tags_url":297,"blobs_url":298,"git_tags_url":299,"git_refs_url":300,"trees_url":301,"statuses_url":302,"languages_url":303,"stargazers_url":304,"contributors_url":305,"subscribers_url":306,"subscription_url":307,"commits_url":308,"git_commits_url":309,"comments_url":310,"issue_comment_url":311,"contents_url":312,"compare_url":313,"merges_url":314,"archive_url":315,"downloads_url":316,"issues_url":317,"pulls_url":318,"milestones_url":319,"notifications_url":320,"labels_url":321,"releases_url":322,"deployments_url":323,"created_at":324,"updated_at":325,"pushed_at":326,"git_url":327,"ssh_url":328,"clone_url":329,"svn_url":285,"homepage":330,"size":331,"stargazers_count":332,"watchers_count":332,"language":333,"has_issues":334,"has_projects":334,"has_downloads":334,"has_wiki":267,"has_pages":267,"has_discussions":334,"forks_count":335,"mirror_url":8,"archived":267,"disabled":267,"open_issues_count":336,"license":337,"allow_forking":334,"is_template":267,"web_commit_signoff_required":267,"has_pull_requests":334,"pull_request_creation_policy":342,"topics":343,"visibility":284,"forks":335,"open_issues":336,"watchers":332,"default_branch":362,"temp_clone_token":8,"custom_properties":363,"organization":364,"network_count":335,"subscribers_count":365},7122594,"MDEwOlJlcG9zaXRvcnk3MTIyNTk0","directus","directus/directus",false,{"login":265,"id":269,"node_id":270,"avatar_url":271,"gravatar_id":272,"url":273,"html_url":274,"followers_url":275,"following_url":276,"gists_url":277,"starred_url":278,"subscriptions_url":279,"organizations_url":280,"repos_url":281,"events_url":282,"received_events_url":283,"type":214,"user_view_type":284,"site_admin":267},15967950,"MDEyOk9yZ2FuaXphdGlvbjE1OTY3OTUw","https://avatars.githubusercontent.com/u/15967950?v=4","","https://api.github.com/users/directus","https://github.com/directus","https://api.github.com/users/directus/followers","https://api.github.com/users/directus/following{/other_user}","https://api.github.com/users/directus/gists{/gist_id}","https://api.github.com/users/directus/starred{/owner}{/repo}","https://api.github.com/users/directus/subscriptions","https://api.github.com/users/directus/orgs","https://api.github.com/users/directus/repos","https://api.github.com/users/directus/events{/privacy}","https://api.github.com/users/directus/received_events","public","https://github.com/directus/directus","The flexible backend for all your projects 🐰 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.","https://api.github.com/repos/directus/directus","https://api.github.com/repos/directus/directus/forks","https://api.github.com/repos/directus/directus/keys{/key_id}","https://api.github.com/repos/directus/directus/collaborators{/collaborator}","https://api.github.com/repos/directus/directus/teams","https://api.github.com/repos/directus/directus/hooks","https://api.github.com/repos/directus/directus/issues/events{/number}","https://api.github.com/repos/directus/directus/events","https://api.github.com/repos/directus/directus/assignees{/user}","https://api.github.com/repos/directus/directus/branches{/branch}","https://api.github.com/repos/directus/directus/tags","https://api.github.com/repos/directus/directus/git/blobs{/sha}","https://api.github.com/repos/directus/directus/git/tags{/sha}","https://api.github.com/repos/directus/directus/git/refs{/sha}","https://api.github.com/repos/directus/directus/git/trees{/sha}","https://api.github.com/repos/directus/directus/statuses/{sha}","https://api.github.com/repos/directus/directus/languages","https://api.github.com/repos/directus/directus/stargazers","https://api.github.com/repos/directus/directus/contributors","https://api.github.com/repos/directus/directus/subscribers","https://api.github.com/repos/directus/directus/subscription","https://api.github.com/repos/directus/directus/commits{/sha}","https://api.github.com/repos/directus/directus/git/commits{/sha}","https://api.github.com/repos/directus/directus/comments{/number}","https://api.github.com/repos/directus/directus/issues/comments{/number}","https://api.github.com/repos/directus/directus/contents/{+path}","https://api.github.com/repos/directus/directus/compare/{base}...{head}","https://api.github.com/repos/directus/directus/merges","https://api.github.com/repos/directus/directus/{archive_format}{/ref}","https://api.github.com/repos/directus/directus/downloads","https://api.github.com/repos/directus/directus/issues{/number}","https://api.github.com/repos/directus/directus/pulls{/number}","https://api.github.com/repos/directus/directus/milestones{/number}","https://api.github.com/repos/directus/directus/notifications{?since,all,participating}","https://api.github.com/repos/directus/directus/labels{/name}","https://api.github.com/repos/directus/directus/releases{/id}","https://api.github.com/repos/directus/directus/deployments","2012-12-12T01:35:36Z","2026-03-18T14:36:38Z","2026-03-18T15:43:33Z","git://github.com/directus/directus.git","git@github.com:directus/directus.git","https://github.com/directus/directus.git","https://directus.io",438225,34516,"TypeScript",true,4638,385,{"key":338,"name":339,"spdx_id":340,"url":8,"node_id":341},"other","Other","NOASSERTION","MDc6TGljZW5zZTA=","all",[48,344,345,346,347,348,265,349,350,351,352,353,354,355,356,357,358,359,360,361],"app","cms","composable","data-visualization","database","graphql","headless-cms","javascript","mariadb","mssql","mysql","no-code","node","postgresql","sql","sqlite","typescript","vue","main",{},{"login":265,"id":269,"node_id":270,"avatar_url":271,"gravatar_id":272,"url":273,"html_url":274,"followers_url":275,"following_url":276,"gists_url":277,"starred_url":278,"subscriptions_url":279,"organizations_url":280,"repos_url":281,"events_url":282,"received_events_url":283,"type":214,"user_view_type":284,"site_admin":267},326,{"id":9,"title":367,"description":368,"image":369,"external_url":8,"icon":8,"badge":8,"page":370,"resource":8},"Built With Directus","See what everyone's been building with Directus","e658de72-fb08-4ed2-8029-215c712c789e",{"permalink":371},"/built-with-directus",{"id":77,"title":373,"description":374,"image":375,"external_url":376,"icon":377,"badge":378,"page":8,"resource":8},"Directus TV","Go down the rabbit hole with hours of original video content from our team. ","ab70faf5-fc28-4608-a7e7-74fd4f020a9d","/tv","connected_tv","Video",{"alignment":380,"style":381,"experiment_enabled":267,"experiment":8,"experiment_variant":382,"buttons":385,"variants":395},"center","default",{"id":383,"key":384,"experiment":8},"8c4951b4-a6f9-4c06-9f71-fd39a3bdad1e","control",[386,389,392],{"id":387,"block_button_id":388},15,"358b0659-1f05-4427-bd1c-4bc03a43c182",{"id":390,"block_button_id":391},16,"9df3f40e-6272-4ec6-a0d7-cc29265e087c",{"id":393,"block_button_id":394},232,"1b444c23-b593-4391-9410-4ca5d2c7a7cb",[396],{"id":397,"alignment":380,"style":381,"buttons":398,"experiment_variant":405},"e1885d45-3119-41a3-8294-3cd796ea6f02",[399,402],{"id":400,"block_button_id":401},203,"ade37731-147d-48c4-864a-cec007576362",{"id":403,"block_button_id":404},202,"1cb4e89f-f7de-4b46-bbb8-080191517a72",{"id":406,"key":407},"66d2be4f-2492-4944-8060-039c15515918","variant",{"id":409,"icon":377,"content":410,"link":411},"812bf73d-ebfb-4246-9538-937a09a0c795","Learn more about our native MCP","https://directus.io/mcp",{"id":388,"external_url":8,"label":413,"color":414,"outline":267,"icon":8,"size":415,"target":416,"ph_event":8,"page":417,"resource":8},"Book a Demo","primary","medium","_self",{"permalink":418},"/demo",{"id":391,"external_url":420,"label":421,"color":422,"outline":267,"icon":8,"size":415,"target":416,"ph_event":8,"page":8,"resource":8},"https://directus.cloud/account/register","Get Started","secondary",{"id":394,"external_url":211,"label":424,"color":422,"outline":334,"icon":425,"size":415,"target":416,"ph_event":8,"page":8,"resource":8},"Log In","arrow_forward",{"title":427,"category":428,"date_published":429,"summary":430,"image":431,"author":433,"blocks":438,"type":453,"video":8,"seo":454,"related_resources":457},"Stop Overengineering Your Multi-tenant Architecture","resource","2025-02-04T22:37:00.000Z","Most teams are building multi-tenant systems like they're assembling IKEA furniture blindfolded - following complex instructions when a simpler solution exists.",{"id":432,"description":8},"1e588474-66fe-4c2f-a487-82e28de9e04c",{"name":434,"job_title":435,"image":436,"slug":437},"Bryant Gillespie","Growth Engineer","87e21ef8-f72e-4933-92a2-e524d3e46519","bryant-gillespie",[439,444,449],{"id":440,"collection":441,"item":442,"spacing":8,"sort":443},"5a9e55da-001c-4b7a-8eed-84441332d6c7","block_richtext","638ac033-8449-428b-8e8f-8f4297e7fe2b",1,{"id":445,"collection":446,"item":447,"spacing":8,"sort":448},"77fe7798-dc9a-4ca3-ad9f-602d3fb4aa89","block_paper","7d40c0db-cdf2-44c5-b3b2-6491d2f67be1",2,{"id":450,"collection":441,"item":451,"spacing":8,"sort":452},"5aa49b98-77c2-4ba6-9e73-1157c5f7c8b7","5ed90117-f3e4-4e04-919c-bb78528094e3",3,{"title":83},{"title":455,"meta_description":456,"no_follow":267,"no_index":267,"canonical_url":8,"json_ld":8},"Stop Overengineering Multi-tenant Arch | Directus","Simplify your multi-tenant architecture. Avoid common overengineering mistakes and build scalable multi-tenancy without unnecessary complexity.",[458,468,478],{"related_resources_id":459},{"title":460,"category":428,"date_published":461,"image":462,"slug":463,"author":464,"type":466},"Is Your CMS Ready for AI and Personalization?","2025-01-28T22:02:00.000Z","aa4b0461-d421-481e-861e-d364d0a69e99","is-your-cms-ready-for-ai-and-personalization",{"image":465},"1652318e-9f2a-4d4a-b847-95794367910d",{"slug":467},"blog",{"related_resources_id":469},{"title":470,"category":471,"date_published":472,"image":473,"slug":474,"author":475,"type":477},"Comparing Modern Content Architecture Approaches for 2025","news","2025-01-23T22:16:00.000Z","377d175f-3947-4176-afb5-b5393ff2330e","comparing-modern-content-architectures-2025",{"image":476},"1feeb84e-af8d-4795-8c17-47a53bcbe699",{"slug":467},{"related_resources_id":479},{"title":480,"category":428,"date_published":481,"image":482,"slug":483,"author":484,"type":485},"Signs Your Web Architecture Won't Survive 2025","2025-01-17T20:52:00.000Z","22e69be9-d477-494a-b506-b70b87cf137e","signs-your-web-architecture-wont-survive-2025",{"image":465},{"slug":467},{"resource_sidebar_cta_header":487,"resource_sidebar_cta_description":488,"resource_sidebar_cta_form":489},"Sign up for updates 🐇","Get insights, releases, and exciting news delivered directly to your inbox once a month. No spam - we promise. 🙂","2a1ce79b-5635-40f7-8723-ccb9e9174522",{"id":489,"alignment":491,"show_labels":267,"inline":267,"form":492},"left",{"hubspot_form_id":493,"typeform_form_id":8,"route_to_meeting_link_on_success":267},"d57a69e4-6f43-4768-a600-5f7d30306260",{"reps":495},[496,552],{"name":497,"sdr":8,"link":498,"countries":499,"states":501},"John Daniels","https://meet.directus.io/meetings/john2144/john-contact-form-meeting",[500],"United States",[502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551],"Michigan","Indiana","Ohio","West Virginia","Kentucky","Virginia","Tennessee","North Carolina","South Carolina","Georgia","Florida","Alabama","Mississippi","New York","MI","IN","OH","WV","KY","VA","TN","NC","SC","GA","FL","AL","MS","NY","Connecticut","CT","Delaware","DE","Maine","ME","Maryland","MD","Massachusetts","MA","New Hampshire","NH","New Jersey","NJ","Pennsylvania","PA","Rhode Island","RI","Vermont","VT","Washington DC","DC",{"name":553,"link":554,"countries":555},"Michelle Riber","https://meetings.hubspot.com/mriber",[556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,533,744,745],"Albania","ALB","Algeria","DZA","Andorra","AND","Angola","AGO","Austria","AUT","Belgium","BEL","Benin","BEN","Bosnia and Herzegovina","BIH","Botswana","BWA","Bulgaria","BGR","Burkina Faso","BFA","Burundi","BDI","Cameroon","CMR","Cape Verde","CPV","Central African Republic","CAF","Chad","TCD","Comoros","COM","Côte d'Ivoire","CIV","Croatia","HRV","Czech Republic","CZE","Democratic Republic of Congo","COD","Denmark","DNK","Djibouti","DJI","Egypt","EGY","Equatorial Guinea","GNQ","Eritrea","ERI","Estonia","EST","Eswatini","SWZ","Ethiopia","ETH","Finland","FIN","France","FRA","Gabon","GAB","Gambia","GMB","Ghana","GHA","Greece","GRC","Guinea","GIN","Guinea-Bissau","GNB","Hungary","HUN","Iceland","ISL","Ireland","IRL","Italy","ITA","Kenya","KEN","Latvia","LVA","Lesotho","LSO","Liberia","LBR","Libya","LBY","Liechtenstein","LIE","Lithuania","LTU","Luxembourg","LUX","Madagascar","MDG","Malawi","MWI","Mali","MLI","Malta","MLT","Mauritania","MRT","Mauritius","MUS","Moldova","MDA","Monaco","MCO","Montenegro","MNE","Morocco","MAR","Mozambique","MOZ","Namibia","NAM","Niger","NER","Nigeria","NGA","North Macedonia","MKD","Norway","NOR","Poland","POL","Portugal","PRT","Republic of Congo","COG","Romania","ROU","Rwanda","RWA","San Marino","SMR","São Tomé and Príncipe","STP","Senegal","SEN","Serbia","SRB","Seychelles","SYC","Sierra Leone","SLE","Slovakia","SVK","Slovenia","SVN","Somalia","SOM","South Africa","ZAF","South Sudan","SSD","Spain","ESP","Sudan","SDN","Sweden","SWE","Tanzania","TZA","Togo","TGO","Tunisia","TUN","Uganda","UGA","United Kingdom","GBR","Vatican City","VAT","Zambia","ZMB","Zimbabwe","ZWE","UK","Germany","Netherlands","Switzerland","CH","NL",{"id":442,"content":747,"color":748},"\u003Cp>Building a SaaS product in 2025? Or any product in 2025?\u003C/p>\n\u003Cp>Multi-tenancy isn't optional anymore. And if you've been searching for answers, you've probably noticed everyone treats it like some mystical art form that only senior architects who meditate for 3 hours daily can understand.\u003C/p>\n\u003Cp>Let's fix that.\u003C/p>\n\u003Ch2>The Truth About Multi-tenant Architecture\u003C/h2>\n\u003Cp>First, some good news: it's not as complex as the internet makes it seem.&nbsp;Better news: when done right, it can cut your infrastructure costs by up to 75%. (Yes, your CFO can stop crying now.)\u003C/p>\n\u003Cp>But here's what nobody talks about: most teams overthink this.\u003C/p>\n\u003Cp>They reach for complex solutions before they need them, create problems they don't have yet, and end up with architecture that's harder to maintain than my attempt at a sourdough starter during lockdown.\u003C/p>\n\u003Ch2>Your Three Real Options\u003C/h2>\n\u003Cp>\u003Cstrong>Row-Level Tenancy\u003C/strong> is the \"keep it simple\" approach. Add a tenant_id column, filter queries with middleware, and go home early. It's like having apartment units with really good locks. Not fancy, but it works. The catch? Query performance can get grumpy at scale.\u003C/p>\n\u003Cp>\u003Cstrong>Schema-Level Separation\u003C/strong> sits in the Goldilocks zone. Think of it as giving each tenant their own floor in the building. You get better isolation and lower costs since you're still sharing infrastructure. Plus, backups become way easier because nobody likes 3am restore failures.\u003C/p>\n\u003Cp>\u003Cstrong>Database-Level Isolation\u003C/strong> is the \"money is no object\" solution. Each tenant gets their own database. It's like buying everyone their own house instead of sharing a building. Secure? Yes. Expensive? Also yes.\u003C/p>\n\u003Ch2>Real Talk About Performance\u003C/h2>\n\u003Cp>Here's something those Medium articles won't tell you: a decent multi-tenant setup can boost resource usage by 20-30%. But there's a catch - you need to pick the right approach for your scale.\u003C/p>\n\u003Cp>Most single database instances handle up to 5,000 tenants just fine. Beyond that? You're probably making enough money to hire someone who specializes in this stuff.\u003C/p>\n\u003Ch2>Tools That Actually Matter\u003C/h2>\n\u003Cp>For a solid multi-tenant foundation, you really only need three things:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Migrations:\u003C/strong> \u003Ca href=\"https://www.red-gate.com/products/flyway/community/\" target=\"_blank\" rel=\"noopener\">Flyway\u003C/a> or \u003Ca href=\"https://www.liquibase.com/\" target=\"_blank\" rel=\"noopener\">Liquibase\u003C/a> (because writing migration scripts by hand is for masochists)\u003C/li>\n\u003Cli>\u003Cstrong>Database:\u003C/strong> \u003Ca href=\"https://www.postgresql.org/\" target=\"_blank\" rel=\"noopener\">PostgreSQL\u003C/a> with schema support (it's basically free multi-tenancy)\u003C/li>\n\u003Cli>\u003Cstrong>Connection Management:\u003C/strong> \u003Ca href=\"https://www.pgbouncer.org/\" target=\"_blank\" rel=\"noopener\">PgBouncer\u003C/a> (so connection pooling doesn't become your full-time job)\u003C/li>\n\u003C/ul>\n\u003Cp>Everything else is just extra credit.\u003C/p>\n\u003Ch2>How to Mess This Up\u003C/h2>\n\u003Cp>The three quickest ways to tank your multi-tenant system:\u003C/p>\n\u003Cul>\n\u003Cli>Building the \"perfect\" solution on day one (it doesn't exist)\u003C/li>\n\u003Cli>Ignoring backup/restore until production is on fire\u003C/li>\n\u003Cli>Sharing connection pools between tenants (ask me how I know this is bad)\u003C/li>\n\u003C/ul>","foreground",{"id":447,"background":750,"padding":751,"background_image":8,"blocks":752},"primary-light","normal",[753],{"id":754,"collection":441,"item":755},90,"3ef03a7c-3640-4c70-9612-32ea9a2cf83e",{"id":755,"content":757,"color":748},"\u003Ch3>\u003Cstrong>📢 \u003C/strong>\u003Cstrong>Marketing team made me put this here&nbsp;\u003C/strong>\u003C/h3>\n\u003Cp>If you're looking to jumpstart your multi-tenant app, \u003Ca href=\"https://directus.io\" target=\"_blank\" rel=\"noopener\">Directus handles all of this out of the box\u003C/a>. Row-level security, schema management, the whole deal. No, I won't tell you it's \"revolutionizing\" anything - it just works. Check it out if you want.\u003C/p>",{"id":451,"content":759,"color":748},"\u003Ch2>The Path Forward\u003C/h2>\n\u003Cp>Start simple. Row-level tenancy works for most apps starting out. Watch your per-tenant metrics, plan for reasonable growth, but don't overdo it. The best architecture is one that lets you sleep at night while keeping your data safe and your costs reasonable.\u003C/p>\n\u003Cp>Sometimes that's just a tenant_id column and some middleware. \u003Cem>And that's okay.\u003C/em>\u003C/p>\n\u003Cp>And if someone claims there's only one \"right way\" to do multi-tenancy, they're either selling something or haven't built enough systems to know better.\u003C/p>",1773850377742]