{"items":[{"title":"From Six Lines to a Working Full-Stack App","slug":"from-six-lines-to-a-working-full-stack-app","summary":"Hand a coding agent a six-line brief and get a running .NET and Vue app, with sample data and a clickable UI, in about half an hour. Step by step, with no license and no account.","publishedOn":"2026-09-10T21:44:11.1908489Z","categories":[{"name":".NET","slug":"net"},{"name":"Vue","slug":"vue"},{"name":"Architecture","slug":"architecture"},{"name":"Tooling","slug":"tooling"}],"tags":["aspnetcore","mcp","ai-agents"],"imageUrl":"https://blog.regira.com/media/32","readMinutes":8,"series":"Building apps with an AI agent","seriesUrl":"https://blog.regira.com/series/building-apps-with-an-ai-agent","url":"https://blog.regira.com/from-six-lines-to-a-working-full-stack-app"},{"title":"From Query Parameters to a Composable Filter Pipeline","slug":"from-query-parameters-to-a-composable-filter-pipeline","summary":"Search screens that stay simple as the filters pile up: name what users can filter on once, and let the database do the work. Most APIs grow a tangle of optional parameters nobody tests instead.","publishedOn":"2026-08-12T05:18:57.8837875Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["aspnetcore","api-design","searchobject"],"imageUrl":"https://blog.regira.com/media/20","readMinutes":8,"series":"Filtering in Regira Entities","seriesUrl":"https://blog.regira.com/series/filtering-in-regira-entities","url":"https://blog.regira.com/from-query-parameters-to-a-composable-filter-pipeline"},{"title":"List Screens That Survive the Back Button","slug":"list-screens-that-survive-the-back-button","summary":"A list screen users can bookmark, share and hit Back on without losing their filters, and that never shows an error over data that loaded fine. The rules behind it, and the Vue composables that apply them.","publishedOn":"2026-08-18T10:17:57.8837875Z","categories":[{"name":"TypeScript","slug":"typescript"},{"name":"Vue","slug":"vue"},{"name":"Architecture","slug":"architecture"}],"tags":["composables","spa"],"imageUrl":"https://blog.regira.com/media/5","readMinutes":11,"series":"Entities front-end","seriesUrl":"https://blog.regira.com/series/entities-front-end","url":"https://blog.regira.com/list-screens-that-survive-the-back-button"},{"title":"How to Query Hierarchies at Any Depth with EF Core","slug":"how-to-query-hierarchies-at-any-depth-with-ef-core","summary":"Answer 'everything under X' for category trees, org charts and folders, at any depth. Three approaches, from one that works on any database to one that scales to millions of rows, and how to pick.","publishedOn":"2026-08-21T06:00:00Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["sql-server","hierarchies","recursive-cte"],"imageUrl":"https://blog.regira.com/media/3","readMinutes":17,"series":"Hierarchical data","seriesUrl":"https://blog.regira.com/series/hierarchical-data","url":"https://blog.regira.com/how-to-query-hierarchies-at-any-depth-with-ef-core"},{"title":"Test on Disk, Ship to the Cloud","slug":"test-on-disk-ship-to-the-cloud","summary":"Keep file storage behind one interface and let each environment choose disk, network share or Azure in configuration. Tests run without cloud credentials, and moving your files later is a copy job, not a rewrite. Uploads are typed by the server, so none can pose as a page of your site.","publishedOn":"2026-08-05T08:05:57.8837875Z","categories":[{"name":".NET","slug":"net"},{"name":"Tips & Tricks","slug":"tips-tricks"}],"tags":["csharp","storage","azure","testing"],"imageUrl":"https://blog.regira.com/media/29","readMinutes":6,"series":"File storage behind one interface","seriesUrl":"https://blog.regira.com/series/file-storage-behind-one-interface","url":"https://blog.regira.com/test-on-disk-ship-to-the-cloud"},{"title":"Westeros, the Iron Throne, and a Model for Complex Relationships","slug":"westeros-the-iron-throne-and-a-model-for-complex-relationships","summary":"One table for every customer, supplier and employee, with roles and alliances as dated relationships instead of extra tables. Tested on Westeros, where everyone knows who betrayed whom and when.","publishedOn":"2026-08-14T10:08:57.8837875Z","categories":[{"name":".NET","slug":"net"},{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["csharp","domain-modeling","hierarchies","game-of-thrones","treelist"],"imageUrl":"https://blog.regira.com/media/10","readMinutes":14,"series":"People, organisations and alliances","seriesUrl":"https://blog.regira.com/series/people-organisations-and-alliances","url":"https://blog.regira.com/westeros-the-iron-throne-and-a-model-for-complex-relationships"},{"title":"When Two People Edit the Same Record","slug":"when-two-people-edit-the-same-record","summary":"When two people save the same record, the second save is refused instead of quietly erasing the first, whichever database the application runs on. The second user reloads and re-applies their change.","publishedOn":"2026-09-27T21:23:56.4974944Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["aspnetcore","api-design","concurrency"],"imageUrl":"https://blog.regira.com/media/111","readMinutes":9,"series":"Writing in Regira Entities","seriesUrl":"https://blog.regira.com/series/writing-in-regira-entities","url":"https://blog.regira.com/when-two-people-edit-the-same-record"},{"title":"Reviewing an App You Didn't Write","slug":"reviewing-an-app-you-didnt-write","summary":"When an agent builds the app, a framework that owns the plumbing shrinks the review to the part that is your business. What to read first: which questions the API answers, what a save may change, and which rules run every time.","publishedOn":"2026-09-20T10:46:10.4979809Z","categories":[{"name":".NET","slug":"net"},{"name":"Architecture","slug":"architecture"},{"name":"Tooling","slug":"tooling"}],"tags":["aspnetcore","mcp","ai-agents"],"imageUrl":"https://blog.regira.com/media/60","readMinutes":6,"series":"Building apps with an AI agent","seriesUrl":"https://blog.regira.com/series/building-apps-with-an-ai-agent","url":"https://blog.regira.com/reviewing-an-app-you-didnt-write"},{"title":"Omitted Is Not Empty","slug":"omitted-is-not-empty","summary":"Saving a record from a small form should never wipe the items attached to it, while the full edit screen can still remove them all. How an API tells an omitted list from an empty one, and what a form sends for a row the user removed.","publishedOn":"2026-09-13T18:49:03.5905304Z","categories":[{"name":"Data & EF Core","slug":"data-ef-core"},{"name":"Architecture","slug":"architecture"}],"tags":["aspnetcore","api-design"],"imageUrl":"https://blog.regira.com/media/52","readMinutes":7,"series":"Writing in Regira Entities","seriesUrl":"https://blog.regira.com/series/writing-in-regira-entities","url":"https://blog.regira.com/omitted-is-not-empty"},{"title":"Stop the Agent from Guessing","slug":"stop-the-agent-from-guessing","summary":"A coding agent built working apps on a framework it had never seen, without inventing a single method. The reason is documentation that lives with the code, is served one piece at a time, and tells the agent what to do next and how to check it worked.","publishedOn":"2026-09-12T21:10:56.2691858Z","categories":[{"name":".NET","slug":"net"},{"name":"Architecture","slug":"architecture"},{"name":"Tooling","slug":"tooling"}],"tags":["aspnetcore","mcp","ai-agents"],"imageUrl":"https://blog.regira.com/media/40","readMinutes":8,"series":"Building apps with an AI agent","seriesUrl":"https://blog.regira.com/series/building-apps-with-an-ai-agent","url":"https://blog.regira.com/stop-the-agent-from-guessing"},{"title":"What Happens When a Simple App Brief Gets Complicated?","slug":"what-happens-when-a-simple-app-brief-gets-complicated","summary":"Before an agent builds a bigger app, sort each request into what the framework provides, what the agent must assemble, and what is missing. A plan for a shopping-list app with sign-in, sharing, photos and offline use, and what changes when an app keeps growing after its first run.","publishedOn":"2026-09-10T21:44:31.1618187Z","categories":[{"name":".NET","slug":"net"},{"name":"Vue","slug":"vue"},{"name":"Architecture","slug":"architecture"}],"tags":["aspnetcore","mcp","ai-agents"],"imageUrl":"https://blog.regira.com/media/36","readMinutes":11,"series":"Building apps with an AI agent","seriesUrl":"https://blog.regira.com/series/building-apps-with-an-ai-agent","url":"https://blog.regira.com/what-happens-when-a-simple-app-brief-gets-complicated"},{"title":"Page Views Without a Tracking Script","slug":"page-views-without-a-tracking-script","summary":"Know how many people read your site and where they come from, without a third-party script, a cookie or a consent banner. What the blog you are reading records, what it cannot, and how crawlers are kept out of the count.","publishedOn":"2026-09-07T20:36:24.6418397Z","categories":[{"name":".NET","slug":"net"},{"name":"Architecture","slug":"architecture"}],"tags":["aspnetcore","analytics","privacy"],"imageUrl":"https://blog.regira.com/media/30","readMinutes":10,"url":"https://blog.regira.com/page-views-without-a-tracking-script"}],"count":26,"page":1,"pageSize":12}