diff --git a/feed.xml b/feed.xml index 1e8c947..3241ecc 100644 --- a/feed.xml +++ b/feed.xml @@ -10,7 +10,7 @@ razor-ssg - Thu, 31 Oct 2024 15:24:28 GMT + Thu, 31 Oct 2024 15:55:00 GMT email@example.org (Razor SSG) email@example.org (Razor SSG) diff --git a/meta/2024/all.json b/meta/2024/all.json index e216d4a..8234daa 100644 --- a/meta/2024/all.json +++ b/meta/2024/all.json @@ -1 +1 @@ -{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[],"videos":[],"posts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","image":"https://images.unsplash.com/photo-1482442120256-9c03866de390?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-podcasts","wordCount":1028,"lineCount":167},{"slug":"jwt-identity-auth","draft":false,"title":"ASP.NET Core JWT Identity Auth","summary":"Learn about integration and value added features of ASP.NET Core JWT Identity Auth","image":"https://images.unsplash.com/photo-1618482914248-29272d021005?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["servicestack",".net8","auth"],"date":"\/Date(1707609600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jwt-identity-auth","wordCount":1087,"lineCount":238},{"slug":"identity-auth-admin-ui","draft":false,"title":"Built-In Identity Auth Admin UI","summary":"Explore the new Identity Auth Admin UI for creating and managing Identity Auth users in .NET 8","image":"https://images.unsplash.com/photo-1563920443079-783e5c786b83?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","auth"],"date":"\/Date(1707523200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/identity-auth-admin-ui","wordCount":654,"lineCount":166},{"slug":"system-text-json-apis","draft":false,"title":"System.Text.Json ServiceStack APIs","summary":"ServiceStack .NET 8+ APIs can now be configured to use high-performance async System.Text.Json serialization","image":"https://images.unsplash.com/photo-1644325349124-d1756b79dd42?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["servicestack",".net8","json","apis"],"date":"\/Date(1707436800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/system-text-json-apis","wordCount":944,"lineCount":213},{"slug":"openapi-v3","draft":false,"title":"OpenAPI v3 and Swagger UI","summary":"A walkthrough of the new OpenAPI v3 support in ServiceStack 8.1","image":"https://images.unsplash.com/photo-1496478981722-3ae516118a04?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["openapi",".net8"],"date":"\/Date(1707350400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/openapi-v3","wordCount":1195,"lineCount":201},{"slug":"servicestack-endpoint-routing","draft":false,"title":"ServiceStack Endpoint Routing","summary":"ServiceStack .NET 8 is now more integrated then ever with support for ASP.NET Core Endpoint Routing and IOC","image":"https://images.unsplash.com/photo-1510022151265-1bb84d406531?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","apis"],"date":"\/Date(1707264000000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/servicestack-endpoint-routing","wordCount":3169,"lineCount":620}],"podcasts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://media.servicestack.com/podcasts/razor-ssg-podcasts.mp3","wordCount":126,"lineCount":22},{"slug":"scalable-sqlite","draft":false,"title":"Scalable SQLite","summary":"Exploring different techniques in ServiceStack for building maximum value, high-performance Scalable SQLite Web Apps","tags":["sqlite","performance","scalability"],"date":"\/Date(1726704000000-0000)\/","url":"https://media.servicestack.com/podcasts/scalable-sqlite.mp3","wordCount":136,"lineCount":22},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite Request Logging","summary":"Checking out ServiceStack's new SQLite-backed Request Logs feature and enhanced log querying and filtering in the Admin UI","tags":["sqlite","logging","admin-ui","api"],"date":"\/Date(1726531200000-0000)\/","url":"https://media.servicestack.com/podcasts/sqlite-request-logs.mp3","wordCount":162,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"Background Jobs","summary":"Taking a deep dive into Background Jobs, a new library for .NET 8 Apps for simplifying task scheduling and management","tags":["jobs","admin-ui","commands","api"],"date":"\/Date(1726099200000-0000)\/","url":"https://media.servicestack.com/podcasts/background-jobs.mp3","wordCount":517,"lineCount":51},{"slug":"v8-4-release","draft":false,"title":"ServiceStack v8.4 Release","summary":"The latest features and improvements in ServiceStack v8.4 covering Background Jobs, SQLite Request Logs, Scalable SQLite Apps and more!","tags":["release","jobs","logging","admin-ui","commands","api"],"date":"\/Date(1726012800000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-4-release.mp3","wordCount":545,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize Commands to build more robust and observable systems","tags":["commands","admin-ui","api"],"date":"\/Date(1719964800000-0000)\/","url":"https://media.servicestack.com/podcasts/commands-feature.mp3","wordCount":153,"lineCount":31},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","summary":"Taking a look at the simple \"user-free\" Auth story made possible with API Keys and Admin UI that's ideal for .NET 8 Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":170,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new API Keys Identity Auth feature and how its Admin UI enables simple fine-grained access control in ServiceStack .NET 8 APIs","tags":["apikeys",".net8","auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikeys.mp3","wordCount":181,"lineCount":37},{"slug":"v8-3-release","draft":false,"title":"ServiceStack v8.3 Release","summary":"The latest features and improvements in ServiceStack v8.3 covering Commands Feature, API Keys, Integrated Admin UIs and more!","tags":["release","apikeys","admin-ui","commands","api"],"date":"\/Date(1718582400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-3-release.mp3","wordCount":187,"lineCount":42},{"slug":"redis-outputcache","draft":false,"title":"ASP.NET Core Output Caching","summary":"A look at how to use ASP.NET Core Output Caching and ServiceStack.Redis to cache the response of ServiceStack APIs in Redis","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://media.servicestack.com/podcasts/redis-outputcache.mp3","wordCount":138,"lineCount":20},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"ASP.NET Core Rate Limiter Middleware","summary":"A guide explaining how ASP.NET Core's Rate Limiter Middleware can be used to protect ServiceStack APIs and Apps from abuse","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://media.servicestack.com/podcasts/asp-rate-limiter-middleware.mp3","wordCount":174,"lineCount":26},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"A tour of the features in the new enhanced Vite TypeScript React SPA template for .NET 8","tags":["template","react",".net8","autoquery"],"date":"\/Date(1709683200000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-react-spa-template.mp3","wordCount":670,"lineCount":43},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Getting to know the advanced features and capabilities of the enhanced Vite TypeScript Vue SPA template for .NET 8","tags":["template","vue",".net8","autoquery"],"date":"\/Date(1709596800000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-vue-spa-template.mp3","wordCount":232,"lineCount":43},{"slug":"v8-2-release","draft":false,"title":"ServiceStack v8.2 Release","summary":"All about ServiceStack v8.2 Release new Vue & React Vite SPA Tailwind Markdown powered Templates, integrated Identity Auth, new Kotlin Compose Multiplatform template and new Vite Press Plugin","tags":["release","vue","react","vite","markdown","kotlin"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-2-release.mp3","wordCount":797,"lineCount":54},{"slug":"v8-1-release","draft":false,"title":"ServiceStack v8.1 Release","summary":"ServiceStack v8.1 is here with a host of new features including full integration with Identity Auth, ASP .NET IOC, Endpoint Routing, System.Text.Json APIs, enhanced Admin UIs with JWT support, and much more!","tags":["release","identity-auth","ioc","json","openapi","swagger"],"date":"\/Date(1707177600000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-1-release.mp3","wordCount":245,"lineCount":48}]} \ No newline at end of file +{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[],"videos":[],"posts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","image":"https://images.unsplash.com/photo-1482442120256-9c03866de390?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-podcasts","wordCount":1028,"lineCount":167},{"slug":"jwt-identity-auth","draft":false,"title":"ASP.NET Core JWT Identity Auth","summary":"Learn about integration and value added features of ASP.NET Core JWT Identity Auth","image":"https://images.unsplash.com/photo-1618482914248-29272d021005?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["servicestack",".net8","auth"],"date":"\/Date(1707609600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jwt-identity-auth","wordCount":1087,"lineCount":238},{"slug":"identity-auth-admin-ui","draft":false,"title":"Built-In Identity Auth Admin UI","summary":"Explore the new Identity Auth Admin UI for creating and managing Identity Auth users in .NET 8","image":"https://images.unsplash.com/photo-1563920443079-783e5c786b83?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","auth"],"date":"\/Date(1707523200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/identity-auth-admin-ui","wordCount":654,"lineCount":166},{"slug":"system-text-json-apis","draft":false,"title":"System.Text.Json ServiceStack APIs","summary":"ServiceStack .NET 8+ APIs can now be configured to use high-performance async System.Text.Json serialization","image":"https://images.unsplash.com/photo-1644325349124-d1756b79dd42?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["servicestack",".net8","json","apis"],"date":"\/Date(1707436800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/system-text-json-apis","wordCount":944,"lineCount":213},{"slug":"openapi-v3","draft":false,"title":"OpenAPI v3 and Swagger UI","summary":"A walkthrough of the new OpenAPI v3 support in ServiceStack 8.1","image":"https://images.unsplash.com/photo-1496478981722-3ae516118a04?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["openapi",".net8"],"date":"\/Date(1707350400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/openapi-v3","wordCount":1195,"lineCount":201},{"slug":"servicestack-endpoint-routing","draft":false,"title":"ServiceStack Endpoint Routing","summary":"ServiceStack .NET 8 is now more integrated then ever with support for ASP.NET Core Endpoint Routing and IOC","image":"https://images.unsplash.com/photo-1510022151265-1bb84d406531?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","apis"],"date":"\/Date(1707264000000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/servicestack-endpoint-routing","wordCount":3169,"lineCount":620}],"podcasts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://media.servicestack.com/podcasts/razor-ssg-podcasts.mp3","wordCount":126,"lineCount":22},{"slug":"scalable-sqlite","draft":false,"title":"Scalable SQLite","summary":"Exploring different techniques in ServiceStack for building maximum value, high-performance Scalable SQLite Web Apps","tags":["sqlite","performance","scalability"],"date":"\/Date(1726704000000-0000)\/","url":"https://media.servicestack.com/podcasts/scalable-sqlite.mp3","wordCount":136,"lineCount":22},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite Request Logging","summary":"Checking out ServiceStack's new SQLite-backed Request Logs feature and enhanced log querying and filtering in the Admin UI","tags":["sqlite","logging","admin-ui","api"],"date":"\/Date(1726531200000-0000)\/","url":"https://media.servicestack.com/podcasts/sqlite-request-logs.mp3","wordCount":162,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"Background Jobs","summary":"Taking a deep dive into Background Jobs, a new library for .NET 8 Apps for simplifying task scheduling and management","tags":["jobs","admin-ui","commands","api"],"date":"\/Date(1726099200000-0000)\/","url":"https://media.servicestack.com/podcasts/background-jobs.mp3","wordCount":517,"lineCount":51},{"slug":"v8-4-release","draft":false,"title":"ServiceStack v8.4 Release","summary":"The latest features and improvements in ServiceStack v8.4 covering Background Jobs, SQLite Request Logs, Scalable SQLite Apps and more!","tags":["release","jobs","logging","admin-ui","commands","api"],"date":"\/Date(1726012800000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-4-release.mp3","wordCount":545,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize Commands to build more robust and observable systems","tags":["commands","admin-ui","api"],"date":"\/Date(1719964800000-0000)\/","url":"https://media.servicestack.com/podcasts/commands-feature.mp3","wordCount":153,"lineCount":31},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","summary":"Taking a look at the simple \"user-free\" Auth story made possible with API Keys and Admin UI that's ideal for .NET 8 Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":170,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new API Keys Identity Auth feature and how its Admin UI enables simple fine-grained access control in ServiceStack .NET 8 APIs","tags":["apikeys",".net8","auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikeys.mp3","wordCount":181,"lineCount":37},{"slug":"v8-3-release","draft":false,"title":"ServiceStack v8.3 Release","summary":"The latest features and improvements in ServiceStack v8.3 covering Commands Feature, API Keys, Integrated Admin UIs and more!","tags":["release","apikeys","admin-ui","commands","api"],"date":"\/Date(1718582400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-3-release.mp3","wordCount":187,"lineCount":42},{"slug":"redis-outputcache","draft":false,"title":"ASP.NET Core Output Caching","summary":"A look at how to use ASP.NET Core Output Caching and ServiceStack.Redis to cache the response of ServiceStack APIs in Redis","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://media.servicestack.com/podcasts/redis-outputcache.mp3","wordCount":138,"lineCount":20},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"ASP.NET Core Rate Limiter Middleware","summary":"A guide explaining how ASP.NET Core's Rate Limiter Middleware can be used to protect ServiceStack APIs and Apps from abuse","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://media.servicestack.com/podcasts/asp-rate-limiter-middleware.mp3","wordCount":174,"lineCount":26},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"A tour of the features in the new enhanced Vite TypeScript React SPA template for .NET 8","tags":["template","react",".net8","autoquery"],"date":"\/Date(1709683200000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-react-spa-template.mp3","wordCount":670,"lineCount":43},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Getting to know the advanced features and capabilities of the enhanced Vite TypeScript Vue SPA template for .NET 8","tags":["template","vue",".net8","autoquery"],"date":"\/Date(1709596800000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-vue-spa-template.mp3","wordCount":232,"lineCount":43},{"slug":"v8-2-release","draft":false,"title":"ServiceStack v8.2 Release","summary":"All about ServiceStack v8.2 Release new Vue & React Vite SPA Tailwind Markdown powered Templates, integrated Identity Auth, new Kotlin Compose Multiplatform template and new Vite Press Plugin","tags":["release","vue","react","vite","markdown","kotlin"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-2-release.mp3","wordCount":797,"lineCount":54},{"slug":"v8-1-release","draft":false,"title":"ServiceStack v8.1 Release","summary":"ServiceStack v8.1 is here with a host of new features including full integration with Identity Auth, ASP .NET IOC, Endpoint Routing, System.Text.Json APIs, enhanced Admin UIs with JWT support, and much more!","tags":["release","identity-auth","ioc","json","openapi","swagger"],"date":"\/Date(1707177600000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-1-release.mp3","wordCount":245,"lineCount":48}]} \ No newline at end of file diff --git a/meta/2024/pages.json b/meta/2024/pages.json index 78b6fcf..a07b09b 100644 --- a/meta/2024/pages.json +++ b/meta/2024/pages.json @@ -1 +1 @@ -[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}] \ No newline at end of file +[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}] \ No newline at end of file diff --git a/meta/all.json b/meta/all.json index 8838114..27ca994 100644 --- a/meta/all.json +++ b/meta/all.json @@ -1 +1 @@ -{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730388242354)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"feature1","draft":false,"title":"Planetaria","image":"./img/whatsnew/Planetaria/cover.svg","tags":[],"date":"\/Date(1679961600000-0000)\/","content":"Welcome to the world of Planetaria, a groundbreaking new product that is poised to revolutionize the way we explore space. \nAt Planetaria, we believe that the wonders of space should be accessible to everyone, not just a privileged few. \nThat's why we've created technology that empowers civilians to explore space on their own terms, without needing to rely \non government agencies or billionaire entrepreneurs.\n\nOur mission is to democratize space exploration and enable people from all walks of life to experience the thrill of \nventuring beyond our planet. With Planetaria, you'll have the tools and resources you need to embark on your own space missions, \nwhether you're a hobbyist, a scientist, or an adventurer. From designing and building your own spacecraft to conducting experiments \nin microgravity, the possibilities are endless.","url":"http://planetaria.tech","wordCount":135,"lineCount":14,"group":"Planetaria"},{"slug":"feature1","draft":false,"title":"OpenShuttle","image":"./img/whatsnew/OpenShuttle/cover.svg","tags":[],"date":"\/Date(1679097600000-0000)\/","content":"Introducing OpenShuttle, the revolutionary new product that is set to change the space industry forever. OpenShuttle is a cutting-edge\nplatform that provides detailed schematics for the very first rocket designed by me, which successfully made it to orbit. \nThis incredible product is designed to give space enthusiasts and professionals alike access to the groundbreaking technology that \nwas used to achieve this monumental feat.\n\nOpenShuttle is the result of years of hard work and dedication, and I am thrilled to finally be able to share it with the world. \nWith its detailed schematics, OpenShuttle provides an unprecedented level of insight into the inner workings of the rocket, \nallowing users to explore the technology that made history.","url":"https://example.org","wordCount":119,"lineCount":13,"group":"OpenShuttle"},{"slug":"feature1","draft":false,"title":"Animaginary","image":"./img/whatsnew/Animaginary/cover.svg","tags":[],"date":"\/Date(1678233600000-0000)\/","content":"Introducing Animaginary, the next generation web animation library that's taking the world by storm. \nAnimaginary is a high performance library that's hand-written in optimized WebAssembly (WASM), \nmaking it one of the fastest and most efficient animation tools available today.\n\nBuilt with performance in mind, Animaginary delivers stunning animations that are both smooth and seamless, even on lower-end devices. \nThe library is designed to provide developers with a powerful toolset that makes it easy to create \ncomplex animations that would otherwise be time-consuming and challenging to build.","url":"https://example.org","wordCount":92,"lineCount":12,"group":"Animaginary"}],"videos":[{"slug":"video1","draft":false,"title":"Using Razor SSG to Create Websites in GitHub Codespaces","tags":["razor-pages","ssg","tailwind","codespaces"],"date":"\/Date(1680048000000+0000)\/","content":"This video takes an in-depth look at the [razor-ssg](https://razor-ssg.web-templates.io) ServiceStack template, a powerful tool that \nharnesses the power of .NET Razor Pages to provide seamless static site generation (SSG) capabilities \n\nWith GitHub Codespaces integration, you can develop, test, and manage your application all within your browser, eliminating the need \nfor a dedicated development environment and expediting your workflow, which can all be done on the go from an iPad","url":"https://youtu.be/MRQMBrXi5Sc","wordCount":88,"lineCount":12,"group":"projects"},{"slug":"video1","draft":false,"title":"Instantly Manage your data using AutoQueryGrid Vue","tags":["vue","autoquery"],"date":"\/Date(1678924800000+0000)\/","content":"This walkthrough explores the ServiceStack Vue 3 library and the functionality of the AutoQueryGrid component. The AutoQueryGrid component simplifies the integration of AutoQuery services by generating a customizable UI. \n\nBy following this guide, you'll learn how to effectively utilize these tools to enhance your application's user interface and overall user experience.","url":"https://youtu.be/znCoC-Ct0Ps","wordCount":63,"lineCount":10,"group":"vue"},{"slug":"video2","draft":false,"title":"Vue 3 Tailwind Components Library","tags":["vue","autoquery"],"date":"\/Date(1676332800000+0000)\/","content":"In this video, we demonstrate using the @servicestack/vue components library for Vue.js 3 Multipage Apps (MPAs) along with the `vue-mjs` template. \n\nThe template illustrates building content-heavy or complex sites while avoiding the intricacies of Single Page Apps (SPAs) through the use of JavaScript Modules, Tailwind, Vue.js, Razor Pages, and ServiceStack.","url":"https://youtu.be/YIa0w6whe2U","wordCount":61,"lineCount":9,"group":"vue"},{"slug":"video2","draft":false,"title":"Modern Razor Pages & MVC .NET Tailwind templates","tags":["razor-pages","mvc","tailwind","vue"],"date":"\/Date(1625529600000+0000)\/","content":"ServiceStack templates provide a wide range of options when it comes to using Razor Pages in your .NET application\n\nThese templates come with Tailwind, JS Modules, and Vue components already built-in,\nmaking it easy to build hybrid apps containing both Server-Side Rendering (SSR) and static resources\n\n### Live Demos\n- https://razor-tailwind.web-templates.io\n- https://web-tailwind.web-templates.io\n- https://mvc-tailwind.web-templates.io\n- https://vue-mjs.web-templates.io\n- https://razor-pages.web-templates.io","url":"https://youtu.be/SyppvQB7IPs","wordCount":73,"lineCount":18,"group":"projects"}],"posts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","image":"https://images.unsplash.com/photo-1482442120256-9c03866de390?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-podcasts","wordCount":1028,"lineCount":167},{"slug":"jwt-identity-auth","draft":false,"title":"ASP.NET Core JWT Identity Auth","summary":"Learn about integration and value added features of ASP.NET Core JWT Identity Auth","image":"https://images.unsplash.com/photo-1618482914248-29272d021005?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["servicestack",".net8","auth"],"date":"\/Date(1707609600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jwt-identity-auth","wordCount":1087,"lineCount":238},{"slug":"identity-auth-admin-ui","draft":false,"title":"Built-In Identity Auth Admin UI","summary":"Explore the new Identity Auth Admin UI for creating and managing Identity Auth users in .NET 8","image":"https://images.unsplash.com/photo-1563920443079-783e5c786b83?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","auth"],"date":"\/Date(1707523200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/identity-auth-admin-ui","wordCount":654,"lineCount":166},{"slug":"system-text-json-apis","draft":false,"title":"System.Text.Json ServiceStack APIs","summary":"ServiceStack .NET 8+ APIs can now be configured to use high-performance async System.Text.Json serialization","image":"https://images.unsplash.com/photo-1644325349124-d1756b79dd42?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["servicestack",".net8","json","apis"],"date":"\/Date(1707436800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/system-text-json-apis","wordCount":944,"lineCount":213},{"slug":"openapi-v3","draft":false,"title":"OpenAPI v3 and Swagger UI","summary":"A walkthrough of the new OpenAPI v3 support in ServiceStack 8.1","image":"https://images.unsplash.com/photo-1496478981722-3ae516118a04?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["openapi",".net8"],"date":"\/Date(1707350400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/openapi-v3","wordCount":1195,"lineCount":201},{"slug":"servicestack-endpoint-routing","draft":false,"title":"ServiceStack Endpoint Routing","summary":"ServiceStack .NET 8 is now more integrated then ever with support for ASP.NET Core Endpoint Routing and IOC","image":"https://images.unsplash.com/photo-1510022151265-1bb84d406531?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","apis"],"date":"\/Date(1707264000000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/servicestack-endpoint-routing","wordCount":3169,"lineCount":620},{"slug":"razor-ssg-new-blog-features","draft":false,"title":"New Blogging features in Razor SSG","summary":"Explore the new Blogging Features in Razor SSG","image":"https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["razor","markdown","blog","dev"],"date":"\/Date(1692748800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-new-blog-features","wordCount":1301,"lineCount":337},{"slug":"razor-ssg","draft":false,"title":"Introducing Razor SSG","summary":"Create fast, beautiful statically rendered Razor Websites & Blogs","image":"https://images.unsplash.com/photo-1579767684138-a57e917d30aa?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["razor","markdown","blog","dev"],"date":"\/Date(1680134400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg","wordCount":3045,"lineCount":605},{"slug":"javascript","draft":false,"title":"Simple, Modern JavaScript","summary":"Learn about JS Modules, Vue 3 and available rich UI Components","image":"https://images.unsplash.com/photo-1497515114629-f71d768fd07c?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["js","dev"],"date":"\/Date(1675209600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/javascript","wordCount":3349,"lineCount":674},{"slug":"start","draft":false,"title":"Getting Started","summary":"Found out how to use these template features","image":"https://images.unsplash.com/photo-1533090161767-e6ffed986c88?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["js","dev","tailwind"],"date":"\/Date(1674259200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/start","wordCount":294,"lineCount":77},{"slug":"rider","draft":false,"title":"Develop using JetBrains Rider","summary":"Setting up & exploring development workflow in Rider","image":"https://images.unsplash.com/photo-1472289065668-ce650ac443d2?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["c#","dev"],"date":"\/Date(1673395200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/rider","wordCount":473,"lineCount":78},{"slug":"vs","draft":false,"title":"Develop using Visual Studio","summary":"Exploring development workflow in VS Code and Visual Studio .NET","image":"https://images.unsplash.com/photo-1513542789411-b6a5d4f31634?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["c#","dev"],"date":"\/Date(1673308800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/vs","wordCount":1326,"lineCount":76},{"slug":"deploy","draft":false,"title":"Deployment with GitHub Actions","summary":"Configuring your GitHub repo for SSH and CDN deployments","image":"https://images.unsplash.com/photo-1485841890310-6a055c88698a?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["github-actions","devops"],"date":"\/Date(1672531200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/deploy","wordCount":723,"lineCount":107},{"slug":"typography","draft":false,"title":"Tailwind Typography","summary":"tailwindcss/typography enabled for Markdown pages","image":"https://images.unsplash.com/photo-1497250681960-ef046c08a56e?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["tailwind","markdown"],"date":"\/Date(1672444800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/typography","wordCount":654,"lineCount":85},{"slug":"hetzner-cloud","draft":false,"title":"In pursuit of the best value US cloud provider","summary":"We've been using AWS at ServiceStack for 10+ years, it's served us well but suffers from complex & expensive pricing","image":"https://images.unsplash.com/photo-1451187580459-43490279c0fa?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["dev","hosting","devops"],"date":"\/Date(1662422400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/hetzner-cloud","wordCount":2712,"lineCount":227},{"slug":"typesense","draft":false,"title":"Real-time search with Typesense","summary":"As part of migrating docs to VitePress we've added UX improvements like instant search powered by Typesense!","image":"https://images.unsplash.com/photo-1473163928189-364b2c4e1135?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["dev","docs"],"date":"\/Date(1636329600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/typesense","wordCount":4546,"lineCount":386},{"slug":"jekyll-to-vitepress","draft":false,"title":"Migrating from Jekyll to VitePress","summary":"Since Jekyll support has been officially sunset, we decided to migrate our docs site to VitePress","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["docs","markdown"],"date":"\/Date(1635724800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jekyll-to-vitepress","wordCount":2481,"lineCount":355}],"podcasts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://media.servicestack.com/podcasts/razor-ssg-podcasts.mp3","wordCount":126,"lineCount":22},{"slug":"scalable-sqlite","draft":false,"title":"Scalable SQLite","summary":"Exploring different techniques in ServiceStack for building maximum value, high-performance Scalable SQLite Web Apps","tags":["sqlite","performance","scalability"],"date":"\/Date(1726704000000-0000)\/","url":"https://media.servicestack.com/podcasts/scalable-sqlite.mp3","wordCount":136,"lineCount":22},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite Request Logging","summary":"Checking out ServiceStack's new SQLite-backed Request Logs feature and enhanced log querying and filtering in the Admin UI","tags":["sqlite","logging","admin-ui","api"],"date":"\/Date(1726531200000-0000)\/","url":"https://media.servicestack.com/podcasts/sqlite-request-logs.mp3","wordCount":162,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"Background Jobs","summary":"Taking a deep dive into Background Jobs, a new library for .NET 8 Apps for simplifying task scheduling and management","tags":["jobs","admin-ui","commands","api"],"date":"\/Date(1726099200000-0000)\/","url":"https://media.servicestack.com/podcasts/background-jobs.mp3","wordCount":517,"lineCount":51},{"slug":"v8-4-release","draft":false,"title":"ServiceStack v8.4 Release","summary":"The latest features and improvements in ServiceStack v8.4 covering Background Jobs, SQLite Request Logs, Scalable SQLite Apps and more!","tags":["release","jobs","logging","admin-ui","commands","api"],"date":"\/Date(1726012800000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-4-release.mp3","wordCount":545,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize Commands to build more robust and observable systems","tags":["commands","admin-ui","api"],"date":"\/Date(1719964800000-0000)\/","url":"https://media.servicestack.com/podcasts/commands-feature.mp3","wordCount":153,"lineCount":31},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","summary":"Taking a look at the simple \"user-free\" Auth story made possible with API Keys and Admin UI that's ideal for .NET 8 Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":170,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new API Keys Identity Auth feature and how its Admin UI enables simple fine-grained access control in ServiceStack .NET 8 APIs","tags":["apikeys",".net8","auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikeys.mp3","wordCount":181,"lineCount":37},{"slug":"v8-3-release","draft":false,"title":"ServiceStack v8.3 Release","summary":"The latest features and improvements in ServiceStack v8.3 covering Commands Feature, API Keys, Integrated Admin UIs and more!","tags":["release","apikeys","admin-ui","commands","api"],"date":"\/Date(1718582400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-3-release.mp3","wordCount":187,"lineCount":42},{"slug":"redis-outputcache","draft":false,"title":"ASP.NET Core Output Caching","summary":"A look at how to use ASP.NET Core Output Caching and ServiceStack.Redis to cache the response of ServiceStack APIs in Redis","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://media.servicestack.com/podcasts/redis-outputcache.mp3","wordCount":138,"lineCount":20},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"ASP.NET Core Rate Limiter Middleware","summary":"A guide explaining how ASP.NET Core's Rate Limiter Middleware can be used to protect ServiceStack APIs and Apps from abuse","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://media.servicestack.com/podcasts/asp-rate-limiter-middleware.mp3","wordCount":174,"lineCount":26},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"A tour of the features in the new enhanced Vite TypeScript React SPA template for .NET 8","tags":["template","react",".net8","autoquery"],"date":"\/Date(1709683200000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-react-spa-template.mp3","wordCount":670,"lineCount":43},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Getting to know the advanced features and capabilities of the enhanced Vite TypeScript Vue SPA template for .NET 8","tags":["template","vue",".net8","autoquery"],"date":"\/Date(1709596800000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-vue-spa-template.mp3","wordCount":232,"lineCount":43},{"slug":"v8-2-release","draft":false,"title":"ServiceStack v8.2 Release","summary":"All about ServiceStack v8.2 Release new Vue & React Vite SPA Tailwind Markdown powered Templates, integrated Identity Auth, new Kotlin Compose Multiplatform template and new Vite Press Plugin","tags":["release","vue","react","vite","markdown","kotlin"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-2-release.mp3","wordCount":797,"lineCount":54},{"slug":"v8-1-release","draft":false,"title":"ServiceStack v8.1 Release","summary":"ServiceStack v8.1 is here with a host of new features including full integration with Identity Auth, ASP .NET IOC, Endpoint Routing, System.Text.Json APIs, enhanced Admin UIs with JWT support, and much more!","tags":["release","identity-auth","ioc","json","openapi","swagger"],"date":"\/Date(1707177600000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-1-release.mp3","wordCount":245,"lineCount":48},{"slug":"v8-0-release","draft":false,"title":"ServiceStack v8.0 Release","summary":"ServiceStack v8 is here with all packages now including .net8.0 builds, all Project Templates upgraded to .NET 8, GitHub Actions now using .NET 8 Docker containers, new Tailwind Blazor, Razor Pages & MVC Templates now using ASP .NET Identity Auth & EF","tags":["release",".net8","docker","identity-auth","blazor","mvc","razor"],"date":"\/Date(1700438400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-0-release.mp3","wordCount":1213,"lineCount":63}]} \ No newline at end of file +{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/community-rules","wordCount":408,"lineCount":37},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/privacy","wordCount":748,"lineCount":68},{"slug":"signup-confirmed","draft":false,"title":"Welcome to MyApp Newsletter","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"speaking","draft":false,"title":"Speaking","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/speaking","wordCount":266,"lineCount":47},{"slug":"uses","draft":false,"title":"Things I use & love","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/uses","wordCount":473,"lineCount":59},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1730390076054)\/","url":"https://razor-ssg.web-templates.io/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"feature1","draft":false,"title":"Planetaria","image":"./img/whatsnew/Planetaria/cover.svg","tags":[],"date":"\/Date(1679961600000-0000)\/","content":"Welcome to the world of Planetaria, a groundbreaking new product that is poised to revolutionize the way we explore space. \nAt Planetaria, we believe that the wonders of space should be accessible to everyone, not just a privileged few. \nThat's why we've created technology that empowers civilians to explore space on their own terms, without needing to rely \non government agencies or billionaire entrepreneurs.\n\nOur mission is to democratize space exploration and enable people from all walks of life to experience the thrill of \nventuring beyond our planet. With Planetaria, you'll have the tools and resources you need to embark on your own space missions, \nwhether you're a hobbyist, a scientist, or an adventurer. From designing and building your own spacecraft to conducting experiments \nin microgravity, the possibilities are endless.","url":"http://planetaria.tech","wordCount":135,"lineCount":14,"group":"Planetaria"},{"slug":"feature1","draft":false,"title":"OpenShuttle","image":"./img/whatsnew/OpenShuttle/cover.svg","tags":[],"date":"\/Date(1679097600000-0000)\/","content":"Introducing OpenShuttle, the revolutionary new product that is set to change the space industry forever. OpenShuttle is a cutting-edge\nplatform that provides detailed schematics for the very first rocket designed by me, which successfully made it to orbit. \nThis incredible product is designed to give space enthusiasts and professionals alike access to the groundbreaking technology that \nwas used to achieve this monumental feat.\n\nOpenShuttle is the result of years of hard work and dedication, and I am thrilled to finally be able to share it with the world. \nWith its detailed schematics, OpenShuttle provides an unprecedented level of insight into the inner workings of the rocket, \nallowing users to explore the technology that made history.","url":"https://example.org","wordCount":119,"lineCount":13,"group":"OpenShuttle"},{"slug":"feature1","draft":false,"title":"Animaginary","image":"./img/whatsnew/Animaginary/cover.svg","tags":[],"date":"\/Date(1678233600000-0000)\/","content":"Introducing Animaginary, the next generation web animation library that's taking the world by storm. \nAnimaginary is a high performance library that's hand-written in optimized WebAssembly (WASM), \nmaking it one of the fastest and most efficient animation tools available today.\n\nBuilt with performance in mind, Animaginary delivers stunning animations that are both smooth and seamless, even on lower-end devices. \nThe library is designed to provide developers with a powerful toolset that makes it easy to create \ncomplex animations that would otherwise be time-consuming and challenging to build.","url":"https://example.org","wordCount":92,"lineCount":12,"group":"Animaginary"}],"videos":[{"slug":"video1","draft":false,"title":"Using Razor SSG to Create Websites in GitHub Codespaces","tags":["razor-pages","ssg","tailwind","codespaces"],"date":"\/Date(1680048000000+0000)\/","content":"This video takes an in-depth look at the [razor-ssg](https://razor-ssg.web-templates.io) ServiceStack template, a powerful tool that \nharnesses the power of .NET Razor Pages to provide seamless static site generation (SSG) capabilities \n\nWith GitHub Codespaces integration, you can develop, test, and manage your application all within your browser, eliminating the need \nfor a dedicated development environment and expediting your workflow, which can all be done on the go from an iPad","url":"https://youtu.be/MRQMBrXi5Sc","wordCount":88,"lineCount":12,"group":"projects"},{"slug":"video1","draft":false,"title":"Instantly Manage your data using AutoQueryGrid Vue","tags":["vue","autoquery"],"date":"\/Date(1678924800000+0000)\/","content":"This walkthrough explores the ServiceStack Vue 3 library and the functionality of the AutoQueryGrid component. The AutoQueryGrid component simplifies the integration of AutoQuery services by generating a customizable UI. \n\nBy following this guide, you'll learn how to effectively utilize these tools to enhance your application's user interface and overall user experience.","url":"https://youtu.be/znCoC-Ct0Ps","wordCount":63,"lineCount":10,"group":"vue"},{"slug":"video2","draft":false,"title":"Vue 3 Tailwind Components Library","tags":["vue","autoquery"],"date":"\/Date(1676332800000+0000)\/","content":"In this video, we demonstrate using the @servicestack/vue components library for Vue.js 3 Multipage Apps (MPAs) along with the `vue-mjs` template. \n\nThe template illustrates building content-heavy or complex sites while avoiding the intricacies of Single Page Apps (SPAs) through the use of JavaScript Modules, Tailwind, Vue.js, Razor Pages, and ServiceStack.","url":"https://youtu.be/YIa0w6whe2U","wordCount":61,"lineCount":9,"group":"vue"},{"slug":"video2","draft":false,"title":"Modern Razor Pages & MVC .NET Tailwind templates","tags":["razor-pages","mvc","tailwind","vue"],"date":"\/Date(1625529600000+0000)\/","content":"ServiceStack templates provide a wide range of options when it comes to using Razor Pages in your .NET application\n\nThese templates come with Tailwind, JS Modules, and Vue components already built-in,\nmaking it easy to build hybrid apps containing both Server-Side Rendering (SSR) and static resources\n\n### Live Demos\n- https://razor-tailwind.web-templates.io\n- https://web-tailwind.web-templates.io\n- https://mvc-tailwind.web-templates.io\n- https://vue-mjs.web-templates.io\n- https://razor-pages.web-templates.io","url":"https://youtu.be/SyppvQB7IPs","wordCount":73,"lineCount":18,"group":"projects"}],"posts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","image":"https://images.unsplash.com/photo-1482442120256-9c03866de390?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-podcasts","wordCount":1028,"lineCount":167},{"slug":"jwt-identity-auth","draft":false,"title":"ASP.NET Core JWT Identity Auth","summary":"Learn about integration and value added features of ASP.NET Core JWT Identity Auth","image":"https://images.unsplash.com/photo-1618482914248-29272d021005?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["servicestack",".net8","auth"],"date":"\/Date(1707609600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jwt-identity-auth","wordCount":1087,"lineCount":238},{"slug":"identity-auth-admin-ui","draft":false,"title":"Built-In Identity Auth Admin UI","summary":"Explore the new Identity Auth Admin UI for creating and managing Identity Auth users in .NET 8","image":"https://images.unsplash.com/photo-1563920443079-783e5c786b83?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","auth"],"date":"\/Date(1707523200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/identity-auth-admin-ui","wordCount":654,"lineCount":166},{"slug":"system-text-json-apis","draft":false,"title":"System.Text.Json ServiceStack APIs","summary":"ServiceStack .NET 8+ APIs can now be configured to use high-performance async System.Text.Json serialization","image":"https://images.unsplash.com/photo-1644325349124-d1756b79dd42?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["servicestack",".net8","json","apis"],"date":"\/Date(1707436800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/system-text-json-apis","wordCount":944,"lineCount":213},{"slug":"openapi-v3","draft":false,"title":"OpenAPI v3 and Swagger UI","summary":"A walkthrough of the new OpenAPI v3 support in ServiceStack 8.1","image":"https://images.unsplash.com/photo-1496478981722-3ae516118a04?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["openapi",".net8"],"date":"\/Date(1707350400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/openapi-v3","wordCount":1195,"lineCount":201},{"slug":"servicestack-endpoint-routing","draft":false,"title":"ServiceStack Endpoint Routing","summary":"ServiceStack .NET 8 is now more integrated then ever with support for ASP.NET Core Endpoint Routing and IOC","image":"https://images.unsplash.com/photo-1510022151265-1bb84d406531?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["servicestack",".net8","apis"],"date":"\/Date(1707264000000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/servicestack-endpoint-routing","wordCount":3169,"lineCount":620},{"slug":"razor-ssg-new-blog-features","draft":false,"title":"New Blogging features in Razor SSG","summary":"Explore the new Blogging Features in Razor SSG","image":"https://images.unsplash.com/photo-1486312338219-ce68d2c6f44d?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["razor","markdown","blog","dev"],"date":"\/Date(1692748800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg-new-blog-features","wordCount":1301,"lineCount":337},{"slug":"razor-ssg","draft":false,"title":"Introducing Razor SSG","summary":"Create fast, beautiful statically rendered Razor Websites & Blogs","image":"https://images.unsplash.com/photo-1579767684138-a57e917d30aa?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["razor","markdown","blog","dev"],"date":"\/Date(1680134400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/razor-ssg","wordCount":3045,"lineCount":605},{"slug":"javascript","draft":false,"title":"Simple, Modern JavaScript","summary":"Learn about JS Modules, Vue 3 and available rich UI Components","image":"https://images.unsplash.com/photo-1497515114629-f71d768fd07c?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["js","dev"],"date":"\/Date(1675209600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/javascript","wordCount":3349,"lineCount":674},{"slug":"start","draft":false,"title":"Getting Started","summary":"Found out how to use these template features","image":"https://images.unsplash.com/photo-1533090161767-e6ffed986c88?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["js","dev","tailwind"],"date":"\/Date(1674259200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/start","wordCount":294,"lineCount":77},{"slug":"rider","draft":false,"title":"Develop using JetBrains Rider","summary":"Setting up & exploring development workflow in Rider","image":"https://images.unsplash.com/photo-1472289065668-ce650ac443d2?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["c#","dev"],"date":"\/Date(1673395200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/rider","wordCount":473,"lineCount":78},{"slug":"vs","draft":false,"title":"Develop using Visual Studio","summary":"Exploring development workflow in VS Code and Visual Studio .NET","image":"https://images.unsplash.com/photo-1513542789411-b6a5d4f31634?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["c#","dev"],"date":"\/Date(1673308800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/vs","wordCount":1326,"lineCount":76},{"slug":"deploy","draft":false,"title":"Deployment with GitHub Actions","summary":"Configuring your GitHub repo for SSH and CDN deployments","image":"https://images.unsplash.com/photo-1485841890310-6a055c88698a?crop=entropy&fit=crop&h=1000&w=2000","author":"Gayle Smith","tags":["github-actions","devops"],"date":"\/Date(1672531200000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/deploy","wordCount":723,"lineCount":107},{"slug":"typography","draft":false,"title":"Tailwind Typography","summary":"tailwindcss/typography enabled for Markdown pages","image":"https://images.unsplash.com/photo-1497250681960-ef046c08a56e?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["tailwind","markdown"],"date":"\/Date(1672444800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/typography","wordCount":654,"lineCount":85},{"slug":"hetzner-cloud","draft":false,"title":"In pursuit of the best value US cloud provider","summary":"We've been using AWS at ServiceStack for 10+ years, it's served us well but suffers from complex & expensive pricing","image":"https://images.unsplash.com/photo-1451187580459-43490279c0fa?crop=entropy&fit=crop&h=1000&w=2000","author":"Brandon Foley","tags":["dev","hosting","devops"],"date":"\/Date(1662422400000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/hetzner-cloud","wordCount":2712,"lineCount":227},{"slug":"typesense","draft":false,"title":"Real-time search with Typesense","summary":"As part of migrating docs to VitePress we've added UX improvements like instant search powered by Typesense!","image":"https://images.unsplash.com/photo-1473163928189-364b2c4e1135?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["dev","docs"],"date":"\/Date(1636329600000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/typesense","wordCount":4546,"lineCount":386},{"slug":"jekyll-to-vitepress","draft":false,"title":"Migrating from Jekyll to VitePress","summary":"Since Jekyll support has been officially sunset, we decided to migrate our docs site to VitePress","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Lucy Bates","tags":["docs","markdown"],"date":"\/Date(1635724800000-0000)\/","url":"https://razor-ssg.web-templates.io/posts/jekyll-to-vitepress","wordCount":2481,"lineCount":355}],"podcasts":[{"slug":"razor-ssg-podcasts","draft":false,"title":"Podcasts now in Razor SSG","summary":"Razor SSG now includes support for Podcasts","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://media.servicestack.com/podcasts/razor-ssg-podcasts.mp3","wordCount":126,"lineCount":22},{"slug":"scalable-sqlite","draft":false,"title":"Scalable SQLite","summary":"Exploring different techniques in ServiceStack for building maximum value, high-performance Scalable SQLite Web Apps","tags":["sqlite","performance","scalability"],"date":"\/Date(1726704000000-0000)\/","url":"https://media.servicestack.com/podcasts/scalable-sqlite.mp3","wordCount":136,"lineCount":22},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite Request Logging","summary":"Checking out ServiceStack's new SQLite-backed Request Logs feature and enhanced log querying and filtering in the Admin UI","tags":["sqlite","logging","admin-ui","api"],"date":"\/Date(1726531200000-0000)\/","url":"https://media.servicestack.com/podcasts/sqlite-request-logs.mp3","wordCount":162,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"Background Jobs","summary":"Taking a deep dive into Background Jobs, a new library for .NET 8 Apps for simplifying task scheduling and management","tags":["jobs","admin-ui","commands","api"],"date":"\/Date(1726099200000-0000)\/","url":"https://media.servicestack.com/podcasts/background-jobs.mp3","wordCount":517,"lineCount":51},{"slug":"v8-4-release","draft":false,"title":"ServiceStack v8.4 Release","summary":"The latest features and improvements in ServiceStack v8.4 covering Background Jobs, SQLite Request Logs, Scalable SQLite Apps and more!","tags":["release","jobs","logging","admin-ui","commands","api"],"date":"\/Date(1726012800000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-4-release.mp3","wordCount":545,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize Commands to build more robust and observable systems","tags":["commands","admin-ui","api"],"date":"\/Date(1719964800000-0000)\/","url":"https://media.servicestack.com/podcasts/commands-feature.mp3","wordCount":153,"lineCount":31},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","summary":"Taking a look at the simple \"user-free\" Auth story made possible with API Keys and Admin UI that's ideal for .NET 8 Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":170,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new API Keys Identity Auth feature and how its Admin UI enables simple fine-grained access control in ServiceStack .NET 8 APIs","tags":["apikeys",".net8","auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikeys.mp3","wordCount":181,"lineCount":37},{"slug":"v8-3-release","draft":false,"title":"ServiceStack v8.3 Release","summary":"The latest features and improvements in ServiceStack v8.3 covering Commands Feature, API Keys, Integrated Admin UIs and more!","tags":["release","apikeys","admin-ui","commands","api"],"date":"\/Date(1718582400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-3-release.mp3","wordCount":187,"lineCount":42},{"slug":"redis-outputcache","draft":false,"title":"ASP.NET Core Output Caching","summary":"A look at how to use ASP.NET Core Output Caching and ServiceStack.Redis to cache the response of ServiceStack APIs in Redis","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://media.servicestack.com/podcasts/redis-outputcache.mp3","wordCount":138,"lineCount":20},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"ASP.NET Core Rate Limiter Middleware","summary":"A guide explaining how ASP.NET Core's Rate Limiter Middleware can be used to protect ServiceStack APIs and Apps from abuse","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://media.servicestack.com/podcasts/asp-rate-limiter-middleware.mp3","wordCount":174,"lineCount":26},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"A tour of the features in the new enhanced Vite TypeScript React SPA template for .NET 8","tags":["template","react",".net8","autoquery"],"date":"\/Date(1709683200000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-react-spa-template.mp3","wordCount":670,"lineCount":43},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Getting to know the advanced features and capabilities of the enhanced Vite TypeScript Vue SPA template for .NET 8","tags":["template","vue",".net8","autoquery"],"date":"\/Date(1709596800000-0000)\/","url":"https://media.servicestack.com/podcasts/net8-vue-spa-template.mp3","wordCount":232,"lineCount":43},{"slug":"v8-2-release","draft":false,"title":"ServiceStack v8.2 Release","summary":"All about ServiceStack v8.2 Release new Vue & React Vite SPA Tailwind Markdown powered Templates, integrated Identity Auth, new Kotlin Compose Multiplatform template and new Vite Press Plugin","tags":["release","vue","react","vite","markdown","kotlin"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-2-release.mp3","wordCount":797,"lineCount":54},{"slug":"v8-1-release","draft":false,"title":"ServiceStack v8.1 Release","summary":"ServiceStack v8.1 is here with a host of new features including full integration with Identity Auth, ASP .NET IOC, Endpoint Routing, System.Text.Json APIs, enhanced Admin UIs with JWT support, and much more!","tags":["release","identity-auth","ioc","json","openapi","swagger"],"date":"\/Date(1707177600000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-1-release.mp3","wordCount":245,"lineCount":48},{"slug":"v8-0-release","draft":false,"title":"ServiceStack v8.0 Release","summary":"ServiceStack v8 is here with all packages now including .net8.0 builds, all Project Templates upgraded to .NET 8, GitHub Actions now using .NET 8 Docker containers, new Tailwind Blazor, Razor Pages & MVC Templates now using ASP .NET Identity Auth & EF","tags":["release",".net8","docker","identity-auth","blazor","mvc","razor"],"date":"\/Date(1700438400000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-0-release.mp3","wordCount":1213,"lineCount":63}]} \ No newline at end of file diff --git a/podcasts.html b/podcasts.html index 9c0a0cc..fc49cc9 100644 --- a/podcasts.html +++ b/podcasts.html @@ -180,425 +180,425 @@

diff --git a/podcasts/apikeys.html b/podcasts/apikeys.html index 41ea6c3..0070706 100644 --- a/podcasts/apikeys.html +++ b/podcasts/apikeys.html @@ -180,425 +180,425 @@

diff --git a/podcasts/asp-rate-limiter-middleware.html b/podcasts/asp-rate-limiter-middleware.html index 75c59a4..9a743d8 100644 --- a/podcasts/asp-rate-limiter-middleware.html +++ b/podcasts/asp-rate-limiter-middleware.html @@ -180,425 +180,425 @@

diff --git a/podcasts/background-jobs.html b/podcasts/background-jobs.html index 16911f2..adb91cd 100644 --- a/podcasts/background-jobs.html +++ b/podcasts/background-jobs.html @@ -180,425 +180,425 @@

diff --git a/podcasts/commands-feature.html b/podcasts/commands-feature.html index c4fe6c9..b748fe9 100644 --- a/podcasts/commands-feature.html +++ b/podcasts/commands-feature.html @@ -180,425 +180,425 @@

diff --git a/podcasts/feed.xml b/podcasts/feed.xml index 98c3016..a5a1d18 100644 --- a/podcasts/feed.xml +++ b/podcasts/feed.xml @@ -10,7 +10,7 @@ razor-ssg Razor SSG - Thu, 31 Oct 2024 15:24:29 GMT + Thu, 31 Oct 2024 15:55:00 GMT email@example.org (Razor SSG) email@example.org (Razor SSG) diff --git a/podcasts/net8-react-spa-template.html b/podcasts/net8-react-spa-template.html index 7693ace..bbd4751 100644 --- a/podcasts/net8-react-spa-template.html +++ b/podcasts/net8-react-spa-template.html @@ -180,425 +180,425 @@

diff --git a/podcasts/net8-vue-spa-template.html b/podcasts/net8-vue-spa-template.html index b8f5f7b..695d791 100644 --- a/podcasts/net8-vue-spa-template.html +++ b/podcasts/net8-vue-spa-template.html @@ -180,425 +180,425 @@

diff --git a/podcasts/razor-ssg-podcasts.html b/podcasts/razor-ssg-podcasts.html index 6dd9bfe..fb7c47f 100644 --- a/podcasts/razor-ssg-podcasts.html +++ b/podcasts/razor-ssg-podcasts.html @@ -180,425 +180,425 @@

diff --git a/podcasts/redis-outputcache.html b/podcasts/redis-outputcache.html index c8566df..5f1c787 100644 --- a/podcasts/redis-outputcache.html +++ b/podcasts/redis-outputcache.html @@ -180,425 +180,425 @@

diff --git a/podcasts/scalable-sqlite.html b/podcasts/scalable-sqlite.html index 7697a0a..7dd2414 100644 --- a/podcasts/scalable-sqlite.html +++ b/podcasts/scalable-sqlite.html @@ -180,425 +180,425 @@

diff --git a/podcasts/simple-auth-microservices.html b/podcasts/simple-auth-microservices.html index 1ebf1c0..1cdd808 100644 --- a/podcasts/simple-auth-microservices.html +++ b/podcasts/simple-auth-microservices.html @@ -180,425 +180,425 @@

diff --git a/podcasts/sqlite-request-logs.html b/podcasts/sqlite-request-logs.html index ee7414f..98e6af9 100644 --- a/podcasts/sqlite-request-logs.html +++ b/podcasts/sqlite-request-logs.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/admin-ui.html b/podcasts/tagged/admin-ui.html index 6c27197..3201912 100644 --- a/podcasts/tagged/admin-ui.html +++ b/podcasts/tagged/admin-ui.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/admin.html b/podcasts/tagged/admin.html index 278b39f..3146f3e 100644 --- a/podcasts/tagged/admin.html +++ b/podcasts/tagged/admin.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/api.html b/podcasts/tagged/api.html index 160ab98..84eb2b8 100644 --- a/podcasts/tagged/api.html +++ b/podcasts/tagged/api.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/apikeys.html b/podcasts/tagged/apikeys.html index f653daf..dd67c9b 100644 --- a/podcasts/tagged/apikeys.html +++ b/podcasts/tagged/apikeys.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/auth.html b/podcasts/tagged/auth.html index 9bfcb07..d55bb7a 100644 --- a/podcasts/tagged/auth.html +++ b/podcasts/tagged/auth.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/autoquery.html b/podcasts/tagged/autoquery.html index 8e30cf8..e24a3fa 100644 --- a/podcasts/tagged/autoquery.html +++ b/podcasts/tagged/autoquery.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/blazor.html b/podcasts/tagged/blazor.html index 0bd7af1..12cfb3c 100644 --- a/podcasts/tagged/blazor.html +++ b/podcasts/tagged/blazor.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/caching.html b/podcasts/tagged/caching.html index 5fdf688..2424c21 100644 --- a/podcasts/tagged/caching.html +++ b/podcasts/tagged/caching.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/commands.html b/podcasts/tagged/commands.html index 2881a45..3d3f879 100644 --- a/podcasts/tagged/commands.html +++ b/podcasts/tagged/commands.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/docker.html b/podcasts/tagged/docker.html index 1a95b4a..ed87501 100644 --- a/podcasts/tagged/docker.html +++ b/podcasts/tagged/docker.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/github-actions.html b/podcasts/tagged/github-actions.html index 01605b4..8238f2e 100644 --- a/podcasts/tagged/github-actions.html +++ b/podcasts/tagged/github-actions.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/hosting.html b/podcasts/tagged/hosting.html index 91ccf9b..29c6df9 100644 --- a/podcasts/tagged/hosting.html +++ b/podcasts/tagged/hosting.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/identity-auth.html b/podcasts/tagged/identity-auth.html index ae13707..fb1427c 100644 --- a/podcasts/tagged/identity-auth.html +++ b/podcasts/tagged/identity-auth.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/ioc.html b/podcasts/tagged/ioc.html index eb48ff8..dfec23f 100644 --- a/podcasts/tagged/ioc.html +++ b/podcasts/tagged/ioc.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/jobs.html b/podcasts/tagged/jobs.html index c0363d8..4be811b 100644 --- a/podcasts/tagged/jobs.html +++ b/podcasts/tagged/jobs.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/json.html b/podcasts/tagged/json.html index 76a82d2..5c264c6 100644 --- a/podcasts/tagged/json.html +++ b/podcasts/tagged/json.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/kotlin.html b/podcasts/tagged/kotlin.html index ebdeab2..87c2b94 100644 --- a/podcasts/tagged/kotlin.html +++ b/podcasts/tagged/kotlin.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/logging.html b/podcasts/tagged/logging.html index 882b3aa..b18b8ae 100644 --- a/podcasts/tagged/logging.html +++ b/podcasts/tagged/logging.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/markdown.html b/podcasts/tagged/markdown.html index 2740b47..79a1a7f 100644 --- a/podcasts/tagged/markdown.html +++ b/podcasts/tagged/markdown.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/middleware.html b/podcasts/tagged/middleware.html index 864ec52..46598f5 100644 --- a/podcasts/tagged/middleware.html +++ b/podcasts/tagged/middleware.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/mvc.html b/podcasts/tagged/mvc.html index 354b60b..695e611 100644 --- a/podcasts/tagged/mvc.html +++ b/podcasts/tagged/mvc.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/net8.html b/podcasts/tagged/net8.html index c6de449..54ed59d 100644 --- a/podcasts/tagged/net8.html +++ b/podcasts/tagged/net8.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/openapi.html b/podcasts/tagged/openapi.html index 8c2b82a..268df7b 100644 --- a/podcasts/tagged/openapi.html +++ b/podcasts/tagged/openapi.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/performance.html b/podcasts/tagged/performance.html index bd500f3..9ae44c9 100644 --- a/podcasts/tagged/performance.html +++ b/podcasts/tagged/performance.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/razor.html b/podcasts/tagged/razor.html index 7459987..937e170 100644 --- a/podcasts/tagged/razor.html +++ b/podcasts/tagged/razor.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/rdbms.html b/podcasts/tagged/rdbms.html index d6111d0..cffbd7c 100644 --- a/podcasts/tagged/rdbms.html +++ b/podcasts/tagged/rdbms.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/react.html b/podcasts/tagged/react.html index 6c99b2d..77b7dfd 100644 --- a/podcasts/tagged/react.html +++ b/podcasts/tagged/react.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/redis.html b/podcasts/tagged/redis.html index a2302e2..1111822 100644 --- a/podcasts/tagged/redis.html +++ b/podcasts/tagged/redis.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/release.html b/podcasts/tagged/release.html index 2c9065b..0b896e4 100644 --- a/podcasts/tagged/release.html +++ b/podcasts/tagged/release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/scalability.html b/podcasts/tagged/scalability.html index 438e894..677fd0d 100644 --- a/podcasts/tagged/scalability.html +++ b/podcasts/tagged/scalability.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/sqlite.html b/podcasts/tagged/sqlite.html index 6e800dd..c9f51da 100644 --- a/podcasts/tagged/sqlite.html +++ b/podcasts/tagged/sqlite.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/ssg.html b/podcasts/tagged/ssg.html index b82e423..5de3cf9 100644 --- a/podcasts/tagged/ssg.html +++ b/podcasts/tagged/ssg.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/swagger.html b/podcasts/tagged/swagger.html index 7a0283a..34285c5 100644 --- a/podcasts/tagged/swagger.html +++ b/podcasts/tagged/swagger.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/template.html b/podcasts/tagged/template.html index f2a34a3..a346587 100644 --- a/podcasts/tagged/template.html +++ b/podcasts/tagged/template.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/vite.html b/podcasts/tagged/vite.html index 4ea9a62..db7b047 100644 --- a/podcasts/tagged/vite.html +++ b/podcasts/tagged/vite.html @@ -180,425 +180,425 @@

diff --git a/podcasts/tagged/vue.html b/podcasts/tagged/vue.html index e3bf80e..1ce99b3 100644 --- a/podcasts/tagged/vue.html +++ b/podcasts/tagged/vue.html @@ -180,425 +180,425 @@

diff --git a/podcasts/v8-0-release.html b/podcasts/v8-0-release.html index a6874e3..7ab039c 100644 --- a/podcasts/v8-0-release.html +++ b/podcasts/v8-0-release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/v8-1-release.html b/podcasts/v8-1-release.html index 27cf864..62f932d 100644 --- a/podcasts/v8-1-release.html +++ b/podcasts/v8-1-release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/v8-2-release.html b/podcasts/v8-2-release.html index 2c18b0a..310cd91 100644 --- a/podcasts/v8-2-release.html +++ b/podcasts/v8-2-release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/v8-3-release.html b/podcasts/v8-3-release.html index f911849..021e560 100644 --- a/podcasts/v8-3-release.html +++ b/podcasts/v8-3-release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/v8-4-release.html b/podcasts/v8-4-release.html index 7b97c5c..57ac86f 100644 --- a/podcasts/v8-4-release.html +++ b/podcasts/v8-4-release.html @@ -180,425 +180,425 @@

diff --git a/podcasts/year/2023.html b/podcasts/year/2023.html index 1c6046f..9ef4a1e 100644 --- a/podcasts/year/2023.html +++ b/podcasts/year/2023.html @@ -180,425 +180,425 @@

diff --git a/podcasts/year/2024.html b/podcasts/year/2024.html index 84c08ac..0ebae9d 100644 --- a/podcasts/year/2024.html +++ b/podcasts/year/2024.html @@ -180,425 +180,425 @@