From 2cd227a0041a2f41fca390bafab7c27055f96ace Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 10 Dec 2024 11:09:45 +0000 Subject: [PATCH] deploy: 02ab049c493a464e1aea426ca23d7bbc90776358 --- CNAME | 2 +- feed.xml | 2 +- meta/2024/all.json | 2 +- meta/2024/pages.json | 2 +- meta/all.json | 2 +- mjs/dtos.mjs | 2 +- podcasts.html | 406 +++++++++---------- podcasts/ai-server.html | 406 +++++++++---------- podcasts/apikey-credentials-auth.html | 406 +++++++++---------- podcasts/apikeys.html | 408 +++++++++---------- podcasts/asp-rate-limiter-middleware.html | 404 +++++++++---------- podcasts/background-jobs.html | 408 +++++++++---------- podcasts/commands-feature.html | 408 +++++++++---------- podcasts/feed.xml | 2 +- podcasts/kamal-deployments.html | 406 +++++++++---------- podcasts/kotlin-compose-multiplatform.html | 406 +++++++++---------- podcasts/net8-react-spa-template.html | 410 +++++++++---------- podcasts/net8-vue-spa-template.html | 406 +++++++++---------- podcasts/npx-get-dtos.html | 408 +++++++++---------- podcasts/razor-ssg-podcasts.html | 408 +++++++++---------- podcasts/redis-outputcache.html | 404 +++++++++---------- podcasts/scalable-sqlite.html | 410 +++++++++---------- podcasts/simple-auth-microservices.html | 406 +++++++++---------- podcasts/sqlite-request-logs.html | 410 +++++++++---------- podcasts/swift6-upgrade.html | 410 +++++++++---------- podcasts/tagged/admin-ui.html | 408 +++++++++---------- podcasts/tagged/admin.html | 406 +++++++++---------- podcasts/tagged/ai-server.html | 404 +++++++++---------- podcasts/tagged/ai.html | 400 +++++++++---------- podcasts/tagged/android.html | 406 +++++++++---------- podcasts/tagged/api.html | 404 +++++++++---------- podcasts/tagged/apikeys.html | 402 +++++++++---------- podcasts/tagged/app.html | 404 +++++++++---------- podcasts/tagged/arm.html | 406 +++++++++---------- podcasts/tagged/auth.html | 412 ++++++++++---------- podcasts/tagged/autoquery.html | 408 +++++++++---------- podcasts/tagged/blazor.html | 408 +++++++++---------- podcasts/tagged/caching.html | 404 +++++++++---------- podcasts/tagged/commands.html | 408 +++++++++---------- podcasts/tagged/creatorkit.html | 408 +++++++++---------- podcasts/tagged/csharp.html | 402 +++++++++---------- podcasts/tagged/design.html | 404 +++++++++---------- podcasts/tagged/dev.html | 410 +++++++++---------- podcasts/tagged/devops.html | 408 +++++++++---------- podcasts/tagged/docker.html | 408 +++++++++---------- podcasts/tagged/docs.html | 406 +++++++++---------- podcasts/tagged/github-actions.html | 398 +++++++++---------- podcasts/tagged/gpt.html | 406 +++++++++---------- podcasts/tagged/hosting.html | 404 +++++++++---------- podcasts/tagged/identity-auth.html | 408 +++++++++---------- podcasts/tagged/ioc.html | 406 +++++++++---------- podcasts/tagged/ios.html | 406 +++++++++---------- podcasts/tagged/jobs.html | 406 +++++++++---------- podcasts/tagged/js.html | 406 +++++++++---------- podcasts/tagged/json.html | 406 +++++++++---------- podcasts/tagged/jsonl.html | 406 +++++++++---------- podcasts/tagged/jwt.html | 402 +++++++++---------- podcasts/tagged/kotlin.html | 406 +++++++++---------- podcasts/tagged/logging.html | 402 +++++++++---------- podcasts/tagged/macos.html | 410 +++++++++---------- podcasts/tagged/markdown.html | 408 +++++++++---------- podcasts/tagged/middleware.html | 404 +++++++++---------- podcasts/tagged/mvc.html | 412 ++++++++++---------- podcasts/tagged/net.html | 408 +++++++++---------- podcasts/tagged/net8.html | 404 +++++++++---------- podcasts/tagged/openapi.html | 406 +++++++++---------- podcasts/tagged/performance.html | 408 +++++++++---------- podcasts/tagged/php.html | 406 +++++++++---------- podcasts/tagged/razor.html | 408 +++++++++---------- podcasts/tagged/rdbms.html | 402 +++++++++---------- podcasts/tagged/react.html | 410 +++++++++---------- podcasts/tagged/redis.html | 408 +++++++++---------- podcasts/tagged/release.html | 406 +++++++++---------- podcasts/tagged/scalability.html | 408 +++++++++---------- podcasts/tagged/service-reference.html | 408 +++++++++---------- podcasts/tagged/sqlite.html | 404 +++++++++---------- podcasts/tagged/ssg.html | 410 +++++++++---------- podcasts/tagged/swagger.html | 410 +++++++++---------- podcasts/tagged/swift.html | 408 +++++++++---------- podcasts/tagged/tailwind.html | 408 +++++++++---------- podcasts/tagged/template.html | 406 +++++++++---------- podcasts/tagged/typescript.html | 408 +++++++++---------- podcasts/tagged/vite.html | 404 +++++++++---------- podcasts/tagged/vue.html | 406 +++++++++---------- podcasts/tagged/x.html | 402 +++++++++---------- podcasts/typed-openai-chat-ollama-apis.html | 408 +++++++++---------- podcasts/v8-0-release.html | 406 +++++++++---------- podcasts/v8-1-release.html | 404 +++++++++---------- podcasts/v8-2-release.html | 400 +++++++++---------- podcasts/v8-3-release.html | 410 +++++++++---------- podcasts/v8-4-release.html | 408 +++++++++---------- podcasts/v8-5-release.html | 400 +++++++++---------- podcasts/vite-press-plugin.html | 408 +++++++++---------- podcasts/year/2023.html | 408 +++++++++---------- podcasts/year/2024.html | 402 +++++++++---------- 95 files changed, 17884 insertions(+), 17884 deletions(-) diff --git a/CNAME b/CNAME index 094b8d75..68d81afa 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -ssg-site.servicestack.netssg-site.servicestack.netssg-site.servicestack.netssg-site.servicestack.net +ssg-site.servicestack.netssg-site.servicestack.netssg-site.servicestack.netssg-site.servicestack.netssg-site.servicestack.net diff --git a/feed.xml b/feed.xml index 7ec27c07..22cdd9b2 100644 --- a/feed.xml +++ b/feed.xml @@ -10,7 +10,7 @@ razor-ssg - Tue, 10 Dec 2024 10:45:26 GMT + Tue, 10 Dec 2024 11:09:39 GMT team@servicestack.net (Team ServiceStack) team@servicestack.net (Team ServiceStack) diff --git a/meta/2024/all.json b/meta/2024/all.json index 32709be9..2a8f4493 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(1733827484316)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"ai-server","draft":false,"title":"Introducing AI Server","image":"https://servicestack.net/img/posts/ai-server/ai-server-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We're excited to announce AI Server - an open-source, self-hosted Docker gateway for managing API access \nto various AI services. It offers centralized management of LLMs, Ollama endpoints, media APIs, Comfy UI\nand FFmpeg agents, distributing loads across multiple servers.\n\nIt's initial V1 release comes packed with features, including:\n\n - **Centralized Management**: Manage all your AI services from a single Admin UI\n - **Load Balancing**: Distribute loads across multiple servers\n - **Native Typed Integrations**: For 11 popular programming languages\n - **Synchronous, Queued, and Callback-based APIs**: For different use-cases\n - **Monitoring and Analytics**: Live monitoring, analytics and full history\n - **Protected Access**: With simple API keys","url":"https://servicestack.net/posts/ai-server","wordCount":111,"lineCount":19,"group":"v8.5","order":1},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates now using Kamal for deployments","image":"https://servicestack.net/img/posts/kamal-deployments/kamal-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We've updated the built-in GitHub Actions for all Identity Auth templates to use the [Kamal deployment](https://kamal-deploy.org/) tool\nfor customers considering their potential [cloud exit cost savings](https://world.hey.com/dhh/our-cloud-exit-savings-will-now-top-ten-million-over-five-years-c7d9b5bd)\nby exploring the shift in deployment strategy for self-hosting their .NET Docker Apps on their own servers or \nin-expensive cloud providers like [hetzner.com](https://www.hetzner.com) \n\nPreviously, a less streamlined process involving [SSH and Docker Compose](https://docs.servicestack.net/kamal-deploy) was used. \nNow, all Identity Auth templates utilize Kamal, a CLI tool simplifying deployments to any Linux server accessible via SSH.\nKamal automates tasks such as reverse proxy setup and TLS certificate management whilst providing useful \nlocal management tools via Kamal's commands.","url":"https://servicestack.net/posts/kamal-deployments","wordCount":125,"lineCount":16,"group":"v8.5","order":2},{"slug":"apikey-credentials-auth","draft":false,"title":"API Keys Credentials Provider for .NET 8 Microservices","image":"https://servicestack.net/img/posts/apikey-credentials-auth/ai-server-auth-apiexplorer.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"The usability of the **Simple Auth with API Keys** story has been significantly improved with the new \n`ApiKeyCredentialsProvider` which enables .NET Microservices to provide persistent UserSession-like \nbehavior using simple API Keys which can be configured together with `AuthSecretAuthProvider` and \n`ApiKeysFeature` to enable a Credentials Auth implementation users can use with their API Keys \nto restrict access to Authorized Users or Admin AuthSecret to protect Admin UIs and APIs.\n\n### Session Auth with API Keys\n\nBehind the scenes this creates a Server Auth Session but instead of maintaining an Authenticated \nUser Session it saves the API Key in the session then attaches the API Key to each request. \nThis makes it possible to make API Key validated requests with just a session cookie instead of \nrequiring resubmission of API Keys for each request.","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":143,"lineCount":18,"group":"v8.5","order":4},{"slug":"typed-openai-chat-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","image":"https://servicestack.net/img/posts/ai-server/ai-server-languages.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"AI Server's `OpenAiChatCompletion` API - is an OpenAI compatible Chat API with ChatGPT and\nother LLMs like Ollama, the benefit of which allows developers to use its Typed DTOs and ServiceStack\ngeneric Service Clients to call any Open AI Chat compatible API directly, in all of ServiceStack's\n11 supported popular programming languages.\n\nThis allows developers to easily integrate typed access to different LLMs into their applications.\nInstructions are provided for each language demonstrating how to install necessary packages, download DTOs,\nand send API requests.","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":95,"lineCount":15,"group":"v8.5","order":4},{"slug":"swift-6","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","image":"https://docs.servicestack.net/img/pages/servicestack-reference/swift-logo-banner.jpg","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"All generic service client libraries have been upgraded to support multiple file uploads with API requests \nto take advantage of AI Server APIs that accept file uploads like Image to Image, Speech to Text or its \nFFmpeg Image and Video Transforms.\n\nServiceStack.Swift received the biggest upgrade, which was also rewritten to take advantage of Swift 6 features, \nincluding Swift promises which replaced the previous PromiseKit dependency - making it now dependency-free!","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":86,"lineCount":12,"group":"v8.5","order":5},{"slug":"background-jobs","draft":false,"title":"Execute Background Jobs and Recurring Tasks","image":"https://servicestack.net/img/posts/background-jobs/jobs-dashboard.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"**Background Jobs** is our effortless solution for managing background jobs and \nscheduled tasks in any .NET 8 App, implemented in true ServiceStack fashion where \nit seamlessly integrates into existing ServiceStack Apps with a built-in Management UI \nto provide real-time monitoring, inspection and management of background jobs.\n\nIt packs all useful features we wanted in its initial V1 release, including:\n\n- No infrastructure dependencies\n - Monthly archivable rolling Databases with full Job Execution History\n- Execute existing **APIs** or **Commands**\n- Schedule **Reoccurring Tasks**\n- Serially execute jobs with **named Workers**\n- Queue Jobs that **Depends On** successful completion of a parent Job\n- Execute **Callback** on successful execution of Job\n- Queue Jobs to **Run After** a specified Date\n- Execute Jobs within the context of an Authenticated User\n- **Auto Retry** and **Timeout** failed jobs on a default or per-job limit\n- Cancellable Jobs\n- Requeue Failed Jobs\n- Maintain Status, Logs and Progress of Executing Jobs\n- Execute transitive (i.e. non-durable) jobs","url":"https://docs.servicestack.net/background-jobs","wordCount":164,"lineCount":28,"group":"v8.4","order":1},{"slug":"sqlite-request-logger","draft":false,"title":"Capture Request Logs in Monthly Rolling SQLite DBs","image":"https://servicestack.net/img/posts/sqlite-request-logs/sqlite-request-logs.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"SQLite's low latency, high-performance and embeddable nature make it ideal for self-managing \nisolated appliance black-box functionality like Request Logging which offers up to \n[35% faster disk performance](https://www.sqlite.org/fasterthanfs.html) than standard file logging.\n\n### Rolling Monthly SQLite Databases\n\nSQLite is unique in its ability to create lightweight databases on-the-fly where Requests \nwill be persisted into isolated Monthly databases which can be easily archived \ninto managed file storage instead of a singular growing database.\n\nSQLite Request Logs also make it easier to generate monthly aggregate reports that provide \nkey insights into the usage of your App.\n\n#### AutoQuery Admin Logging UI\n\nAs SQLite Requests Logs also makes it efficiently possible to sort and filter through logs, \nthe Admin Logging UI has been upgraded to using a fully queryable AutoQueryGrid when using \n`SqliteRequestLogger`","url":"https://docs.servicestack.net/sqlite-request-logs","wordCount":146,"lineCount":24,"group":"v8.4","order":2},{"slug":"scalable-sqlite","draft":false,"title":"Safe, Scalable, High Performance SQLite Apps","image":"https://servicestack.net/img/posts/scalable-sqlite/pvq.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"Ever since adding support for Litestream in ServiceStack project's templates GitHub Action Deployments \nwe've been using SQLite as the backend for our latest new .NET Apps as it's the most cost-effective \noption that frees us from needing to use cloud managed databases and by extension expensive major cloud \nproviders instead of the better value commodity cloud providers.\n\nSQLite is a highly-performant DB that can handle a large number of concurrent read operations and\n35% faster filesystem performance for write operations with next to no latency that's often \nfaster than other RDBMS's courtesy of its proximity to the running application which gives it\nunique advantages over traditional client/server RDBMS's where it's not susceptible to the \n[N+1 Queries problem](https://www.sqlite.org/np1queryprob.html) and is also able to execute your\ncustom C# Logic inside SQL Queries using [Application SQL Functions](https://www.sqlite.org/appfunc.html).\n\nWith [litestream.io](https://litestream.io) taking care of real-time replication to managed storage\nwe just need to workaround SQLite's single concurrent writer to unlock the value, performance and \nunique features of SQLite in our Apps which we cover in this release with integrated support for\nDatabase Locks and Sync Commands.","url":"https://docs.servicestack.net/ormlite/scalable-sqlite","wordCount":200,"lineCount":22,"group":"v8.4","order":3},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","image":"https://servicestack.net/img/whatsnew/v8.3/bg-security.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"API Keys are a simple and effective way to authorize access to your APIs, which are typically used for machine-to-machine\ncommunication, where a client application needs to access an API without user intervention.\nAPI Keys are often used to control access to specific resources or features in your API, providing a simple way\nto manage access control.\n\n### Redesigning API Keys\n\nBuilding on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs.\n\nGiven the primary use-case for API Keys is for machine-to-machine communication where the client isn't a User,\nnor do they want systems using their API Keys to have access to their User Account, we've changed\nhow API Keys work in .NET 8.","url":"https://docs.servicestack.net/auth/apikeys","wordCount":150,"lineCount":20,"group":"v8.3","order":1},{"slug":"commands","draft":false,"title":"Use Commands to build robust and observable systems","image":"https://servicestack.net/img/whatsnew/v8.3/commands.png","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"How code-bases are structured is largely a matter of developer preference, however we believe we've also been able to \nadd value in this area with the new appealing managed Commands Feature.\n\n### When to restructure\n\nTimes when you may want to consider moving logic out of your Service include:\n\n- **Code Reuse**: Make it easier to reuse your Service logic in other Services\n- **Complexity**: Break down complex logic into smaller more manageable pieces\n- **Testability**: Make it easier to test your Logic in isolation\n- **Observability**: Make it easier to log and monitor\n- **Robustness**: Make it easier to handle, retry and recover from errors\n- **Flexibility**: Make it easier to run in parallel or in a different managed thread\n\nWe'll look at how the new **Commands Feature** can help in these areas.","url":"https://docs.servicestack.net/commands","wordCount":141,"lineCount":21,"group":"v8.3","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","image":"https://img.youtube.com/vi/0ceU91ZBhTQ/maxresdefault.jpg","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"With ServiceStack now [fully integrated](/auth/identity-auth) with ASP.NET Identity Auth,\nour latest .NET 8 [Tailwind Templates](/start) offer a full-featured Auth Configuration complete with User Registration,\nLogin, Password Recovery, Two Factory Auth, and more.\n\nWhilst great for Web Applications that need it, it neglects the class of Apps which don't need User Auth and\nthe additional complexity it brings inc. Identity and Password Management, EF Migrations, Token Expirations, OAuth Integrations, etc.\n\nFor these stand-alone Apps, Microservices and Docker Appliances that would still like to restrict Access to their APIs\nbut don't need the complexity of ASP .NET Core's Authentication machinery, a simpler Auth Story would be preferred.\n\nWith the introduction of API Keys in this release we're able to provide a simpler Auth Story for .NET 8 Microservices\nthat's easy for **Admin** Users to manage and control which trusted clients and B2B Integrations can access their functionality.","url":"https://docs.servicestack.net/auth/admin-apikeys","wordCount":159,"lineCount":19,"group":"v8.3","order":3},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","image":"https://servicestack.net/img/posts/rhel9-cryptography/bg-redhat.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"A consequence of RedHat Enterprise Linux 9's hardened\n[system-wide cryptographic policies](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)\nis that it's incompatible with ServiceStack's current licensing which uses RSA encryption and SHA1 hashing algorithm\nto validate license keys.\n\nUnfortunately this makes it no longer possible to use License Keys to run unrestricted ServiceStack Apps on default\ninstalls of RHEL 9 or any of its variants.\n\n### Generate License Key for RHEL 9+\n\nStarting from **ServiceStack v8.3+** Customers can regenerate a new License Key with a stronger **SHA512** Hash Algorithm\nthat's compatible with RHEL 9's default hardened cryptography policy by visiting:\n\n:::{.text-2xl .text-indigo-600}\nhttps://account.servicestack.net/regenerate-license\n:::","url":"https://docs.servicestack.net/rhel9-cryptography","wordCount":110,"lineCount":23,"group":"v8.3","order":4},{"slug":"vue-spa","draft":false,"title":"Enhanced ASP .NET Core SPA Templates","image":"https://servicestack.net/img/whatsnew/v8.2/spa-logos.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"With ServiceStack now fully integrated with .NET 8, our focus has shifted from providing platform-agnostic solutions \nthat supports all ServiceStack's .NET Framework and .NET hosts to building on the new capabilities of .NET 8 by \nenhancing ASP .NET Core's built-in features and templates with ServiceStack's high-productivity features.\n\n### New Vue SPA Template\n\nThe latest Vue SPA template is a good example of this, building on and enhancing the built-in ASP.NET Core Vue SPA \ntemplate with many high-productivity features:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Highly Productive Vue Component Library\n- Effortless CRUD and Admin UIs with AutoQueryGrid","url":"https://docs.servicestack.net/releases/v8_02","wordCount":125,"lineCount":21,"group":"v8.2","order":1},{"slug":"react-spa","draft":false,"title":"New ASP.NET Core React SPA Template","image":"https://servicestack.net/img/whatsnew/v8.2/react-spa.png","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The ASP.NET Core Vite React SPA Template has also been upgraded and enhanced with many high-productivity features including:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Integration with shadcn/ui Tailwind React components\n- Native MDX Markdown integration\n- React Router and conventional file system based routing\n- Tailwind Validation bound Input Form Components","url":"https://docs.servicestack.net/releases/v8_02#asp.net-core-react-spa-template","wordCount":80,"lineCount":16,"group":"v8.2","order":2},{"slug":"compose-multiplatform","draft":false,"title":"New Kotlin Compose Multiplaform Template","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The last few years of neglect of Xamarin has removed itself from consideration as a viable development option for \ncreating native Mobile and Desktop Apps.\n\nFortunately JetBrains has stepped in to fill the void with its Compose Multiplatform UI Framework offering \na modern declarative alternative reactive for creating native Mobile, Desktop & Web Apps that can also leverage\nKotlin ServiceStack Reference for its end-to-end typed APIs.\n\nWe'll look at the latest Compose Multiplatform [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/) \nand use it to build a cross-platform Desktop App integrated with a .NET API backend which can both be developed from \nthe same JetBrains Fleet IDE.","url":"https://docs.servicestack.net/releases/v8_02#compose-multiplatform-ios-android-apps","wordCount":115,"lineCount":16,"group":"v8.2","order":3},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=1000","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The Vite Press Plugin is an alternative to VitePress for adding Markdown features to existing Vite Vue or React projects. \nIt's a non-intrusive plugin for Vue and React Vite apps that want to add markdown powered content features without needing \nto adopt an opinionated framework for their entire App.\n\n### Universal Markdown Features\n\nA goal for vite-press-plugin is to implement a suite of universal markdown-powered features that can be reused across Vue, \nReact and .NET Razor and Blazor projects, allowing you to incorporate same set of markdown feature folders to power \nmarkdown content features across a range of websites built with different technologies.\n\n### Vite Apps with vite-press-plugin\n\nThe vite-press-plugin currently powers the markdown features in the static Vite Vue and React templates which are ideal \nfor creating static websites, blogs, documentation and marketing websites that can be hosted FREE on GitHub Pages CDN","url":"https://docs.servicestack.net/releases/v8_02#vite-press-plugin","wordCount":153,"lineCount":21,"group":"v8.2","order":4},{"slug":"endpoint-routing","draft":false,"title":"Full Integration with ASP.NET Core 8","image":"https://servicestack.net/img/whatsnew/v8.1/aspnet-8.webp","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"We're happy to announce the latest ServiceStack v8.1 release supports deep integration with ASP.NET Core's \nstandardized features for execution of its APIs.\n\nThis reduces friction for integrating ServiceStack into existing .NET 8 Apps, encourages greater knowledge and reuse and \nsimplifies .NET development as developers have fewer concepts to learn and technology implementations \nto configure and maintain that are now applied across their entire .NET App.\n\nBetter yet, this is enabled by default in all of ServiceStack's new \n[Identity Auth .NET 8 templates](https://servicestack.net/start) which now embraces all these standard \nASP.NET Core features:\n\n- [ASP.NET Core Identity Auth](https://docs.servicestack.net/auth/identity-auth)\n- [ASP.NET Core IOC](https://docs.servicestack.net/releases/v8_01#asp.net-core-ioc)\n- [Endpoint Routing](https://docs.servicestack.net/releases/v8_01#endpoint-routing)\n- [System.Text.Json APIs](https://docs.servicestack.net/releases/v8_01#system.text.json)\n- [Open API v3 and Swagger UI](https://docs.servicestack.net/releases/v8_01#openapi-v3)\n- [JWT Identity Auth](https://docs.servicestack.net/releases/v8_01#jwt-identity-auth)","url":"https://docs.servicestack.net/releases/v8_01","wordCount":161,"lineCount":23,"group":"v8.1","order":1},{"slug":"system-json-apis","draft":false,"title":"System.Text.Json APIs","image":"https://servicestack.net/img/whatsnew/v8.1/system-text-json.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"ServiceStack Endpoint Routing APIs now utilize **System.Text.Json** - the default high-performance async \nJSON serializer used in .NET Apps for serializing its JSON APIs.\n\n### Enhanced System.Text.Json\n\nServiceStack uses a custom `JsonSerializerOptions` to improve compatibility with existing ServiceStack DTOs and \nServiceStack's rich ecosystem of generic \n[Add ServiceStack Reference Service Clients](https://docs.servicestack.net/add-servicestack-reference), which is configured to:\n\n- Uses `CamelCaseNamingPolicy` for property names\n- Supports Case Insensitive Properties\n- Not serialize `null` properties\n- Serializes `TimeSpan` and `TimeOnly` Data Types with XML Schema Time format\n- Supports `[DataContract]` annotations\n- Supports Custom Enum Serialization","url":"https://docs.servicestack.net/releases/v8_01#system.text.json","wordCount":107,"lineCount":21,"group":"v8.1","order":2},{"slug":"openapi-v3","draft":false,"title":"Swashbuckle OpenAPI v3 and Swagger UI","image":"https://servicestack.net/img/whatsnew/v8.1/openapiv3-logo.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"Utilizing the same **ASP.NET Core Endpoints** that the rest of the ASP.NET Core App uses enables your ServiceStack APIs \nto integrate with your wider ASP.NET Core application, opening up more opportunities for reuse of your ServiceStack APIs.\n\nThis opens up the ability to use common third party tooling like the popular `Swashbuckle` package used to to\nenable OpenAPI v3 specification generation of ASP .NET Core APIs which now includes ServiceStack APIs, \ndisplayed along-side Minimal and Web APIs. \n\nWe've created the **ServiceStack.AspNetCore.OpenApi** package to make this integration as easy as possible, which \nincorporates additional information from your ServiceStack APIs into Swagger metadata.","url":"https://docs.servicestack.net/releases/v8_01#openapi-v3","wordCount":118,"lineCount":15,"group":"v8.1","order":3},{"slug":"identity-auth-admin-users-ui","draft":false,"title":"Identity Auth Admin Users UI","image":"https://servicestack.net/img/whatsnew/v8.1/admin-ui-users-edit-custom.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"The new Identity Auth Admin UI is an example of value-added features that can benefit all .NET Core App, that \nenables a built-in Admin UI that's only accessible to **Admin** Users for managing Identity Auth\nusers at `/admin-ui/users`.\n\nIt's a highly customizable UI feature that includes standard features to lockout users, change user passwords and manage their roles\nas well as being flexible enough to support Custom `ApplicationUser` Identity Models including:\n\n - Custom Search Results\n - Custom Search Behavior\n - Custom Sort Order\n - Custom Editable Fields\n - Custom User Creation and Validation\n - Admin User Events to run custom logic","url":"https://docs.servicestack.net/releases/v8_01#asp.net-core-identity-auth-admin-ui","wordCount":112,"lineCount":19,"group":"v8.1","order":4}],"videos":[{"slug":"video1","draft":false,"title":"Self Hosted gateway for proxying LLM APIs, Ollama, ComfyUI & FFmpeg servers","tags":["servicestack","ai","gpt"],"date":"\/Date(1732665600000+0000)\/","content":"Introducing AI Server, a self-hosted Docker gateway managing API access to various AI services like LLMs and ComfyUI. \nIt offers centralized management, load balancing across multiple providers, and native typed integrations for \nnumerous languages. \n\nKey features include live monitoring, protected access with API keys, and built-in UIs as well as \nsimplified access of OpenAI Chat compatible APIs across multiple languages.","url":"https://youtu.be/Ojo80oFQte8","wordCount":78,"lineCount":13,"group":"ai-server"},{"slug":"kamal-deployments","draft":false,"title":"Use Kamal to deploy .NET Apps to any Linux server","tags":["kamal","deployment","hosting"],"date":"\/Date(1732665600000+0000)\/","content":"Kamal is a CLI utility by the BaseCamp team that makes self hosting containers on any Linux host a lot easier to manage. \nWe've incorporated the use of Kamal into some of the most populate templates to give developers the ability to \nmanage their deployed containers using various Kamal commands, and use GitHub Actions as the CI for central deployment.","url":"https://youtu.be/-mDJfRG8mLQ","wordCount":76,"lineCount":10,"group":"actions","order":1},{"slug":"video2","draft":false,"title":"Schedule your Reoccurring Tasks with Background Jobs","tags":["jobs","ui","api"],"date":"\/Date(1726444800000+0000)\/","content":"In addition to queueing jobs, Background Jobs also supports scheduling recurring tasks \nto execute APIs or Commands at regular fixed intervals.\n\nDefine recurring tasks with flexible unix cron expressions or simple TimeSpan intervals and\nmonitor their progress in real-time from the Admins Jobs UI.","url":"https://youtu.be/DtB8KaXXMCM","wordCount":54,"lineCount":11,"group":"ui-jobs"},{"slug":"video1","draft":false,"title":"Background Jobs and Recurring Tasks","tags":["jobs","ui","api"],"date":"\/Date(1726099200000+0000)\/","content":"Background Jobs is our solution for managing background jobs and scheduled tasks \nin any .NET 8 App, implemented in true ServiceStack fashion where it seamlessly integrates \ninto existing ServiceStack Apps with a built-in Management UI to provide real-time monitoring, \ninspection and management of background jobs.","url":"https://youtu.be/2Cza_a_rrjA","wordCount":54,"lineCount":10,"group":"ui-jobs"},{"slug":"apikeys-admin","draft":false,"title":"API Keys with Built-In Admin and Identity User UIs","tags":["db","auth","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Building on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs which includes\ncustomizable built-in Admin UIs to manage both machine-to-machine API Keys and User API Keys, in addition all Identity Auth\nTailwind Templates includes a Identity User UIs for Users to create their own API Keys.","url":"https://youtu.be/U4vqOIHOs_Q","wordCount":85,"lineCount":11,"group":"ui-admin","order":1},{"slug":"commands-admin","draft":false,"title":"Build robust and observable systems with Commands","tags":["logic","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"How code-bases are structured is largely a matter of preference, however we've been able to add value \nin this area by introducing an appealing option with our new managed Commands Feature.\n\nIn addition to auto wiring all commands by default, it supports opt-in Auto Retry as well as an Admin UI \nto add observability around commands including timings, exceptions and a rolling list of latest commands executed.","url":"https://youtu.be/SXPdBHbncPc","wordCount":81,"lineCount":13,"group":"ui-admin","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story with API Keys for .NET 8 Microservices","tags":["auth","admin","api","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Admin Auth with API Keys benefits the class of Apps which don’t need Identity User Auth and the additional complexity \nit brings inc. Identity & Passwords, EF Migrations, Token Expirations, OAuth, etc.\n\nWith the introduction of API Keys we’re able to provide a simpler Auth Story for .NET 8 Microservices that’s easy for \nAdmin Users to manage and control which trusted clients and B2B Integrations can access its functionality.","url":"https://youtu.be/0ceU91ZBhTQ","wordCount":85,"lineCount":12,"group":"apis","order":3},{"slug":"press-vue","draft":false,"title":"Vite Vue Markdown Websites with Vite Press Plugin","tags":["vue","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we dive deep into the Vite Press Plugin, an alternative to VitePress for adding Markdown features to \nexisting Vite Vue projects. We explore the templates productive components including Tailwind CSS, Vue Router, \ndynamic Layouts, Iconify and Auto Component Imports, that work together with Vite Press Plugin universal Markdown \npowered features to create beautiful Website Blogs, Product Releases and Video Gallery Pages that can be reused across \nVue, React, and even .NET Razor and Blazor projects.","url":"https://youtu.be/u3FcgWlack4","wordCount":92,"lineCount":12,"group":"node","order":6},{"slug":"press-react","draft":false,"title":"Create static Websites with Vite React & Markdown, Host Free on GitHub Pages","tags":["react","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we will show how you can use the `press-react` template to create a beautiful React and Markdown \nstatic blog or content centric Websites that's easy to manage and add content. It utilizes the vite-plugin-press \nlibrary whose Markdown feature folders give you a consistent way of using markdown pages to create blogging, \nmarketing landing pages and other content heavy websites.","url":"https://youtu.be/S6O8QCaXDG0","wordCount":81,"lineCount":11,"group":"node","order":7},{"slug":"compose","draft":false,"title":"Mobile & Desktop Apps with Compose Multiplatform","tags":["compose","kotlin","android"],"date":"\/Date(1710115200000+0000)\/","content":"[JetBrains Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) builds on [Jetpack Compose](https://developer.android.com/jetpack/compose) - Google's modern toolkit for building\nnative Android UIs bringing it to more platforms, including Windows, macOS and Linux Desktops.\n\nIt offers a modern alternative for creating native Mobile, Desktop & Web Apps which can also leverage \n[Kotlin ServiceStack Reference](https://docs.servicestack.net/kotlin-add-servicestack-reference) for end-to-end typed APIs. We'll look at the latest [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/)\nand use it to build a cross-platform Desktop App integrated with a .NET API backend utilizing and end-to-end typed API\nintegration.","url":"https://youtu.be/r6T3B7o1GYE","wordCount":105,"lineCount":14,"group":"mobile"},{"slug":"vue-spa","draft":false,"title":"Productive ASP.NET Core Vite Vue SPA Tailwind Template with Identity Auth","tags":["vue","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `vue-spa` template which has incorporated changes from Microsoft's own \nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building \nweb applications with Vue.js, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/JlUjWlVslRg","wordCount":62,"lineCount":10,"group":"vue-projects","order":1},{"slug":"react-spa","draft":false,"title":"Productive ASP.NET Core Vite React SPA Tailwind Template with Identity Auth","tags":["react","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `react-spa` template which has incorporated changes from Microsoft's own\nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building\nweb applications with React, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/WXLF0piz6G0","wordCount":59,"lineCount":10,"group":"projects","order":2}],"posts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","image":"https://images.unsplash.com/photo-1639262498805-17c7dc422d37?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://servicestack.net/posts/npx-get-dtos","wordCount":690,"lineCount":125},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":479,"lineCount":123},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1593486544625-13ef2368e43a?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":1070,"lineCount":409},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1496368077930-c1e31b4e5b44?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":731,"lineCount":143},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","image":"https://images.unsplash.com/photo-1494961104209-3c223057bd26?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://servicestack.net/posts/kamal-deployments","wordCount":1119,"lineCount":133},{"slug":"ai-server","draft":false,"title":"Self Hosted AI Server for LLMs, Ollama, Comfy UI & FFmpeg","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1642516303080-431f6681f864?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://servicestack.net/posts/ai-server","wordCount":1728,"lineCount":361},{"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":"Demis Bellot","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-podcasts","wordCount":1021,"lineCount":167},{"slug":"scalable-sqlite","draft":false,"title":"Scalable Server SQLite Apps","summary":"Learn how to build concurrent, safe scalable SQLite .NET Apps in C#","image":"https://images.unsplash.com/photo-1558494949-ef010cbdcc31?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727308800000-0000)\/","url":"https://servicestack.net/posts/scalable-sqlite","wordCount":2187,"lineCount":363},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite C# Request Logs","summary":"Maintain C# Request Log History in rolling Monthly SQLite databases","image":"https://images.unsplash.com/photo-1535350356005-fd52b3b524fb?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727136000000-0000)\/","url":"https://servicestack.net/posts/sqlite-request-logs","wordCount":494,"lineCount":104},{"slug":"background-jobs","draft":false,"title":"Simple C# Background Jobs & Recurring Tasks for .NET 8","summary":"Introducing C# Background Jobs for managing background jobs and scheduled tasks","image":"https://images.unsplash.com/photo-1716191300020-b52dec5b70a8?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["workers","commands",".net8"],"date":"\/Date(1726012800000-0000)\/","url":"https://servicestack.net/posts/background-jobs","wordCount":4365,"lineCount":917},{"slug":"commands-feature","draft":false,"title":"Utilize C# Commands to build more robust and observable systems","summary":"Learn how to build testable, robust observable systems with the new Commands Feature","image":"https://images.unsplash.com/photo-1524741978410-350ba91a70d7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["commands",".net8"],"date":"\/Date(1719964800000-0000)\/","url":"https://servicestack.net/posts/commands-feature","wordCount":2422,"lineCount":507},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 C# Microservices","summary":"A Simple Auth configuration using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1529265895721-65945a176cff?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://servicestack.net/posts/simple-auth-microservices","wordCount":1154,"lineCount":270},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 C# APIs","summary":"Using C# API Keys for simplified fine-grained access control in ServiceStack .NET 8 APIs","image":"https://images.unsplash.com/photo-1693251952958-0f0f40882fe7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["apikeys",".net8","identity-auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://servicestack.net/posts/apikeys","wordCount":1998,"lineCount":394},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","summary":"Regenerate your License Key to support RedHat Enterprise Linux 9 Default Cryptography Policy","image":"https://images.unsplash.com/photo-1564296787121-726de5b37bf1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","servicestack","licensing"],"date":"\/Date(1719705600000-0000)\/","url":"https://servicestack.net/posts/rhel9-cryptography","wordCount":481,"lineCount":58},{"slug":"redis-outputcache","draft":false,"title":"Using ASP.NET Core Output Caching","summary":"How to use ASP.NET Core Output Caching to cache the response of a ServiceStack Service using ServiceStack.Redis","image":"https://images.unsplash.com/photo-1590247813693-5541d1c609fd?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://servicestack.net/posts/redis-outputcache","wordCount":1089,"lineCount":233},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"Using ASP.NET Core Rate Limiter Middleware","summary":"Learn how to use the new Rate Limiter Middleware in ServiceStack to protect your APIs from abuse.","image":"https://images.unsplash.com/photo-1527710200112-665192dc1c22?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://servicestack.net/posts/asp-rate-limiter-middleware","wordCount":1348,"lineCount":218},{"slug":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Explore the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","author":"Demis Bellot","tags":["kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://servicestack.net/posts/kotlin-compose-multiplatform","wordCount":1026,"lineCount":176},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"Explore the new enhanced Vite TypeScript React SPA template for .NET 8","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["react",".net8","autoquery","admin"],"date":"\/Date(1709683200000-0000)\/","url":"https://servicestack.net/posts/net8-react-spa-template","wordCount":2337,"lineCount":313},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Introducing the enhanced Vite TypeScript Vue SPA template for .NET 8","image":"https://images.unsplash.com/photo-1590212151175-e58edd96185b?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue",".net8","autoquery","admin"],"date":"\/Date(1709596800000-0000)\/","url":"https://servicestack.net/posts/net8-vue-spa-template","wordCount":1874,"lineCount":333},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Vite Press Plugin for Vite Vue & React Apps","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://servicestack.net/posts/vite-press-plugin","wordCount":2093,"lineCount":538},{"slug":"blazor-8-admin","draft":false,"title":"New Blazor Interactive Auto Template with Custom Admin UIs","summary":"Discover how to use ServiceStack.Blazor components to quickly create customizable and professional-looking admin pages in a Blazor application","image":"https://images.unsplash.com/photo-1535478044878-3ed83d5456ef?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["blazor",".net8","admin"],"date":"\/Date(1708905600000-0000)\/","url":"https://servicestack.net/posts/blazor-8-admin","wordCount":1429,"lineCount":218},{"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":"Demis Bellot","tags":[".net8","auth","jwt"],"date":"\/Date(1708560000000-0000)\/","url":"https://servicestack.net/posts/jwt-identity-auth","wordCount":1084,"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":"Demis Bellot","tags":[".net8","identity-auth","admin-ui"],"date":"\/Date(1708473600000-0000)\/","url":"https://servicestack.net/posts/identity-auth-admin-ui","wordCount":647,"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":"Demis Bellot","tags":[".net8","json","api"],"date":"\/Date(1708387200000-0000)\/","url":"https://servicestack.net/posts/system-text-json-apis","wordCount":943,"lineCount":212},{"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":"Darren Reid","tags":["openapi",".net8"],"date":"\/Date(1708300800000-0000)\/","url":"https://servicestack.net/posts/openapi-v3","wordCount":1195,"lineCount":199},{"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":"Demis Bellot","tags":[".net8","api"],"date":"\/Date(1707264000000-0000)\/","url":"https://servicestack.net/posts/servicestack-endpoint-routing","wordCount":3178,"lineCount":619},{"slug":"identity-migration","draft":false,"title":"Migrating to ASP.NET Core Identity for Authentication","summary":"A walkthrough of migrating our BlazorDiffusion example application over to ASP.NET Core Identity for authentication","image":"https://images.unsplash.com/photo-1596563910641-86f6aebaab9a?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["auth","identity-auth"],"date":"\/Date(1707177600000-0000)\/","url":"https://servicestack.net/posts/identity-migration","wordCount":3575,"lineCount":534}],"podcasts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://media.servicestack.com/podcasts/npx-get-dtos.mp3","wordCount":130,"lineCount":21},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://media.servicestack.com/podcasts/swift6-upgrade.mp3","wordCount":105,"lineCount":20},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://media.servicestack.com/podcasts/typed-openai-chat-ollama-apis.mp3","wordCount":127,"lineCount":20},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikey-credentials-auth.mp3","wordCount":123,"lineCount":21},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://media.servicestack.com/podcasts/kamal-deployments.mp3","wordCount":134,"lineCount":25},{"slug":"ai-server","draft":false,"title":"Introducing AI Server","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/ai-server.mp3","wordCount":123,"lineCount":27},{"slug":"v8-5-release","draft":false,"title":"ServiceStack v8.5 Release","summary":"The latest features in ServiceStack v8.5 covering release of AI Server and Kamal Deployments and more!","tags":["release","ai-server","jobs","api"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-5-release.mp3","wordCount":350,"lineCount":87},{"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 C# 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":163,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"C# Background Jobs","summary":"Taking a deep dive into C# 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":200,"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":226,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize C# 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":155,"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 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":172,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new C# 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":182,"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":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Talking about the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","tags":["template","kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://media.servicestack.com/podcasts/kotlin-compose-multiplatform.mp3","wordCount":179,"lineCount":44},{"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":164,"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":179,"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":238,"lineCount":54},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Universal Vite Press Plugin for Vite Vue & React Apps and its unique compatibility with .NET 8 Apps utilizing Markdig","tags":["template","docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/vite-press-plugin.mp3","wordCount":212,"lineCount":53},{"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(1733828926364)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"ai-server","draft":false,"title":"Introducing AI Server","image":"https://servicestack.net/img/posts/ai-server/ai-server-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We're excited to announce AI Server - an open-source, self-hosted Docker gateway for managing API access \nto various AI services. It offers centralized management of LLMs, Ollama endpoints, media APIs, Comfy UI\nand FFmpeg agents, distributing loads across multiple servers.\n\nIt's initial V1 release comes packed with features, including:\n\n - **Centralized Management**: Manage all your AI services from a single Admin UI\n - **Load Balancing**: Distribute loads across multiple servers\n - **Native Typed Integrations**: For 11 popular programming languages\n - **Synchronous, Queued, and Callback-based APIs**: For different use-cases\n - **Monitoring and Analytics**: Live monitoring, analytics and full history\n - **Protected Access**: With simple API keys","url":"https://servicestack.net/posts/ai-server","wordCount":111,"lineCount":19,"group":"v8.5","order":1},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates now using Kamal for deployments","image":"https://servicestack.net/img/posts/kamal-deployments/kamal-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We've updated the built-in GitHub Actions for all Identity Auth templates to use the [Kamal deployment](https://kamal-deploy.org/) tool\nfor customers considering their potential [cloud exit cost savings](https://world.hey.com/dhh/our-cloud-exit-savings-will-now-top-ten-million-over-five-years-c7d9b5bd)\nby exploring the shift in deployment strategy for self-hosting their .NET Docker Apps on their own servers or \nin-expensive cloud providers like [hetzner.com](https://www.hetzner.com) \n\nPreviously, a less streamlined process involving [SSH and Docker Compose](https://docs.servicestack.net/kamal-deploy) was used. \nNow, all Identity Auth templates utilize Kamal, a CLI tool simplifying deployments to any Linux server accessible via SSH.\nKamal automates tasks such as reverse proxy setup and TLS certificate management whilst providing useful \nlocal management tools via Kamal's commands.","url":"https://servicestack.net/posts/kamal-deployments","wordCount":125,"lineCount":16,"group":"v8.5","order":2},{"slug":"apikey-credentials-auth","draft":false,"title":"API Keys Credentials Provider for .NET 8 Microservices","image":"https://servicestack.net/img/posts/apikey-credentials-auth/ai-server-auth-apiexplorer.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"The usability of the **Simple Auth with API Keys** story has been significantly improved with the new \n`ApiKeyCredentialsProvider` which enables .NET Microservices to provide persistent UserSession-like \nbehavior using simple API Keys which can be configured together with `AuthSecretAuthProvider` and \n`ApiKeysFeature` to enable a Credentials Auth implementation users can use with their API Keys \nto restrict access to Authorized Users or Admin AuthSecret to protect Admin UIs and APIs.\n\n### Session Auth with API Keys\n\nBehind the scenes this creates a Server Auth Session but instead of maintaining an Authenticated \nUser Session it saves the API Key in the session then attaches the API Key to each request. \nThis makes it possible to make API Key validated requests with just a session cookie instead of \nrequiring resubmission of API Keys for each request.","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":143,"lineCount":18,"group":"v8.5","order":4},{"slug":"typed-openai-chat-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","image":"https://servicestack.net/img/posts/ai-server/ai-server-languages.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"AI Server's `OpenAiChatCompletion` API - is an OpenAI compatible Chat API with ChatGPT and\nother LLMs like Ollama, the benefit of which allows developers to use its Typed DTOs and ServiceStack\ngeneric Service Clients to call any Open AI Chat compatible API directly, in all of ServiceStack's\n11 supported popular programming languages.\n\nThis allows developers to easily integrate typed access to different LLMs into their applications.\nInstructions are provided for each language demonstrating how to install necessary packages, download DTOs,\nand send API requests.","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":95,"lineCount":15,"group":"v8.5","order":4},{"slug":"swift-6","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","image":"https://docs.servicestack.net/img/pages/servicestack-reference/swift-logo-banner.jpg","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"All generic service client libraries have been upgraded to support multiple file uploads with API requests \nto take advantage of AI Server APIs that accept file uploads like Image to Image, Speech to Text or its \nFFmpeg Image and Video Transforms.\n\nServiceStack.Swift received the biggest upgrade, which was also rewritten to take advantage of Swift 6 features, \nincluding Swift promises which replaced the previous PromiseKit dependency - making it now dependency-free!","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":86,"lineCount":12,"group":"v8.5","order":5},{"slug":"background-jobs","draft":false,"title":"Execute Background Jobs and Recurring Tasks","image":"https://servicestack.net/img/posts/background-jobs/jobs-dashboard.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"**Background Jobs** is our effortless solution for managing background jobs and \nscheduled tasks in any .NET 8 App, implemented in true ServiceStack fashion where \nit seamlessly integrates into existing ServiceStack Apps with a built-in Management UI \nto provide real-time monitoring, inspection and management of background jobs.\n\nIt packs all useful features we wanted in its initial V1 release, including:\n\n- No infrastructure dependencies\n - Monthly archivable rolling Databases with full Job Execution History\n- Execute existing **APIs** or **Commands**\n- Schedule **Reoccurring Tasks**\n- Serially execute jobs with **named Workers**\n- Queue Jobs that **Depends On** successful completion of a parent Job\n- Execute **Callback** on successful execution of Job\n- Queue Jobs to **Run After** a specified Date\n- Execute Jobs within the context of an Authenticated User\n- **Auto Retry** and **Timeout** failed jobs on a default or per-job limit\n- Cancellable Jobs\n- Requeue Failed Jobs\n- Maintain Status, Logs and Progress of Executing Jobs\n- Execute transitive (i.e. non-durable) jobs","url":"https://docs.servicestack.net/background-jobs","wordCount":164,"lineCount":28,"group":"v8.4","order":1},{"slug":"sqlite-request-logger","draft":false,"title":"Capture Request Logs in Monthly Rolling SQLite DBs","image":"https://servicestack.net/img/posts/sqlite-request-logs/sqlite-request-logs.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"SQLite's low latency, high-performance and embeddable nature make it ideal for self-managing \nisolated appliance black-box functionality like Request Logging which offers up to \n[35% faster disk performance](https://www.sqlite.org/fasterthanfs.html) than standard file logging.\n\n### Rolling Monthly SQLite Databases\n\nSQLite is unique in its ability to create lightweight databases on-the-fly where Requests \nwill be persisted into isolated Monthly databases which can be easily archived \ninto managed file storage instead of a singular growing database.\n\nSQLite Request Logs also make it easier to generate monthly aggregate reports that provide \nkey insights into the usage of your App.\n\n#### AutoQuery Admin Logging UI\n\nAs SQLite Requests Logs also makes it efficiently possible to sort and filter through logs, \nthe Admin Logging UI has been upgraded to using a fully queryable AutoQueryGrid when using \n`SqliteRequestLogger`","url":"https://docs.servicestack.net/sqlite-request-logs","wordCount":146,"lineCount":24,"group":"v8.4","order":2},{"slug":"scalable-sqlite","draft":false,"title":"Safe, Scalable, High Performance SQLite Apps","image":"https://servicestack.net/img/posts/scalable-sqlite/pvq.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"Ever since adding support for Litestream in ServiceStack project's templates GitHub Action Deployments \nwe've been using SQLite as the backend for our latest new .NET Apps as it's the most cost-effective \noption that frees us from needing to use cloud managed databases and by extension expensive major cloud \nproviders instead of the better value commodity cloud providers.\n\nSQLite is a highly-performant DB that can handle a large number of concurrent read operations and\n35% faster filesystem performance for write operations with next to no latency that's often \nfaster than other RDBMS's courtesy of its proximity to the running application which gives it\nunique advantages over traditional client/server RDBMS's where it's not susceptible to the \n[N+1 Queries problem](https://www.sqlite.org/np1queryprob.html) and is also able to execute your\ncustom C# Logic inside SQL Queries using [Application SQL Functions](https://www.sqlite.org/appfunc.html).\n\nWith [litestream.io](https://litestream.io) taking care of real-time replication to managed storage\nwe just need to workaround SQLite's single concurrent writer to unlock the value, performance and \nunique features of SQLite in our Apps which we cover in this release with integrated support for\nDatabase Locks and Sync Commands.","url":"https://docs.servicestack.net/ormlite/scalable-sqlite","wordCount":200,"lineCount":22,"group":"v8.4","order":3},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","image":"https://servicestack.net/img/whatsnew/v8.3/bg-security.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"API Keys are a simple and effective way to authorize access to your APIs, which are typically used for machine-to-machine\ncommunication, where a client application needs to access an API without user intervention.\nAPI Keys are often used to control access to specific resources or features in your API, providing a simple way\nto manage access control.\n\n### Redesigning API Keys\n\nBuilding on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs.\n\nGiven the primary use-case for API Keys is for machine-to-machine communication where the client isn't a User,\nnor do they want systems using their API Keys to have access to their User Account, we've changed\nhow API Keys work in .NET 8.","url":"https://docs.servicestack.net/auth/apikeys","wordCount":150,"lineCount":20,"group":"v8.3","order":1},{"slug":"commands","draft":false,"title":"Use Commands to build robust and observable systems","image":"https://servicestack.net/img/whatsnew/v8.3/commands.png","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"How code-bases are structured is largely a matter of developer preference, however we believe we've also been able to \nadd value in this area with the new appealing managed Commands Feature.\n\n### When to restructure\n\nTimes when you may want to consider moving logic out of your Service include:\n\n- **Code Reuse**: Make it easier to reuse your Service logic in other Services\n- **Complexity**: Break down complex logic into smaller more manageable pieces\n- **Testability**: Make it easier to test your Logic in isolation\n- **Observability**: Make it easier to log and monitor\n- **Robustness**: Make it easier to handle, retry and recover from errors\n- **Flexibility**: Make it easier to run in parallel or in a different managed thread\n\nWe'll look at how the new **Commands Feature** can help in these areas.","url":"https://docs.servicestack.net/commands","wordCount":141,"lineCount":21,"group":"v8.3","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","image":"https://img.youtube.com/vi/0ceU91ZBhTQ/maxresdefault.jpg","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"With ServiceStack now [fully integrated](/auth/identity-auth) with ASP.NET Identity Auth,\nour latest .NET 8 [Tailwind Templates](/start) offer a full-featured Auth Configuration complete with User Registration,\nLogin, Password Recovery, Two Factory Auth, and more.\n\nWhilst great for Web Applications that need it, it neglects the class of Apps which don't need User Auth and\nthe additional complexity it brings inc. Identity and Password Management, EF Migrations, Token Expirations, OAuth Integrations, etc.\n\nFor these stand-alone Apps, Microservices and Docker Appliances that would still like to restrict Access to their APIs\nbut don't need the complexity of ASP .NET Core's Authentication machinery, a simpler Auth Story would be preferred.\n\nWith the introduction of API Keys in this release we're able to provide a simpler Auth Story for .NET 8 Microservices\nthat's easy for **Admin** Users to manage and control which trusted clients and B2B Integrations can access their functionality.","url":"https://docs.servicestack.net/auth/admin-apikeys","wordCount":159,"lineCount":19,"group":"v8.3","order":3},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","image":"https://servicestack.net/img/posts/rhel9-cryptography/bg-redhat.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"A consequence of RedHat Enterprise Linux 9's hardened\n[system-wide cryptographic policies](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)\nis that it's incompatible with ServiceStack's current licensing which uses RSA encryption and SHA1 hashing algorithm\nto validate license keys.\n\nUnfortunately this makes it no longer possible to use License Keys to run unrestricted ServiceStack Apps on default\ninstalls of RHEL 9 or any of its variants.\n\n### Generate License Key for RHEL 9+\n\nStarting from **ServiceStack v8.3+** Customers can regenerate a new License Key with a stronger **SHA512** Hash Algorithm\nthat's compatible with RHEL 9's default hardened cryptography policy by visiting:\n\n:::{.text-2xl .text-indigo-600}\nhttps://account.servicestack.net/regenerate-license\n:::","url":"https://docs.servicestack.net/rhel9-cryptography","wordCount":110,"lineCount":23,"group":"v8.3","order":4},{"slug":"vue-spa","draft":false,"title":"Enhanced ASP .NET Core SPA Templates","image":"https://servicestack.net/img/whatsnew/v8.2/spa-logos.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"With ServiceStack now fully integrated with .NET 8, our focus has shifted from providing platform-agnostic solutions \nthat supports all ServiceStack's .NET Framework and .NET hosts to building on the new capabilities of .NET 8 by \nenhancing ASP .NET Core's built-in features and templates with ServiceStack's high-productivity features.\n\n### New Vue SPA Template\n\nThe latest Vue SPA template is a good example of this, building on and enhancing the built-in ASP.NET Core Vue SPA \ntemplate with many high-productivity features:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Highly Productive Vue Component Library\n- Effortless CRUD and Admin UIs with AutoQueryGrid","url":"https://docs.servicestack.net/releases/v8_02","wordCount":125,"lineCount":21,"group":"v8.2","order":1},{"slug":"react-spa","draft":false,"title":"New ASP.NET Core React SPA Template","image":"https://servicestack.net/img/whatsnew/v8.2/react-spa.png","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The ASP.NET Core Vite React SPA Template has also been upgraded and enhanced with many high-productivity features including:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Integration with shadcn/ui Tailwind React components\n- Native MDX Markdown integration\n- React Router and conventional file system based routing\n- Tailwind Validation bound Input Form Components","url":"https://docs.servicestack.net/releases/v8_02#asp.net-core-react-spa-template","wordCount":80,"lineCount":16,"group":"v8.2","order":2},{"slug":"compose-multiplatform","draft":false,"title":"New Kotlin Compose Multiplaform Template","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The last few years of neglect of Xamarin has removed itself from consideration as a viable development option for \ncreating native Mobile and Desktop Apps.\n\nFortunately JetBrains has stepped in to fill the void with its Compose Multiplatform UI Framework offering \na modern declarative alternative reactive for creating native Mobile, Desktop & Web Apps that can also leverage\nKotlin ServiceStack Reference for its end-to-end typed APIs.\n\nWe'll look at the latest Compose Multiplatform [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/) \nand use it to build a cross-platform Desktop App integrated with a .NET API backend which can both be developed from \nthe same JetBrains Fleet IDE.","url":"https://docs.servicestack.net/releases/v8_02#compose-multiplatform-ios-android-apps","wordCount":115,"lineCount":16,"group":"v8.2","order":3},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=1000","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The Vite Press Plugin is an alternative to VitePress for adding Markdown features to existing Vite Vue or React projects. \nIt's a non-intrusive plugin for Vue and React Vite apps that want to add markdown powered content features without needing \nto adopt an opinionated framework for their entire App.\n\n### Universal Markdown Features\n\nA goal for vite-press-plugin is to implement a suite of universal markdown-powered features that can be reused across Vue, \nReact and .NET Razor and Blazor projects, allowing you to incorporate same set of markdown feature folders to power \nmarkdown content features across a range of websites built with different technologies.\n\n### Vite Apps with vite-press-plugin\n\nThe vite-press-plugin currently powers the markdown features in the static Vite Vue and React templates which are ideal \nfor creating static websites, blogs, documentation and marketing websites that can be hosted FREE on GitHub Pages CDN","url":"https://docs.servicestack.net/releases/v8_02#vite-press-plugin","wordCount":153,"lineCount":21,"group":"v8.2","order":4},{"slug":"endpoint-routing","draft":false,"title":"Full Integration with ASP.NET Core 8","image":"https://servicestack.net/img/whatsnew/v8.1/aspnet-8.webp","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"We're happy to announce the latest ServiceStack v8.1 release supports deep integration with ASP.NET Core's \nstandardized features for execution of its APIs.\n\nThis reduces friction for integrating ServiceStack into existing .NET 8 Apps, encourages greater knowledge and reuse and \nsimplifies .NET development as developers have fewer concepts to learn and technology implementations \nto configure and maintain that are now applied across their entire .NET App.\n\nBetter yet, this is enabled by default in all of ServiceStack's new \n[Identity Auth .NET 8 templates](https://servicestack.net/start) which now embraces all these standard \nASP.NET Core features:\n\n- [ASP.NET Core Identity Auth](https://docs.servicestack.net/auth/identity-auth)\n- [ASP.NET Core IOC](https://docs.servicestack.net/releases/v8_01#asp.net-core-ioc)\n- [Endpoint Routing](https://docs.servicestack.net/releases/v8_01#endpoint-routing)\n- [System.Text.Json APIs](https://docs.servicestack.net/releases/v8_01#system.text.json)\n- [Open API v3 and Swagger UI](https://docs.servicestack.net/releases/v8_01#openapi-v3)\n- [JWT Identity Auth](https://docs.servicestack.net/releases/v8_01#jwt-identity-auth)","url":"https://docs.servicestack.net/releases/v8_01","wordCount":161,"lineCount":23,"group":"v8.1","order":1},{"slug":"system-json-apis","draft":false,"title":"System.Text.Json APIs","image":"https://servicestack.net/img/whatsnew/v8.1/system-text-json.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"ServiceStack Endpoint Routing APIs now utilize **System.Text.Json** - the default high-performance async \nJSON serializer used in .NET Apps for serializing its JSON APIs.\n\n### Enhanced System.Text.Json\n\nServiceStack uses a custom `JsonSerializerOptions` to improve compatibility with existing ServiceStack DTOs and \nServiceStack's rich ecosystem of generic \n[Add ServiceStack Reference Service Clients](https://docs.servicestack.net/add-servicestack-reference), which is configured to:\n\n- Uses `CamelCaseNamingPolicy` for property names\n- Supports Case Insensitive Properties\n- Not serialize `null` properties\n- Serializes `TimeSpan` and `TimeOnly` Data Types with XML Schema Time format\n- Supports `[DataContract]` annotations\n- Supports Custom Enum Serialization","url":"https://docs.servicestack.net/releases/v8_01#system.text.json","wordCount":107,"lineCount":21,"group":"v8.1","order":2},{"slug":"openapi-v3","draft":false,"title":"Swashbuckle OpenAPI v3 and Swagger UI","image":"https://servicestack.net/img/whatsnew/v8.1/openapiv3-logo.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"Utilizing the same **ASP.NET Core Endpoints** that the rest of the ASP.NET Core App uses enables your ServiceStack APIs \nto integrate with your wider ASP.NET Core application, opening up more opportunities for reuse of your ServiceStack APIs.\n\nThis opens up the ability to use common third party tooling like the popular `Swashbuckle` package used to to\nenable OpenAPI v3 specification generation of ASP .NET Core APIs which now includes ServiceStack APIs, \ndisplayed along-side Minimal and Web APIs. \n\nWe've created the **ServiceStack.AspNetCore.OpenApi** package to make this integration as easy as possible, which \nincorporates additional information from your ServiceStack APIs into Swagger metadata.","url":"https://docs.servicestack.net/releases/v8_01#openapi-v3","wordCount":118,"lineCount":15,"group":"v8.1","order":3},{"slug":"identity-auth-admin-users-ui","draft":false,"title":"Identity Auth Admin Users UI","image":"https://servicestack.net/img/whatsnew/v8.1/admin-ui-users-edit-custom.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"The new Identity Auth Admin UI is an example of value-added features that can benefit all .NET Core App, that \nenables a built-in Admin UI that's only accessible to **Admin** Users for managing Identity Auth\nusers at `/admin-ui/users`.\n\nIt's a highly customizable UI feature that includes standard features to lockout users, change user passwords and manage their roles\nas well as being flexible enough to support Custom `ApplicationUser` Identity Models including:\n\n - Custom Search Results\n - Custom Search Behavior\n - Custom Sort Order\n - Custom Editable Fields\n - Custom User Creation and Validation\n - Admin User Events to run custom logic","url":"https://docs.servicestack.net/releases/v8_01#asp.net-core-identity-auth-admin-ui","wordCount":112,"lineCount":19,"group":"v8.1","order":4}],"videos":[{"slug":"video1","draft":false,"title":"Self Hosted gateway for proxying LLM APIs, Ollama, ComfyUI & FFmpeg servers","tags":["servicestack","ai","gpt"],"date":"\/Date(1732665600000+0000)\/","content":"Introducing AI Server, a self-hosted Docker gateway managing API access to various AI services like LLMs and ComfyUI. \nIt offers centralized management, load balancing across multiple providers, and native typed integrations for \nnumerous languages. \n\nKey features include live monitoring, protected access with API keys, and built-in UIs as well as \nsimplified access of OpenAI Chat compatible APIs across multiple languages.","url":"https://youtu.be/Ojo80oFQte8","wordCount":78,"lineCount":13,"group":"ai-server"},{"slug":"kamal-deployments","draft":false,"title":"Use Kamal to deploy .NET Apps to any Linux server","tags":["kamal","deployment","hosting"],"date":"\/Date(1732665600000+0000)\/","content":"Kamal is a CLI utility by the BaseCamp team that makes self hosting containers on any Linux host a lot easier to manage. \nWe've incorporated the use of Kamal into some of the most populate templates to give developers the ability to \nmanage their deployed containers using various Kamal commands, and use GitHub Actions as the CI for central deployment.","url":"https://youtu.be/-mDJfRG8mLQ","wordCount":76,"lineCount":10,"group":"actions","order":1},{"slug":"video2","draft":false,"title":"Schedule your Reoccurring Tasks with Background Jobs","tags":["jobs","ui","api"],"date":"\/Date(1726444800000+0000)\/","content":"In addition to queueing jobs, Background Jobs also supports scheduling recurring tasks \nto execute APIs or Commands at regular fixed intervals.\n\nDefine recurring tasks with flexible unix cron expressions or simple TimeSpan intervals and\nmonitor their progress in real-time from the Admins Jobs UI.","url":"https://youtu.be/DtB8KaXXMCM","wordCount":54,"lineCount":11,"group":"ui-jobs"},{"slug":"video1","draft":false,"title":"Background Jobs and Recurring Tasks","tags":["jobs","ui","api"],"date":"\/Date(1726099200000+0000)\/","content":"Background Jobs is our solution for managing background jobs and scheduled tasks \nin any .NET 8 App, implemented in true ServiceStack fashion where it seamlessly integrates \ninto existing ServiceStack Apps with a built-in Management UI to provide real-time monitoring, \ninspection and management of background jobs.","url":"https://youtu.be/2Cza_a_rrjA","wordCount":54,"lineCount":10,"group":"ui-jobs"},{"slug":"apikeys-admin","draft":false,"title":"API Keys with Built-In Admin and Identity User UIs","tags":["db","auth","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Building on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs which includes\ncustomizable built-in Admin UIs to manage both machine-to-machine API Keys and User API Keys, in addition all Identity Auth\nTailwind Templates includes a Identity User UIs for Users to create their own API Keys.","url":"https://youtu.be/U4vqOIHOs_Q","wordCount":85,"lineCount":11,"group":"ui-admin","order":1},{"slug":"commands-admin","draft":false,"title":"Build robust and observable systems with Commands","tags":["logic","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"How code-bases are structured is largely a matter of preference, however we've been able to add value \nin this area by introducing an appealing option with our new managed Commands Feature.\n\nIn addition to auto wiring all commands by default, it supports opt-in Auto Retry as well as an Admin UI \nto add observability around commands including timings, exceptions and a rolling list of latest commands executed.","url":"https://youtu.be/SXPdBHbncPc","wordCount":81,"lineCount":13,"group":"ui-admin","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story with API Keys for .NET 8 Microservices","tags":["auth","admin","api","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Admin Auth with API Keys benefits the class of Apps which don’t need Identity User Auth and the additional complexity \nit brings inc. Identity & Passwords, EF Migrations, Token Expirations, OAuth, etc.\n\nWith the introduction of API Keys we’re able to provide a simpler Auth Story for .NET 8 Microservices that’s easy for \nAdmin Users to manage and control which trusted clients and B2B Integrations can access its functionality.","url":"https://youtu.be/0ceU91ZBhTQ","wordCount":85,"lineCount":12,"group":"apis","order":3},{"slug":"press-vue","draft":false,"title":"Vite Vue Markdown Websites with Vite Press Plugin","tags":["vue","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we dive deep into the Vite Press Plugin, an alternative to VitePress for adding Markdown features to \nexisting Vite Vue projects. We explore the templates productive components including Tailwind CSS, Vue Router, \ndynamic Layouts, Iconify and Auto Component Imports, that work together with Vite Press Plugin universal Markdown \npowered features to create beautiful Website Blogs, Product Releases and Video Gallery Pages that can be reused across \nVue, React, and even .NET Razor and Blazor projects.","url":"https://youtu.be/u3FcgWlack4","wordCount":92,"lineCount":12,"group":"node","order":6},{"slug":"press-react","draft":false,"title":"Create static Websites with Vite React & Markdown, Host Free on GitHub Pages","tags":["react","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we will show how you can use the `press-react` template to create a beautiful React and Markdown \nstatic blog or content centric Websites that's easy to manage and add content. It utilizes the vite-plugin-press \nlibrary whose Markdown feature folders give you a consistent way of using markdown pages to create blogging, \nmarketing landing pages and other content heavy websites.","url":"https://youtu.be/S6O8QCaXDG0","wordCount":81,"lineCount":11,"group":"node","order":7},{"slug":"compose","draft":false,"title":"Mobile & Desktop Apps with Compose Multiplatform","tags":["compose","kotlin","android"],"date":"\/Date(1710115200000+0000)\/","content":"[JetBrains Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) builds on [Jetpack Compose](https://developer.android.com/jetpack/compose) - Google's modern toolkit for building\nnative Android UIs bringing it to more platforms, including Windows, macOS and Linux Desktops.\n\nIt offers a modern alternative for creating native Mobile, Desktop & Web Apps which can also leverage \n[Kotlin ServiceStack Reference](https://docs.servicestack.net/kotlin-add-servicestack-reference) for end-to-end typed APIs. We'll look at the latest [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/)\nand use it to build a cross-platform Desktop App integrated with a .NET API backend utilizing and end-to-end typed API\nintegration.","url":"https://youtu.be/r6T3B7o1GYE","wordCount":105,"lineCount":14,"group":"mobile"},{"slug":"vue-spa","draft":false,"title":"Productive ASP.NET Core Vite Vue SPA Tailwind Template with Identity Auth","tags":["vue","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `vue-spa` template which has incorporated changes from Microsoft's own \nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building \nweb applications with Vue.js, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/JlUjWlVslRg","wordCount":62,"lineCount":10,"group":"vue-projects","order":1},{"slug":"react-spa","draft":false,"title":"Productive ASP.NET Core Vite React SPA Tailwind Template with Identity Auth","tags":["react","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `react-spa` template which has incorporated changes from Microsoft's own\nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building\nweb applications with React, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/WXLF0piz6G0","wordCount":59,"lineCount":10,"group":"projects","order":2}],"posts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","image":"https://images.unsplash.com/photo-1639262498805-17c7dc422d37?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://servicestack.net/posts/npx-get-dtos","wordCount":690,"lineCount":125},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":479,"lineCount":123},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1593486544625-13ef2368e43a?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":1070,"lineCount":409},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1496368077930-c1e31b4e5b44?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":731,"lineCount":143},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","image":"https://images.unsplash.com/photo-1494961104209-3c223057bd26?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://servicestack.net/posts/kamal-deployments","wordCount":1119,"lineCount":133},{"slug":"ai-server","draft":false,"title":"Self Hosted AI Server for LLMs, Ollama, Comfy UI & FFmpeg","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1642516303080-431f6681f864?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://servicestack.net/posts/ai-server","wordCount":1728,"lineCount":361},{"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":"Demis Bellot","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-podcasts","wordCount":1021,"lineCount":167},{"slug":"scalable-sqlite","draft":false,"title":"Scalable Server SQLite Apps","summary":"Learn how to build concurrent, safe scalable SQLite .NET Apps in C#","image":"https://images.unsplash.com/photo-1558494949-ef010cbdcc31?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727308800000-0000)\/","url":"https://servicestack.net/posts/scalable-sqlite","wordCount":2187,"lineCount":363},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite C# Request Logs","summary":"Maintain C# Request Log History in rolling Monthly SQLite databases","image":"https://images.unsplash.com/photo-1535350356005-fd52b3b524fb?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727136000000-0000)\/","url":"https://servicestack.net/posts/sqlite-request-logs","wordCount":494,"lineCount":104},{"slug":"background-jobs","draft":false,"title":"Simple C# Background Jobs & Recurring Tasks for .NET 8","summary":"Introducing C# Background Jobs for managing background jobs and scheduled tasks","image":"https://images.unsplash.com/photo-1716191300020-b52dec5b70a8?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["workers","commands",".net8"],"date":"\/Date(1726012800000-0000)\/","url":"https://servicestack.net/posts/background-jobs","wordCount":4365,"lineCount":917},{"slug":"commands-feature","draft":false,"title":"Utilize C# Commands to build more robust and observable systems","summary":"Learn how to build testable, robust observable systems with the new Commands Feature","image":"https://images.unsplash.com/photo-1524741978410-350ba91a70d7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["commands",".net8"],"date":"\/Date(1719964800000-0000)\/","url":"https://servicestack.net/posts/commands-feature","wordCount":2422,"lineCount":507},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 C# Microservices","summary":"A Simple Auth configuration using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1529265895721-65945a176cff?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://servicestack.net/posts/simple-auth-microservices","wordCount":1154,"lineCount":270},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 C# APIs","summary":"Using C# API Keys for simplified fine-grained access control in ServiceStack .NET 8 APIs","image":"https://images.unsplash.com/photo-1693251952958-0f0f40882fe7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["apikeys",".net8","identity-auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://servicestack.net/posts/apikeys","wordCount":1998,"lineCount":394},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","summary":"Regenerate your License Key to support RedHat Enterprise Linux 9 Default Cryptography Policy","image":"https://images.unsplash.com/photo-1564296787121-726de5b37bf1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","servicestack","licensing"],"date":"\/Date(1719705600000-0000)\/","url":"https://servicestack.net/posts/rhel9-cryptography","wordCount":481,"lineCount":58},{"slug":"redis-outputcache","draft":false,"title":"Using ASP.NET Core Output Caching","summary":"How to use ASP.NET Core Output Caching to cache the response of a ServiceStack Service using ServiceStack.Redis","image":"https://images.unsplash.com/photo-1590247813693-5541d1c609fd?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://servicestack.net/posts/redis-outputcache","wordCount":1089,"lineCount":233},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"Using ASP.NET Core Rate Limiter Middleware","summary":"Learn how to use the new Rate Limiter Middleware in ServiceStack to protect your APIs from abuse.","image":"https://images.unsplash.com/photo-1527710200112-665192dc1c22?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://servicestack.net/posts/asp-rate-limiter-middleware","wordCount":1348,"lineCount":218},{"slug":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Explore the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","author":"Demis Bellot","tags":["kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://servicestack.net/posts/kotlin-compose-multiplatform","wordCount":1026,"lineCount":176},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"Explore the new enhanced Vite TypeScript React SPA template for .NET 8","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["react",".net8","autoquery","admin"],"date":"\/Date(1709683200000-0000)\/","url":"https://servicestack.net/posts/net8-react-spa-template","wordCount":2337,"lineCount":313},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Introducing the enhanced Vite TypeScript Vue SPA template for .NET 8","image":"https://images.unsplash.com/photo-1590212151175-e58edd96185b?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue",".net8","autoquery","admin"],"date":"\/Date(1709596800000-0000)\/","url":"https://servicestack.net/posts/net8-vue-spa-template","wordCount":1874,"lineCount":333},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Vite Press Plugin for Vite Vue & React Apps","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://servicestack.net/posts/vite-press-plugin","wordCount":2093,"lineCount":538},{"slug":"blazor-8-admin","draft":false,"title":"New Blazor Interactive Auto Template with Custom Admin UIs","summary":"Discover how to use ServiceStack.Blazor components to quickly create customizable and professional-looking admin pages in a Blazor application","image":"https://images.unsplash.com/photo-1535478044878-3ed83d5456ef?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["blazor",".net8","admin"],"date":"\/Date(1708905600000-0000)\/","url":"https://servicestack.net/posts/blazor-8-admin","wordCount":1429,"lineCount":218},{"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":"Demis Bellot","tags":[".net8","auth","jwt"],"date":"\/Date(1708560000000-0000)\/","url":"https://servicestack.net/posts/jwt-identity-auth","wordCount":1084,"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":"Demis Bellot","tags":[".net8","identity-auth","admin-ui"],"date":"\/Date(1708473600000-0000)\/","url":"https://servicestack.net/posts/identity-auth-admin-ui","wordCount":647,"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":"Demis Bellot","tags":[".net8","json","api"],"date":"\/Date(1708387200000-0000)\/","url":"https://servicestack.net/posts/system-text-json-apis","wordCount":943,"lineCount":212},{"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":"Darren Reid","tags":["openapi",".net8"],"date":"\/Date(1708300800000-0000)\/","url":"https://servicestack.net/posts/openapi-v3","wordCount":1195,"lineCount":199},{"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":"Demis Bellot","tags":[".net8","api"],"date":"\/Date(1707264000000-0000)\/","url":"https://servicestack.net/posts/servicestack-endpoint-routing","wordCount":3178,"lineCount":619},{"slug":"identity-migration","draft":false,"title":"Migrating to ASP.NET Core Identity for Authentication","summary":"A walkthrough of migrating our BlazorDiffusion example application over to ASP.NET Core Identity for authentication","image":"https://images.unsplash.com/photo-1596563910641-86f6aebaab9a?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["auth","identity-auth"],"date":"\/Date(1707177600000-0000)\/","url":"https://servicestack.net/posts/identity-migration","wordCount":3575,"lineCount":534}],"podcasts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://media.servicestack.com/podcasts/npx-get-dtos.mp3","wordCount":130,"lineCount":21},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://media.servicestack.com/podcasts/swift6-upgrade.mp3","wordCount":105,"lineCount":20},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://media.servicestack.com/podcasts/typed-openai-chat-ollama-apis.mp3","wordCount":127,"lineCount":20},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikey-credentials-auth.mp3","wordCount":123,"lineCount":21},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://media.servicestack.com/podcasts/kamal-deployments.mp3","wordCount":134,"lineCount":25},{"slug":"ai-server","draft":false,"title":"Introducing AI Server","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/ai-server.mp3","wordCount":123,"lineCount":27},{"slug":"v8-5-release","draft":false,"title":"ServiceStack v8.5 Release","summary":"The latest features in ServiceStack v8.5 covering release of AI Server and Kamal Deployments and more!","tags":["release","ai-server","jobs","api"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-5-release.mp3","wordCount":350,"lineCount":87},{"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 C# 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":163,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"C# Background Jobs","summary":"Taking a deep dive into C# 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":200,"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":226,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize C# 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":155,"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 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":172,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new C# 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":182,"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":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Talking about the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","tags":["template","kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://media.servicestack.com/podcasts/kotlin-compose-multiplatform.mp3","wordCount":179,"lineCount":44},{"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":164,"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":179,"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":238,"lineCount":54},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Universal Vite Press Plugin for Vite Vue & React Apps and its unique compatibility with .NET 8 Apps utilizing Markdig","tags":["template","docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/vite-press-plugin.mp3","wordCount":212,"lineCount":53},{"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 dac5d189..d1c13702 100644 --- a/meta/2024/pages.json +++ b/meta/2024/pages.json @@ -1 +1 @@ -[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/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(1733828926364)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/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 7efdc687..82c029d5 100644 --- a/meta/all.json +++ b/meta/all.json @@ -1 +1 @@ -{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733827484316)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"ai-server","draft":false,"title":"Introducing AI Server","image":"https://servicestack.net/img/posts/ai-server/ai-server-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We're excited to announce AI Server - an open-source, self-hosted Docker gateway for managing API access \nto various AI services. It offers centralized management of LLMs, Ollama endpoints, media APIs, Comfy UI\nand FFmpeg agents, distributing loads across multiple servers.\n\nIt's initial V1 release comes packed with features, including:\n\n - **Centralized Management**: Manage all your AI services from a single Admin UI\n - **Load Balancing**: Distribute loads across multiple servers\n - **Native Typed Integrations**: For 11 popular programming languages\n - **Synchronous, Queued, and Callback-based APIs**: For different use-cases\n - **Monitoring and Analytics**: Live monitoring, analytics and full history\n - **Protected Access**: With simple API keys","url":"https://servicestack.net/posts/ai-server","wordCount":111,"lineCount":19,"group":"v8.5","order":1},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates now using Kamal for deployments","image":"https://servicestack.net/img/posts/kamal-deployments/kamal-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We've updated the built-in GitHub Actions for all Identity Auth templates to use the [Kamal deployment](https://kamal-deploy.org/) tool\nfor customers considering their potential [cloud exit cost savings](https://world.hey.com/dhh/our-cloud-exit-savings-will-now-top-ten-million-over-five-years-c7d9b5bd)\nby exploring the shift in deployment strategy for self-hosting their .NET Docker Apps on their own servers or \nin-expensive cloud providers like [hetzner.com](https://www.hetzner.com) \n\nPreviously, a less streamlined process involving [SSH and Docker Compose](https://docs.servicestack.net/kamal-deploy) was used. \nNow, all Identity Auth templates utilize Kamal, a CLI tool simplifying deployments to any Linux server accessible via SSH.\nKamal automates tasks such as reverse proxy setup and TLS certificate management whilst providing useful \nlocal management tools via Kamal's commands.","url":"https://servicestack.net/posts/kamal-deployments","wordCount":125,"lineCount":16,"group":"v8.5","order":2},{"slug":"apikey-credentials-auth","draft":false,"title":"API Keys Credentials Provider for .NET 8 Microservices","image":"https://servicestack.net/img/posts/apikey-credentials-auth/ai-server-auth-apiexplorer.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"The usability of the **Simple Auth with API Keys** story has been significantly improved with the new \n`ApiKeyCredentialsProvider` which enables .NET Microservices to provide persistent UserSession-like \nbehavior using simple API Keys which can be configured together with `AuthSecretAuthProvider` and \n`ApiKeysFeature` to enable a Credentials Auth implementation users can use with their API Keys \nto restrict access to Authorized Users or Admin AuthSecret to protect Admin UIs and APIs.\n\n### Session Auth with API Keys\n\nBehind the scenes this creates a Server Auth Session but instead of maintaining an Authenticated \nUser Session it saves the API Key in the session then attaches the API Key to each request. \nThis makes it possible to make API Key validated requests with just a session cookie instead of \nrequiring resubmission of API Keys for each request.","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":143,"lineCount":18,"group":"v8.5","order":4},{"slug":"typed-openai-chat-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","image":"https://servicestack.net/img/posts/ai-server/ai-server-languages.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"AI Server's `OpenAiChatCompletion` API - is an OpenAI compatible Chat API with ChatGPT and\nother LLMs like Ollama, the benefit of which allows developers to use its Typed DTOs and ServiceStack\ngeneric Service Clients to call any Open AI Chat compatible API directly, in all of ServiceStack's\n11 supported popular programming languages.\n\nThis allows developers to easily integrate typed access to different LLMs into their applications.\nInstructions are provided for each language demonstrating how to install necessary packages, download DTOs,\nand send API requests.","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":95,"lineCount":15,"group":"v8.5","order":4},{"slug":"swift-6","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","image":"https://docs.servicestack.net/img/pages/servicestack-reference/swift-logo-banner.jpg","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"All generic service client libraries have been upgraded to support multiple file uploads with API requests \nto take advantage of AI Server APIs that accept file uploads like Image to Image, Speech to Text or its \nFFmpeg Image and Video Transforms.\n\nServiceStack.Swift received the biggest upgrade, which was also rewritten to take advantage of Swift 6 features, \nincluding Swift promises which replaced the previous PromiseKit dependency - making it now dependency-free!","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":86,"lineCount":12,"group":"v8.5","order":5},{"slug":"background-jobs","draft":false,"title":"Execute Background Jobs and Recurring Tasks","image":"https://servicestack.net/img/posts/background-jobs/jobs-dashboard.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"**Background Jobs** is our effortless solution for managing background jobs and \nscheduled tasks in any .NET 8 App, implemented in true ServiceStack fashion where \nit seamlessly integrates into existing ServiceStack Apps with a built-in Management UI \nto provide real-time monitoring, inspection and management of background jobs.\n\nIt packs all useful features we wanted in its initial V1 release, including:\n\n- No infrastructure dependencies\n - Monthly archivable rolling Databases with full Job Execution History\n- Execute existing **APIs** or **Commands**\n- Schedule **Reoccurring Tasks**\n- Serially execute jobs with **named Workers**\n- Queue Jobs that **Depends On** successful completion of a parent Job\n- Execute **Callback** on successful execution of Job\n- Queue Jobs to **Run After** a specified Date\n- Execute Jobs within the context of an Authenticated User\n- **Auto Retry** and **Timeout** failed jobs on a default or per-job limit\n- Cancellable Jobs\n- Requeue Failed Jobs\n- Maintain Status, Logs and Progress of Executing Jobs\n- Execute transitive (i.e. non-durable) jobs","url":"https://docs.servicestack.net/background-jobs","wordCount":164,"lineCount":28,"group":"v8.4","order":1},{"slug":"sqlite-request-logger","draft":false,"title":"Capture Request Logs in Monthly Rolling SQLite DBs","image":"https://servicestack.net/img/posts/sqlite-request-logs/sqlite-request-logs.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"SQLite's low latency, high-performance and embeddable nature make it ideal for self-managing \nisolated appliance black-box functionality like Request Logging which offers up to \n[35% faster disk performance](https://www.sqlite.org/fasterthanfs.html) than standard file logging.\n\n### Rolling Monthly SQLite Databases\n\nSQLite is unique in its ability to create lightweight databases on-the-fly where Requests \nwill be persisted into isolated Monthly databases which can be easily archived \ninto managed file storage instead of a singular growing database.\n\nSQLite Request Logs also make it easier to generate monthly aggregate reports that provide \nkey insights into the usage of your App.\n\n#### AutoQuery Admin Logging UI\n\nAs SQLite Requests Logs also makes it efficiently possible to sort and filter through logs, \nthe Admin Logging UI has been upgraded to using a fully queryable AutoQueryGrid when using \n`SqliteRequestLogger`","url":"https://docs.servicestack.net/sqlite-request-logs","wordCount":146,"lineCount":24,"group":"v8.4","order":2},{"slug":"scalable-sqlite","draft":false,"title":"Safe, Scalable, High Performance SQLite Apps","image":"https://servicestack.net/img/posts/scalable-sqlite/pvq.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"Ever since adding support for Litestream in ServiceStack project's templates GitHub Action Deployments \nwe've been using SQLite as the backend for our latest new .NET Apps as it's the most cost-effective \noption that frees us from needing to use cloud managed databases and by extension expensive major cloud \nproviders instead of the better value commodity cloud providers.\n\nSQLite is a highly-performant DB that can handle a large number of concurrent read operations and\n35% faster filesystem performance for write operations with next to no latency that's often \nfaster than other RDBMS's courtesy of its proximity to the running application which gives it\nunique advantages over traditional client/server RDBMS's where it's not susceptible to the \n[N+1 Queries problem](https://www.sqlite.org/np1queryprob.html) and is also able to execute your\ncustom C# Logic inside SQL Queries using [Application SQL Functions](https://www.sqlite.org/appfunc.html).\n\nWith [litestream.io](https://litestream.io) taking care of real-time replication to managed storage\nwe just need to workaround SQLite's single concurrent writer to unlock the value, performance and \nunique features of SQLite in our Apps which we cover in this release with integrated support for\nDatabase Locks and Sync Commands.","url":"https://docs.servicestack.net/ormlite/scalable-sqlite","wordCount":200,"lineCount":22,"group":"v8.4","order":3},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","image":"https://servicestack.net/img/whatsnew/v8.3/bg-security.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"API Keys are a simple and effective way to authorize access to your APIs, which are typically used for machine-to-machine\ncommunication, where a client application needs to access an API without user intervention.\nAPI Keys are often used to control access to specific resources or features in your API, providing a simple way\nto manage access control.\n\n### Redesigning API Keys\n\nBuilding on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs.\n\nGiven the primary use-case for API Keys is for machine-to-machine communication where the client isn't a User,\nnor do they want systems using their API Keys to have access to their User Account, we've changed\nhow API Keys work in .NET 8.","url":"https://docs.servicestack.net/auth/apikeys","wordCount":150,"lineCount":20,"group":"v8.3","order":1},{"slug":"commands","draft":false,"title":"Use Commands to build robust and observable systems","image":"https://servicestack.net/img/whatsnew/v8.3/commands.png","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"How code-bases are structured is largely a matter of developer preference, however we believe we've also been able to \nadd value in this area with the new appealing managed Commands Feature.\n\n### When to restructure\n\nTimes when you may want to consider moving logic out of your Service include:\n\n- **Code Reuse**: Make it easier to reuse your Service logic in other Services\n- **Complexity**: Break down complex logic into smaller more manageable pieces\n- **Testability**: Make it easier to test your Logic in isolation\n- **Observability**: Make it easier to log and monitor\n- **Robustness**: Make it easier to handle, retry and recover from errors\n- **Flexibility**: Make it easier to run in parallel or in a different managed thread\n\nWe'll look at how the new **Commands Feature** can help in these areas.","url":"https://docs.servicestack.net/commands","wordCount":141,"lineCount":21,"group":"v8.3","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","image":"https://img.youtube.com/vi/0ceU91ZBhTQ/maxresdefault.jpg","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"With ServiceStack now [fully integrated](/auth/identity-auth) with ASP.NET Identity Auth,\nour latest .NET 8 [Tailwind Templates](/start) offer a full-featured Auth Configuration complete with User Registration,\nLogin, Password Recovery, Two Factory Auth, and more.\n\nWhilst great for Web Applications that need it, it neglects the class of Apps which don't need User Auth and\nthe additional complexity it brings inc. Identity and Password Management, EF Migrations, Token Expirations, OAuth Integrations, etc.\n\nFor these stand-alone Apps, Microservices and Docker Appliances that would still like to restrict Access to their APIs\nbut don't need the complexity of ASP .NET Core's Authentication machinery, a simpler Auth Story would be preferred.\n\nWith the introduction of API Keys in this release we're able to provide a simpler Auth Story for .NET 8 Microservices\nthat's easy for **Admin** Users to manage and control which trusted clients and B2B Integrations can access their functionality.","url":"https://docs.servicestack.net/auth/admin-apikeys","wordCount":159,"lineCount":19,"group":"v8.3","order":3},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","image":"https://servicestack.net/img/posts/rhel9-cryptography/bg-redhat.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"A consequence of RedHat Enterprise Linux 9's hardened\n[system-wide cryptographic policies](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)\nis that it's incompatible with ServiceStack's current licensing which uses RSA encryption and SHA1 hashing algorithm\nto validate license keys.\n\nUnfortunately this makes it no longer possible to use License Keys to run unrestricted ServiceStack Apps on default\ninstalls of RHEL 9 or any of its variants.\n\n### Generate License Key for RHEL 9+\n\nStarting from **ServiceStack v8.3+** Customers can regenerate a new License Key with a stronger **SHA512** Hash Algorithm\nthat's compatible with RHEL 9's default hardened cryptography policy by visiting:\n\n:::{.text-2xl .text-indigo-600}\nhttps://account.servicestack.net/regenerate-license\n:::","url":"https://docs.servicestack.net/rhel9-cryptography","wordCount":110,"lineCount":23,"group":"v8.3","order":4},{"slug":"vue-spa","draft":false,"title":"Enhanced ASP .NET Core SPA Templates","image":"https://servicestack.net/img/whatsnew/v8.2/spa-logos.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"With ServiceStack now fully integrated with .NET 8, our focus has shifted from providing platform-agnostic solutions \nthat supports all ServiceStack's .NET Framework and .NET hosts to building on the new capabilities of .NET 8 by \nenhancing ASP .NET Core's built-in features and templates with ServiceStack's high-productivity features.\n\n### New Vue SPA Template\n\nThe latest Vue SPA template is a good example of this, building on and enhancing the built-in ASP.NET Core Vue SPA \ntemplate with many high-productivity features:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Highly Productive Vue Component Library\n- Effortless CRUD and Admin UIs with AutoQueryGrid","url":"https://docs.servicestack.net/releases/v8_02","wordCount":125,"lineCount":21,"group":"v8.2","order":1},{"slug":"react-spa","draft":false,"title":"New ASP.NET Core React SPA Template","image":"https://servicestack.net/img/whatsnew/v8.2/react-spa.png","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The ASP.NET Core Vite React SPA Template has also been upgraded and enhanced with many high-productivity features including:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Integration with shadcn/ui Tailwind React components\n- Native MDX Markdown integration\n- React Router and conventional file system based routing\n- Tailwind Validation bound Input Form Components","url":"https://docs.servicestack.net/releases/v8_02#asp.net-core-react-spa-template","wordCount":80,"lineCount":16,"group":"v8.2","order":2},{"slug":"compose-multiplatform","draft":false,"title":"New Kotlin Compose Multiplaform Template","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The last few years of neglect of Xamarin has removed itself from consideration as a viable development option for \ncreating native Mobile and Desktop Apps.\n\nFortunately JetBrains has stepped in to fill the void with its Compose Multiplatform UI Framework offering \na modern declarative alternative reactive for creating native Mobile, Desktop & Web Apps that can also leverage\nKotlin ServiceStack Reference for its end-to-end typed APIs.\n\nWe'll look at the latest Compose Multiplatform [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/) \nand use it to build a cross-platform Desktop App integrated with a .NET API backend which can both be developed from \nthe same JetBrains Fleet IDE.","url":"https://docs.servicestack.net/releases/v8_02#compose-multiplatform-ios-android-apps","wordCount":115,"lineCount":16,"group":"v8.2","order":3},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=1000","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The Vite Press Plugin is an alternative to VitePress for adding Markdown features to existing Vite Vue or React projects. \nIt's a non-intrusive plugin for Vue and React Vite apps that want to add markdown powered content features without needing \nto adopt an opinionated framework for their entire App.\n\n### Universal Markdown Features\n\nA goal for vite-press-plugin is to implement a suite of universal markdown-powered features that can be reused across Vue, \nReact and .NET Razor and Blazor projects, allowing you to incorporate same set of markdown feature folders to power \nmarkdown content features across a range of websites built with different technologies.\n\n### Vite Apps with vite-press-plugin\n\nThe vite-press-plugin currently powers the markdown features in the static Vite Vue and React templates which are ideal \nfor creating static websites, blogs, documentation and marketing websites that can be hosted FREE on GitHub Pages CDN","url":"https://docs.servicestack.net/releases/v8_02#vite-press-plugin","wordCount":153,"lineCount":21,"group":"v8.2","order":4},{"slug":"endpoint-routing","draft":false,"title":"Full Integration with ASP.NET Core 8","image":"https://servicestack.net/img/whatsnew/v8.1/aspnet-8.webp","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"We're happy to announce the latest ServiceStack v8.1 release supports deep integration with ASP.NET Core's \nstandardized features for execution of its APIs.\n\nThis reduces friction for integrating ServiceStack into existing .NET 8 Apps, encourages greater knowledge and reuse and \nsimplifies .NET development as developers have fewer concepts to learn and technology implementations \nto configure and maintain that are now applied across their entire .NET App.\n\nBetter yet, this is enabled by default in all of ServiceStack's new \n[Identity Auth .NET 8 templates](https://servicestack.net/start) which now embraces all these standard \nASP.NET Core features:\n\n- [ASP.NET Core Identity Auth](https://docs.servicestack.net/auth/identity-auth)\n- [ASP.NET Core IOC](https://docs.servicestack.net/releases/v8_01#asp.net-core-ioc)\n- [Endpoint Routing](https://docs.servicestack.net/releases/v8_01#endpoint-routing)\n- [System.Text.Json APIs](https://docs.servicestack.net/releases/v8_01#system.text.json)\n- [Open API v3 and Swagger UI](https://docs.servicestack.net/releases/v8_01#openapi-v3)\n- [JWT Identity Auth](https://docs.servicestack.net/releases/v8_01#jwt-identity-auth)","url":"https://docs.servicestack.net/releases/v8_01","wordCount":161,"lineCount":23,"group":"v8.1","order":1},{"slug":"system-json-apis","draft":false,"title":"System.Text.Json APIs","image":"https://servicestack.net/img/whatsnew/v8.1/system-text-json.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"ServiceStack Endpoint Routing APIs now utilize **System.Text.Json** - the default high-performance async \nJSON serializer used in .NET Apps for serializing its JSON APIs.\n\n### Enhanced System.Text.Json\n\nServiceStack uses a custom `JsonSerializerOptions` to improve compatibility with existing ServiceStack DTOs and \nServiceStack's rich ecosystem of generic \n[Add ServiceStack Reference Service Clients](https://docs.servicestack.net/add-servicestack-reference), which is configured to:\n\n- Uses `CamelCaseNamingPolicy` for property names\n- Supports Case Insensitive Properties\n- Not serialize `null` properties\n- Serializes `TimeSpan` and `TimeOnly` Data Types with XML Schema Time format\n- Supports `[DataContract]` annotations\n- Supports Custom Enum Serialization","url":"https://docs.servicestack.net/releases/v8_01#system.text.json","wordCount":107,"lineCount":21,"group":"v8.1","order":2},{"slug":"openapi-v3","draft":false,"title":"Swashbuckle OpenAPI v3 and Swagger UI","image":"https://servicestack.net/img/whatsnew/v8.1/openapiv3-logo.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"Utilizing the same **ASP.NET Core Endpoints** that the rest of the ASP.NET Core App uses enables your ServiceStack APIs \nto integrate with your wider ASP.NET Core application, opening up more opportunities for reuse of your ServiceStack APIs.\n\nThis opens up the ability to use common third party tooling like the popular `Swashbuckle` package used to to\nenable OpenAPI v3 specification generation of ASP .NET Core APIs which now includes ServiceStack APIs, \ndisplayed along-side Minimal and Web APIs. \n\nWe've created the **ServiceStack.AspNetCore.OpenApi** package to make this integration as easy as possible, which \nincorporates additional information from your ServiceStack APIs into Swagger metadata.","url":"https://docs.servicestack.net/releases/v8_01#openapi-v3","wordCount":118,"lineCount":15,"group":"v8.1","order":3},{"slug":"identity-auth-admin-users-ui","draft":false,"title":"Identity Auth Admin Users UI","image":"https://servicestack.net/img/whatsnew/v8.1/admin-ui-users-edit-custom.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"The new Identity Auth Admin UI is an example of value-added features that can benefit all .NET Core App, that \nenables a built-in Admin UI that's only accessible to **Admin** Users for managing Identity Auth\nusers at `/admin-ui/users`.\n\nIt's a highly customizable UI feature that includes standard features to lockout users, change user passwords and manage their roles\nas well as being flexible enough to support Custom `ApplicationUser` Identity Models including:\n\n - Custom Search Results\n - Custom Search Behavior\n - Custom Sort Order\n - Custom Editable Fields\n - Custom User Creation and Validation\n - Admin User Events to run custom logic","url":"https://docs.servicestack.net/releases/v8_01#asp.net-core-identity-auth-admin-ui","wordCount":112,"lineCount":19,"group":"v8.1","order":4},{"slug":"net8","draft":false,"title":"Enhanced for .NET 8","image":"https://servicestack.net/img/whatsnew/v8.0/net8.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"We're excited to welcome the next major release of ServiceStack v8, designed to take advantage of many advancements\nfor in .NET's latest long-term release: **.NET 8**\n\n#### All NuGet Packages include net8.0 builds\n\nAll of ServiceStack's active NuGet packages now include `.net8.0` target framework builds along with their\ndependencies on Microsoft's packages upgraded to use the latest `8.0.0` that were released with .NET 8.\n\n#### All .NET Project Templates upgraded to .NET 8\n\nAll Project Templates have been upgraded to use **ServiceStack v8** and **.NET 8**, inc. built-in CI/CD GitHub Actions \nupgraded to use [secure rootless Linux Docker containers](https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/)\nbuilt into .NET 8 which allow you to effortlessly deploy your containerized .NET 8 Apps with Docker and\nGitHub Registry via SSH to any Linux Server.","url":"https://docs.servicestack.net/releases/v8_00","wordCount":141,"lineCount":21,"group":"v8.0","order":1},{"slug":"blazor-templates","draft":false,"title":"New .NET 8 Blazor Tailwind Templates","image":"https://servicestack.net/img/whatsnew/v8.0/blazor-templates.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"ServiceStack's new [Blazor](/posts/net8-blazor-template) project template takes advantage of .NET 8 Blazor's new features\nthat redefines modern Web Development in C# which sees our new templates adopting Blazor's\nfamiliar **ASP.NET Core Identity** and **Entity Framework** for its authentication, utilizes the modern\n[Tailwind CSS](https://tailwindcss.com) framework for beautiful responsive design and adopts .NET's best-practice\n[Docker Containerization](https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container) support for its built-in\n[GitHub Action Deployments](https://blazor.web-templates.io/deploy) - enabling a simple ready-made CI solution for deployment to any\nLinux Host via SSH and Docker compose.\n\n#### New Blazor Vue Template\n\nThe new [Blazor Vue](/posts/net8-best-blazor) template is ideal for building fast, SEO-friendly 100% statically rendered \nBlazor Web Apps where all its dynamic functionally uses Vue.js to progressively enhance its static rendered content - \neliminating Blazor's limitations of using static rendering to implement an entire App.","url":"https://docs.servicestack.net/releases/v8_00#new.net-8-blazor-template","wordCount":149,"lineCount":19,"group":"v8.0","order":2},{"slug":"identity-auth-templates","draft":false,"title":"ASP.NET Core Identity Auth & Entity Framework","image":"https://servicestack.net/img/whatsnew/v8.0/blazor-identityauth-qrcode.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"A significant change we've added to our new .NET 8 Project Templates is the adoption of the same ASP.NET Core \nIdentity Authentication that's configured in Microsoft's default Projects templates.\n\nASP.NET Core Identity Auth now used in new Integrated Auth projects Going forward all new ServiceStack .NET Project Templates \nwill adopt ASP.NET Identity Auth, which closely follows the same approach as the Microsoft Project Template it integrates \nServiceStack with, e.g. the new .NET 8 Blazor and Blazor Vue project templates adopts the exact same Auth configuration \nas Microsoft's default Blazor Project Template configured with Individual Identity Auth, likewise with the Bootstrap \nand Tailwind styled MVC and Razor Pages templates.\n\n#### ASP.NET Core Identity Auth Migration Guide\n\nMigrating from ServiceStack Auth to Identity Auth should be relatively straight-forward as ServiceStack uses a compatible \nIdentity v2 password hashing format, which should let you migrate your users to Identity Auth without them noticing.\n\nTo help with any migrations we've published an [Identity Auth Migration Guide](https://docs.servicestack.net/auth/migrate-to-identity-auth) \nwe've used to convert existing ServiceStack Auth Apps to use Identity Auth.","url":"https://docs.servicestack.net/releases/v8_00#asp.net-core-identity-auth-in.net-8-templates","wordCount":197,"lineCount":22,"group":"v8.0","order":3},{"slug":"php","draft":false,"title":"PHP Add ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v8.0/php.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"We're happy to announce the **11th** [Add ServiceStack Reference](https://docs.servicestack.net/add-servicestack-reference) \nlanguage to enjoy end-to-end typed support for calling .NET APIs - [PHP](https://www.php.net)!\n\n**PHP** is one of the worlds most popular programming languages thanks to its ease of use, \nflexibility and fast development experience which sees it excels as a popular language for web development and for development \nof popular CMS products like WordPress, Drupal and Joomla.\n\n### First class development experience\n\nTo maximize the experience for calling ServiceStack APIs within these environments ServiceStack now supports PHP as a\n1st class Add ServiceStack Reference supported language which gives PHP developers an end-to-end typed API for consuming\nServiceStack APIs, complete with IDE integration in [PhpStorm](https://www.jetbrains.com/phpstorm/) as well as\n[built-in support in x dotnet tool](/dotnet-tool#addupdate-servicestack-references)\nto generate Typed and annotated PHP DTOs for a remote ServiceStack instance from a single command-line.","url":"https://docs.servicestack.net/php-add-servicestack-reference","wordCount":156,"lineCount":21,"group":"v8.0","order":4},{"slug":"servicestack-ai","draft":false,"title":"ServiceStack.AI","image":"https://servicestack.net/img/whatsnew/v6.11/servicestack-ai.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"ServiceStack.AI covers a Free suite implementation-agnostic abstractions for different AI and GPT Providers to enable \nAI features in .NET Apps under the new **ServiceStack.AI** namespace in the dep-free `ServiceStack.Interfaces` package.\n\nThe implementations for these abstractions are maintained across NuGet packages in accordance with their dependencies:\n\n- `ServiceStack.Aws` - AI & GPT Providers for Amazon Web Services\n- `ServiceStack.Azure` - AI & GPT Providers for Microsoft Azure\n- `ServiceStack.GoogleCloud` - AI & GPT Providers for Google Cloud\n- `ServiceStack.AI` - AI & GPT Providers for OpenAI APIs and local Whisper and Node TypeChat installs\n\nThese abstractions and implementations enable .NET projects to add AI-powered natural language features whilst \ndecoupling their Speech-to-text and ChatGPT requirements from any single implementation where they're easily substituted","url":"https://docs.servicestack.net/releases/v6_11","wordCount":132,"lineCount":18,"group":"v6.11","order":1},{"slug":"typechat-examples","draft":false,"title":"TypeChat Examples","image":"https://servicestack.net/img/whatsnew/v6.11/typechat-examples.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"The TypeScript team have sought a simple approach to enable AI-powered features that instead of relying on engineering \nsophisticated prompts to instead use TypeScript type's system to define the machine readable model LLMs should return \nand then if necessary to use TypeScript compiler's Schema validation errors to enable auto correcting prompts to \nguide ChatGPT into returning valid responses that our App's can understand.\n\nTo show the versatility of this approach we've implemented the [All TypeChat Examples in .NET](https://typechat.netcore.io/) \nwhich in addition to supporting **5 different Speech-to-text** providers also supports utilizing a pure .NET approach \nof generating TypeChat's prompt in C# and using Semantic Kernel to connect with your preferred Chat GPT \nprovider or utilizing node's TypeChat library to interface with ChatGPT where it benefits from \nTypeScript schema validation and auto-retry of invalid responses with auto correcting prompts.","url":"https://docs.servicestack.net/releases/v6_11#all-typechat-examples","wordCount":150,"lineCount":17,"group":"v6.11","order":2},{"slug":"servicestack-googlecloud","draft":false,"title":"ServiceStack.GoogleCloud","image":"https://servicestack.net/img/whatsnew/v6.11/servicestack-googlecloud.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"The new `ServiceStack.GoogleCloud` package contains functionality for integrating with Google's Cloud Platform,\nincluding `GoogleCloudVirtualFiles` [Virtual Files](https://docs.servicestack.net/virtual-file-system) Provider\nenabling usage of Google Cloud's managed Storage that's easily substitutable with other VFS providers from\nAWS S3, Azure Blob storage, Cloudflare R2 or local File System. \n\nThe `GoogleCloudSpeechToText` provider implements ServiceStack.AI's Speech-to-Text abstraction for providing\ntranscription services using Google Cloud's [Speech-to-Text v2 API](https://cloud.google.com/speech-to-text/v2/docs)","url":"https://docs.servicestack.net/releases/v6_11#google-cloud-solution","wordCount":73,"lineCount":13,"group":"v6.11","order":3},{"slug":"razor-press","draft":false,"title":"Introducing Razor Press","image":"https://servicestack.net/img/whatsnew/v6.10/razor-press.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"Razor Press is a **Razor Pages** and **Markdown** powered alternative to Ruby's Jekyll & Vue's VitePress that's ideal for\ngenerating fast, static content-centric & documentation websites. Inspired by [VitePress](https://vitepress.dev),\nit's designed to effortlessly create documentation around content written in Markdown, rendered using C# Razor Pages\nthat's beautifully styled with [tailwindcss](https://tailwindcss.com) and [@tailwindcss/typography](https://tailwindcss.com/docs/typography-plugin).\n\nThe resulting statically generated HTML pages can be easily deployed anywhere, where it can be hosted by any HTTP Server or CDN.\nBy default it includes GitHub Actions to deploy it your GitHub Repo's **gh-pages** branch where it's hosted for FREE\non [GitHub Pages](https://pages.github.com) CDN which can be easily configured to use your\n[Custom Domain](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site).","url":"https://docs.servicestack.net/releases/v6_10","wordCount":127,"lineCount":16,"group":"v6.10","order":1},{"slug":"new-in-razor-ssg","draft":false,"title":"New in Razor SSG","image":"https://servicestack.net/img/whatsnew/v6.10/twitter-cards.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"The Razor SSG template continues to see improvements for creating richer static websites and Blogs: \n\n - RSS Feed for Blog Posts\n - New Razor Press Markdown Containers\n - Support for Markdown Includes\n - Meta Headers support for Twitter cards and Improved SEO\n - Blog Posts can include rich Vue Components\n - Light and Dark Mode Query Params\n - Threads and Mastodon Links for Blog Authors","url":"https://docs.servicestack.net/releases/v6_10#new-in-razor-ssg","wordCount":77,"lineCount":16,"group":"v6.10","order":2},{"slug":"rdbms-bulk-inserts","draft":false,"title":"RDBMS Bulk Inserts","image":"https://servicestack.net/img/whatsnew/v6.10/bulk-inserts.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"The latest release of OrmLite includes Bulk Inserts implementations for each supported RDBMS to support the most \nefficient ways for inserting large amounts of data, which is encapsulated behind OrmLite's new BulkInsert API\nwhich are up to **138x times faster** than traditional single INSERT statements.\n\nIn addition to an optimal default Bulk Insert implementation, it can also be configured to execute batched \nSQL Insert statements with configurable batch sizes which enjoys broad support across all RDBMS's.","url":"https://docs.servicestack.net/releases/v6_10#rdbms-bulk-inserts","wordCount":85,"lineCount":12,"group":"v6.10","order":3},{"slug":"jsonl-data-format","draft":false,"title":"JSON Lines Data Format","image":"https://servicestack.net/img/whatsnew/v6.10/jsonl.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"JSON Lines is an efficient JSON data format parseable by streaming parsers and text processing tools like Unix \nshell pipelines, whose streamable properties is making it a popular data format for maintaining large datasets \nlike the large AI datasets maintained on [huggingface.co](https://huggingface.co) that's now accessible on \n[Auto HTML API pages](https://docs.servicestack.net/auto-html-api).\n\nThe JSON Lines data format behaves the same way as the CSV format where it will automatically serialize the \nfirst IEnumerable property, including for all AutoQuery APIs which now benefit from a streamable JSON data format.","url":"https://docs.servicestack.net/releases/v6_10#json-lines-data-format","wordCount":104,"lineCount":13,"group":"v6.10","order":4},{"slug":"creator-kit","draft":false,"title":"Introducing CreatorKit","image":"https://servicestack.net/img/whatsnew/v6.9/creatorkit-splash.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"CreatorKit is a simple, customizable, self-hostable alternative solution to using Mailchimp for managing an organization's \nmailing lists, accepting newsletter subscriptions, defining customizable email layouts and templates and sending \nrich HTML emails to your Customers and subscribers using your preferred SMTP provider.\n\nIt also provides a private alternative to using Disqus to enhance websites with a threading and commenting system \non your preferred blog posts and website pages that you want to be able to connect with your community on.","url":"https://docs.servicestack.net/releases/v6_09","wordCount":88,"lineCount":12,"group":"v6.9","order":1},{"slug":"build-admin-uis-fast","draft":false,"title":"Build Admin UIs, Fast","image":"https://servicestack.net/img/whatsnew/v6.9/admin-ui.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"The new `` is a high-productivity Vue Component that combined with the `` content\ncan save an invaluable amount of time in being able to rapidly create custom Admin UIs.\n\nThe [blazor-vue](https://blazor-vue.web-templates.io) now includes a [Client Admin UI](https://blazor-vue.web-templates.io/admin/)\nshowing how we can replicate most of Locode's Auto UI in a customizable Vue App from a single\n[index.html](https://github.com/NetCoreTemplates/blazor-vue/blob/main/MyApp/wwwroot/admin/index.html) page. It also includes\nan example of a [Server Rendered Admin UI](https://blazor.web-templates.io/admin/) for those that prefer to develop\nMulti Page Apps with Razor Pages.","url":"https://docs.servicestack.net/releases/v6_09#build-admin-uis-fast","wordCount":102,"lineCount":14,"group":"v6.9","order":2},{"slug":"creating-gpt-agents","draft":false,"title":"Creating ChatGPT Agents to call System APIs","image":"https://servicestack.net/img/whatsnew/v6.9/gptmeetings.jpg","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"We've been working on different patterns of development to enable ChatGPT to leverage an App's ServiceStack APIs \nto solve given tasks. This is done through various prompting techniques which allows the Agent to reason about the \ncontext of the conversation and make decisions to reach for different 'tools' (your APIs) when trying to achieve \na specific goal.\n\nFor anyone wishing to incorporate AI into their systems we've created a introductory video into the techniques \nof how to leverage Large Language Models (LLMs) like GPT so they can make informed decisions on which of your \ninternal APIs they should call to accomplish a given task described in natural language.","url":"https://docs.servicestack.net/releases/v6_09#creating-chatgpt-agents-to-call-system-apis","wordCount":122,"lineCount":14,"group":"v6.9","order":3},{"slug":"vue-stable-diffusion","draft":false,"title":"Vue Stable Diffusion","image":"https://servicestack.net/img/whatsnew/v6.9/vuediffusion.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"Following [blazordiffusion.com](https://blazordiffusion.com) which was created to showcase ServiceStack's\nBlazor Server and Blazor WASM [project templates and components](https://servicestack.net/blazor), \nwe've rewritten a new Stable Diffusion App in Vue adopting a\n[Simple Modern JavaScript](https://razor-ssg.web-templates.io/posts/javascript) approach to showcase the **Razor SSG**\nProject Template and Tailwind [Vue Component Library](https://docs.servicestack.net/vue/) available at:\n\n

\n https://diffusion.works\n

\n\nVue Diffusion is built differently from other Razor SSG Apps as instead of being pre-rendered from static content \nlike Markdown documents, it's prerendered from https://blazordiffusion.com APIs to render its dynamic \n[Albums](https://diffusion.works/albums/), \n[Top](https://diffusion.works/top) and [Latest](https://diffusion.works/latest) pages at deployment which it does by \nconfiguring the App's Service Gateway to reference external Blazor Diffusion APIs.","url":"https://docs.servicestack.net/releases/v6_09#vue-stable-diffusion","wordCount":137,"lineCount":21,"group":"v6.9","order":4},{"slug":"feature1","draft":false,"title":"New statically generated Razor Pages & Vue website","image":"https://servicestack.net/img/whatsnew/v6.8/servicestack.net-home-1440.png","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We're celebrating reaching **150M Total Downloads** with a brand new website, rewritten from Ruby's Jekyll and jQuery with an exciting \nnew Razor SSG project template enhanced with Vue 3 components for client interactivity features.\n\nThe new Razor Pages & Markdown powered template takes advantage of the advances made in the last few releases with our npm \ndependency-free approach to [Simple, Modern JavaScript](/posts/javascript), the built-in support for \n[Prerendering Razor Pages](/posts/prerendering) and the rich Tailwind \n[Vue Component Library](https://docs.servicestack.net/vue/) to create an enjoyable experience for creating Fast, FREE, \nbeautiful, CDN-hostable static generated websites & blogs.","url":"https://docs.servicestack.net/releases/v6_08","wordCount":115,"lineCount":13,"group":"v6.8"},{"slug":"feature2","draft":false,"title":"New Razor Pages & Markdown powered static website","image":"https://servicestack.net/img/whatsnew/v6.8/razor-ssg.png","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We're excited to announce our new [razor-ssg](https://razor-ssg.web-templates.io) project template - a Razor Pages powered Markdown \nalternative to Ruby's Jekyll & Next.js that's ideal for generating static websites & blogs using C#, Razor Pages & Markdown.\n\nIt's now available FREE to all .NET Developers wanting to creating Fast, Beautiful Static Websites & Blogs with Razor Pages. \nIt's FREE to create, FREE to host on GitHub Pages CDN and also designed to support running FREE from any local .NET Installs \nor IDEs where it can be maintained in [GitHub Codespaces](https://github.com/features/codespaces) that you can do entirely from an iPad.","url":"https://docs.servicestack.net/releases/v6_08#razor-ssg","wordCount":117,"lineCount":12,"group":"v6.8"},{"slug":"feature3","draft":false,"title":"Streamlined Development for creating Flutter Apps","image":"https://servicestack.net/img/whatsnew/v6.8/flutter-todos.jpg","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We've greatly improved the end-to-end development experience of creating Flutter Mobile Apps that integrate with your ServiceStack APIs. \nTo demonstrate the seamless development experience, we've created a [video walk through](https://www.youtube.com/watch?v=t4WcXo4Vnio) \ncreating a new Blazor Server project that we use **mix flutter** to create a new Flutter App that we can use to quickly build \na Mobile App to call its existing Todo .NET APIs using the built-in [Typed Dart DTOs](https://docs.servicestack.net/dart-add-servicestack-reference) integration.\n\nThis release also includes improvements to generated Dart DTOs and servicestack Dart client library with new simplified APIs\nthat greatly improves usage in Reactive UIs by encapsulates Successful and Failed API Responses in a single `ApiResult` \nvalue which can be passed down and bound to reactive components without any inhibitive `try/catch` statements.","url":"https://docs.servicestack.net/releases/v6_08#flutter","wordCount":141,"lineCount":13,"group":"v6.8"},{"slug":"feature4","draft":false,"title":"Improved workflow for creating Flutter gRPC Apps","image":"https://servicestack.net/img/whatsnew/v6.8/flutter-grpc.jpg","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We've also improved the development experience for developers who prefer or have existing investments in gRPC will be able to \nbenefit from the improved development experience with **mix flutter-grpc** which works like **mix flutter** but instead \nadds a new Flutter gRPC App to an existing ServiceStack grpc project, with pre-configured gRPC integrations. \n\nTo demonstrate this productive workflow we've [created a new video](https://www.youtube.com/watch?v=fgts6sQ2Ags) which walks \nthrough the process of creating a new Flutter App from scratch, adding a Flutter gRPC App to an existing grpc .NET project, \nand using **mix flutter-grpc** to configure the Flutter App to work with ServiceStack's gRPC Services.","url":"https://docs.servicestack.net/releases/v6_08#flutter-grpc","wordCount":118,"lineCount":12,"group":"v6.8"},{"slug":"feature1","draft":false,"title":"New Auto API HTML Page for all APIs!","image":"https://servicestack.net/img/whatsnew/v6.7/autohtml-preview.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The new Auto HTML Page is the best way to visualize, inspect and integrate with your APIs which provides instant utility for API consumers in consuming your APIs with a built-in API Response Visualizer, JSON syntax highlighting, integrated Postman-like UI and API SDK integration all-in-one.\n\nA nice benefit of ServiceStack's API Design is that consuming APIs are fundamentally all done the same way in all languages, which just requires adding a dependency containing a generic ServiceClient which can be used to call any ServiceStack API using the typed DTOs copied directly from the API docs page to enable an end-to-end typed API without any external tooling or build steps.","url":"https://docs.servicestack.net/releases/v6_07","wordCount":125,"lineCount":9,"group":"v6.7"},{"slug":"feature2","draft":false,"title":"Vue AutoQueryGrid Component for Auto CRUD UIs","image":"https://servicestack.net/img/whatsnew/v6.7/gallery-contacts.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The new AutoQueryGrid component is the last high-productivity component missing from the Vue Tailwind Component Library to reach feature parity with Blazor Tailwind Component Library.\n\nIt enables an Effortless CRUD UI without any external dependencies, tooling or build steps, generating a capability-based UI for the currently authenticated user, enabling full CRUD functionality through the App's auth-protected AutoQuery APIs, validated by the APIs Declarative Validation Rules utilizing optimal Form Inputs for each C# property type with contextual validation binding, that displays its results in a rich formatted data grid customized with APIs Declarative UI Attributes.","url":"https://docs.servicestack.net/releases/v6_07#autoquerygrid","wordCount":108,"lineCount":10,"group":"v6.7"},{"slug":"feature3","draft":false,"title":"New Vue 3 Locode, API Explorer & Admin UIs","image":"https://servicestack.net/img/whatsnew/v6.7/new-vue3-uis.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"With access to all components needed, we've taken this opportunity to modernize all of ServiceStack's built-in UI's that were previously written with petite-vue and have rewritten them with Vue 3 and the Vue Components Library, which has become our preferred UI technology stack for all of ServiceStack's built-in UIs.\n\nUltimately the new Vue 3 UIs should appeal to a lot more use-cases with better reuse and customizability using the full Vue 3 framework and 3rd Party ecosystem for creating more compelling and interactive UIs.","url":"https://docs.servicestack.net/releases/v6_07#new-locode-api-explorer-admin-uis-now-in-vue-3","wordCount":100,"lineCount":9,"group":"v6.7"},{"slug":"feature4","draft":false,"title":"New API Index Page","image":"https://servicestack.net/img/whatsnew/v6.7/api-gallery.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The `/api` route is now being used as an opportunity to improve API Discovery by returning an App's public APIs grouped by user-defined tags with direct links to the API endpoint, viewing it in API Explorer and in Locode for AutoQuery APIs.","url":"https://docs.servicestack.net/releases/v6_07#api-index","wordCount":53,"lineCount":7,"group":"v6.7"},{"slug":"feature1","draft":false,"title":"New Tailwind Razor Pages & MVC Templates","image":"https://servicestack.net/img/whatsnew/v6.6/vue-mjs.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"The new Tailwind Razor Pages & MVC Templates enable rapid development of Modern Tailwind Apps without the pitfalls plaguing SPA development:\n\n- **[vue-mjs](https://vue-mjs.web-templates.io)** - Flagship Vue.mjs template with OrmLite, AutoQuery, boosted htmx links & static pre-rendered blogs\n- **[razor](https://razor.web-templates.io)** - Simple Razor Pages Template without DB or pre-rendering\n- **[mvc](https://mvc.web-templates.io)** - Want to use MVC Identity Auth and Entity Framework\n- **[web-tailwind](https://web-tailwind.web-templates.io)** - Empty tailwind template with no web framework configured\n- **[vue-vite](https://vue-vite.jamstacks.net)** - Vite + TypeScript in a simpler JAMStack Vite SPA App\n- **[vue-ssg](https://vue-ssg.jamstacks.net)** - Vite + TypeScript in an advanced JAMStack Vite SSG App","url":"https://docs.servicestack.net/releases/v6_06","wordCount":135,"lineCount":14,"group":"v6.6"},{"slug":"feature2","draft":false,"title":"Vue 3 Tailwind Components","image":"https://servicestack.net/img/whatsnew/v6.6/vue-components.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"To maximize productivity, all new Vue Tailwind templates are pre-configured to use the feature-rich [Vue 3 Taiwlind Library](https://docs.servicestack.net/vue/).\n\n**@servicestack/vue** is our growing Vue 3 Tailwind component library with a number of rich Tailwind components useful in .NET Web Apps, including DataGrids, Auto Forms, Modals, Slide Overs, Navigational Components, Formatters, standard HTML Form Input controls inc. FileInput, Autocomplete, TagInput - all with integrated contextual validation binding.\n\nIt's our cornerstone library for enabling a highly productive dev model across our Vue.js Tailwind Project templates that we'll be continuing to invest in to unlock even greater productivity - watch this space!","url":"https://docs.servicestack.net/vue/","wordCount":113,"lineCount":11,"group":"v6.6"},{"slug":"feature3","draft":false,"title":"ES6 JS Module Add ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v6.6/mjs-update-reference-rider.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"The new ES6 classes provide a productive type-safe development model during development but can also be referenced as-is in JS Module scripts and run natively in browsers to enable instant typed API integrations without any build tools!\n\nTo achieve this the ES6 classes are annotated with JSDoc type hints in comments which enjoys broad support in IDEs and tools like TypeScript where it can be used to provide type information in JavaScript files.\n\nThey're now a first-class Add ServiceStack Reference language supported language complete with IDE integration in the latest ServiceStack Plugins for VS .NET and JetBrains IDEs.","url":"https://docs.servicestack.net/releases/v6_06#js-module-es6-class-dtos","wordCount":111,"lineCount":11,"group":"v6.6"},{"slug":"feature4","draft":false,"title":"Static prerendered Markdown Razor Pages","image":"https://servicestack.net/img/whatsnew/v6.6/razor-pages-prerendering.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"Prerendering static content is a popular technique used by JAMStack Apps to improve the performance, reliability and scalability of Web Apps that's able to save unnecessary computation at runtime by generating static content at deployment which can be optionally hosted from a CDN for even greater performance.\n\nAs it's a valuable performance optimizing technique it's included in the [vue-mjs](https://vue-mjs.web-templates.io) template to show how it can be easily achieved within a Razor Pages App. Since prerendered content is only updated at deployment, it's primarily only useful for static content like markdown powered blogs.\n\nFor those interested in utilizing this optimization we've published details on how this works in the\n**[Prerendering Razor Pages](https://vue-mjs.web-templates.io/blog/prerendering)** blog post.","url":"https://vue-mjs.web-templates.io/posts/prerendering","wordCount":131,"lineCount":11,"group":"v6.6"},{"slug":"feature1","draft":false,"title":"Blazor Dark Mode Everywhere","image":"https://servicestack.net/img/whatsnew/v6.5/dark-and-light-mode.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"Tailwind has revolutionized how we style our Web Apps with its mobile first design system that's dramatically simplified creating maintainable responsive Web Apps. It also excels at adding support for Dark Mode with its first-class dark: modifier allowing the use of standard tailwind classes to specify what elements should look like when viewed in Dark Mode.\n\nWe're happy to announce that Dark Mode support has been added to **all ServiceStack.Blazor Tailwind components** and all Blazor Tailwind project templates where you'll be able to toggle on/off Dark Mode with the new **DarkModeToggle** component.","url":"https://docs.servicestack.net/releases/v6_05","wordCount":104,"lineCount":9,"group":"v6.5"},{"slug":"feature2","draft":false,"title":"New Blazor Components","image":"https://servicestack.net/img/whatsnew/v6.5/blazordiffusion-Autocomplete.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The ServiceStack.Blazor component library continues to expand with exciting new Components and improvements, including:\n\n- **Autocomplete** - Rich content Input to quickly search & select items\n- **TagInput** - UX friendly input for managing a list of strings like words or tags\n- **FormStyle.Card** - Render Auto Forms from POCO classes in a Card Layout\n- **NavList** - Beautiful Nav Links list component with Icons + Descriptions\n- **Colored Buttons** - Render buttons in different primary Tailwind colors\n- **SelectInput Expressions** - Declaratively define Select Input Options\n- **Custom Edit & Create Forms** - Use forms in custom AutoQueryGrids","url":"https://docs.servicestack.net/releases/v6_05#blazor-components","wordCount":103,"lineCount":15,"group":"v6.5"},{"slug":"feature3","draft":false,"title":"Blazor Diffusion","image":"https://servicestack.net/img/whatsnew/v6.5/blazordiffusion.com_splash.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The goal of our increasing Blazor investments is to enable a highly productive and capable platform for rapidly developing a majority of internal Apps CRUD functionality as well as enabling a hybrid development model where the management of Back office supporting tables can be quickly implemented using custom AutoQueryGrid components freeing up developers to be able to focus a majority of their efforts where they add the most value - in the bespoke Blazor UI's optimized customer-facing UX.\n\nTo best demonstrate its potential we've created [blazordiffusion.com](https://blazordiffusion.com) - a new ServiceStack.Blazor App front-end for Stable Diffusion - a deep learning text-to-image model that can generate quality images from a text prompt. It's a great example of Hybrid Development in action where the entire user-facing UI is a bespoke Blazor App that's optimized for creating, searching, cataloging and discovering Stable Diffusion generated images, whilst all its supporting admin tasks to manage the back office tables that power the UI were effortlessly implemented with custom AutoQueryGrid components.","url":"https://docs.servicestack.net/releases/v6_05#blazor-diffusion","wordCount":178,"lineCount":9,"group":"v6.5"},{"slug":"feature4","draft":false,"title":"Universal Blazor API Components","image":"https://servicestack.net/img/whatsnew/v6.5/blazor-universal-components.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The recommendation to access DB's directly in Blazor Server components encourages a more tightly-coupled and less reusable & testable architecture than the traditional well-defined API dev model used in client/server Mobile & Desktop Apps or Web SPA Apps like Blazor WASM.\n\nTo achieve the best of both worlds, we've enabled support for utilizing the In Process Service Gateway in Blazor Server Apps which lets you retain the traditional client/server dev model for invoking your Server APIs In Process - avoiding any serialization, HTTP networking or even Kestrel middleware overhead to invoke your APIs directly!\n\nThis enables using the exact same source code to call APIs in Blazor Server and WASM which allows us to develop reusable Blazor Components to invoke the same Server APIs that serve Web, Mobile and Desktop Apps in Blazor Server Apps.","url":"https://youtu.be/66DgLHExC9E","wordCount":145,"lineCount":11,"group":"v6.5"},{"slug":"feature1","draft":false,"title":"RAD Blazor","image":"https://servicestack.net/img/whatsnew/v6.4/blazor-components-youtube.jpg","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We're excited to announce exciting new Blazor Components enabling a compelling a Rapid Application Development platform for Blazor Apps delivering many of the productivity benefits previously limited to [Locode](/locode).\n\nOur new native Blazor Components allows for a beautiful progression story where you can start with a [Database-First Locode](https://docs.servicestack.net/locode/database-first) solution to instantly [generate Data Models and CRUD APIs](/locode/database-first#exporting-to-code-first-types) around your existing databases that thanks to the new `AutoQueryGrid` Blazor component will be able to trivially implement both CRUD UI's and optimized Blazor UIs in the same Blazor App.","url":"https://docs.servicestack.net/releases/v6_04","wordCount":101,"lineCount":9,"group":"v6.4"},{"slug":"feature2","draft":false,"title":"Blazor Server Template","image":"https://servicestack.net/img/whatsnew/v6.4/blazor-server.png","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We're happy to announce our new Blazor Server App template offering a number compelling advantages over Blazor WASM, including:\n\n- A superior dev model and debugging experience\n- Improved live-reload and faster iterative dev cycles\n- Full access to .NET Server functionality\n- Better start times & UI responsiveness\n- Less complexity from unnecessary client project or pre-rendering solutions","url":"https://docs.servicestack.net/releases/v6_04#blazor-server","wordCount":63,"lineCount":13,"group":"v6.4"},{"slug":"feature3","draft":false,"title":"Blazor Component Gallery","image":"https://servicestack.net/img/whatsnew/v6.4/gallery-splash.png","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"ServiceStack.Blazor Components gives you the ideal development workflow without compromise. Effortless, highly productive, API integrated Rich Blazor UI Components with 100% Server model reuse and integrated contextual validation.\n\nTo better showcase our growing Blazor functionality we've created new Blazor Gallery websites showcasing usage of available rich Blazor Components for rapidly develop beautiful Tailwind Web Apps available in both [Blazor Server](https://blazor-gallery.servicestack.net) and [Blazor WASM](https://blazor-gallery.jamstacks.net) Web Apps.","url":"https://docs.servicestack.net/releases/v6_04#blazor-gallery","wordCount":82,"lineCount":9,"group":"v6.4"},{"slug":"feature4","draft":false,"title":"Debug DB Migrations from IDE","image":"https://servicestack.net/img/whatsnew/v6.4/database-migrations-youtube.jpg","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We've continued improving our story around [Code-First DB Migrations](/ormlite/db-migrations) and have created a [new video](https://www.youtube.com/embed/NIVFqute7JQ) demonstrating how it can be used to maintain DB Schema migrations under a typical development workflow.\n\nAs they encourage a structured workflow for incremental development of new App features we've upgraded all modern [jamstacks.net](https://jamstacks.net)\ntemplates to adopt DB Migrations for creating and populating their App DB.\n\nA benefit of DB Migrations being implemented in a library instead of wrapped up behind an external tool, is that it's better integrated and more versatile in supporting more executable options like being able to run from code, a feature the new `MigrationTasks` Explicit TestFixture benefits from enabling DB Migrations to be run or debugged directly from within your IDE.","url":"https://docs.servicestack.net/releases/v6_04#db-migrations","wordCount":140,"lineCount":12,"group":"v6.4"},{"slug":"feature1","draft":false,"title":"Simple Code-First DB Migrations","image":"https://servicestack.net/img/whatsnew/v6.3/db-migrations.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"We're excited to share the next release of ServiceStack which sees the introduction of our simple Database Migration solution with Code-First DB Migrations which advances OrmLite's light-weight code-first development approach with a simple change based migration solution that facilitates the code-first development workflow of OrmLite.\n\nStarting from a seamless quick install and supporting multiple running options from command-line tooling, IDE run npm scripts, run, debug & verify from unit tests and integrated with our GitHub Action deployments where only successful migrations are deployed.\n\nInstead of relying on generation by an opaque tool, this code-first approach treats DB Migrations like any other maintainable & logically structured code written by developers where it maintains a connected audit history in source control together with the feature that needs the schema changes.","url":"https://docs.servicestack.net/releases/v6_03#code-first-db-migrations","wordCount":139,"lineCount":11,"group":"v6.3"},{"slug":"feature2","draft":false,"title":"Manage App Redis Servers with Redis Admin","image":"https://servicestack.net/img/whatsnew/v6.3/admin-ui-redis.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"The Redis Admin UI lets you manage your App's configured Redis Server with a user-friendly UX for managing core Redis data types, simple search functionality to quickly find Redis values, quick navigation between related values, first class support for JSON values and a flexible command interface and command history to inspect all previously run redis commands that's easily editable & rerun.","url":"https://docs.servicestack.net/releases/v6_03#redis-admin-ui","wordCount":75,"lineCount":7,"group":"v6.3"},{"slug":"feature3","draft":false,"title":"Browse App RDBMS Tables with Database Admin","image":"https://servicestack.net/img/whatsnew/v6.3/admin-ui-database.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"The new built-in Database Admin UI lets you quickly browse your App's configured RDBMS schemas and tables, which without any additional configuration your App's configured databases, their schemas, tables and any registered [named connections](https://docs.servicestack.net/ormlite/getting-started#multiple-database-connections) will be navigable from the home page where they'll be browsable with a familiar tabular search results grid, similar in appearance and functionality to [Locode's Auto UI](/locode) where their resultsets can each be personalized with flexible query preferences and filtering options that's persisted across browser restarts.","url":"https://docs.servicestack.net/releases/v6_03#database-admin-ui","wordCount":98,"lineCount":7,"group":"v6.3"},{"slug":"feature1","draft":false,"title":"Beautiful Blazor Tailwind Template","image":"https://servicestack.net/img/whatsnew/v6.2/blazor-tailwind.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The feature-rich [Blazor WASM Tailwind](https://docs.servicestack.net/templates-blazor-tailwind) template us ideal for teams with strong C# skills building Line Of Business (LOB) applications who prefer utilizing Tailwind's modern utility-first CSS design system to create beautiful, instant-loading Blazor WASM Apps.","url":"https://docs.servicestack.net/releases/v6_02","wordCount":50,"lineCount":7,"group":"v6.2"},{"slug":"feature2","draft":false,"title":"Create Litestream Apps and Save 10x on Hosting","image":"https://servicestack.net/img/whatsnew/v6.2/litestream-costs.svg","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"Having achieved the best architecture for delivering [max value](https://jamstacks.net/posts/hosting) and performance with our [jamstacks.net](https://jamstacks.net) templates, the last expensive vital component used in most Web Apps is hosting of their expensive managed databases. Despite most RDBMS's being OSS and free of licensing costs, major cloud companies continue to charge artificially high hosting costs to provide redundant hosting of App data.\n\n[Litestream](https://litestream.io) lets us avoid these expensive hosting costs by providing transparent per-second replica backups to inexpensive managed storage, enabling latency-free queries, simplified hosting architectures at vastly reduced hosting costs.","url":"https://docs.servicestack.net/releases/v6_02.html#litestream","wordCount":112,"lineCount":9,"group":"v6.2"},{"slug":"feature3","draft":false,"title":"Gain real-time insights with built-in Profiling","image":"https://servicestack.net/img/whatsnew/v6.2/profiling.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The new Request Logging & Profiling UIs bring an invaluable new level of observability into your App, from being able to quickly inspect and browse incoming requests, to tracing their behavior from their generated events in the new [Diagnostic Source](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.diagnosticsource?view=net-6.0) capabilities added all throughout ServiceStack, which both power the new UIs and enables new introspectability from code where you can now to tap in to inspect & debug when each diagnostic event occurs.","url":"https://docs.servicestack.net/releases/v6_02.html#request-logging-profiling","wordCount":94,"lineCount":7,"group":"v6.2"},{"slug":"feature4","draft":false,"title":"Manage DB Validation Rules with Validation UI","image":"https://servicestack.net/img/whatsnew/v6.2/validation-video.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The DB Validation feature leverages the existing [Declarative Validation](https://docs.servicestack.net/declarative-validation) infrastructure where it enables dynamically managing Request DTO Type and Property Validators from a RDBMS data source which immediately takes effect at runtime that carries the same performance profile at runtime as they can be optionally cached where they'll only need to be re-hydrated from the database after modification.","url":"https://docs.servicestack.net/releases/v6_02.html#db-validation","wordCount":76,"lineCount":7,"group":"v6.2"},{"slug":"feature1","draft":false,"title":"Rapid Application Development with Locode","image":"https://servicestack.net/img/whatsnew/v6.1/locode-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"We're excited to announce [Locode](/locode), our **Rapid Application Development** solution to quickly develop\nbeautiful Full Stack CRUD Apps around **AutoQuery APIs**, suitable for a wide number of use-cases including:\n\n- Rapid prototyping by creating an instant UI around existing **Database-First** RDBMS tables\n- Declarative **Code-First** development model with unprecedented customizability (exportable from Database-First)\n- **Hybrid Apps** with a custom UI to optimize common workflows whilst using Locode's Auto UI to manage Back office tables\n\nAs Locode's UI is built on top of ServiceStack's industrial strength AutoQuery APIs, Hybrid Apps can benefit from its superior end-to-end typed development model for creating Web, Mobile & Desktop Apps.","url":"https://docs.servicestack.net/releases/v6_01","wordCount":115,"lineCount":14,"group":"v6.1"},{"slug":"feature2","draft":false,"title":"Database-First Development Model","image":"https://servicestack.net/img/whatsnew/v6.1/youtube-locode-intro.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"Using [AutoQuery's AutoGen](https://docs.servicestack.net/autoquery-autogen) enables the quickest way to modernize an existing database by dynamically creating Data Models & AutoQuery CRUD APIs from RDBMS table schemas at runtime.\n\nLocode provides a highly functional UI out-of-the-box that doesn't rely on code-gen that allows you to only override the Custom UI or Custom API implementation when needed resulting in a significantly smaller code-base to maintain as reflected in the comparitive code-bases of a customized\nNorthwind Locode App vs the Northwind code-base of a popular RAD code-gen tool for .NET\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Locode NorthwindRadzen Northwind
~120 lines of C#~4500 lines of C# (generated)
29 lines custom Home Page10k+ lines of Angular HTML/TS (generated)
","url":"https://docs.servicestack.net/releases/v6_01#database-first","wordCount":134,"lineCount":29,"group":"v6.1"},{"slug":"feature3","draft":false,"title":"Code-First Development Model","image":"https://servicestack.net/img/whatsnew/v6.1/chinook-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"[Code-First](https://docs.servicestack.net/locode/code-first) is the natural development model of [AutoQuery Services](https://docs.servicestack.net/autoquery-rdbms) which facilitates the majority of a\nSystem and its UI can be developed from simple, declarative C# POCOs to define the underlying RDBMS Schema Data Models and the precise typed\nAPI DTO Contracts of their surrounding AutoQuery & CRUD APIs. The Data and Service models can be further enhanced by ServiceStack's vast\n[declarative attributes](https://docs.servicestack.net/locode/declarative) where a significant amount of behavior, functionality and customization can be defined, ranging from:\n\n- Customize how [Data Models map to DB Tables](https://docs.servicestack.net/locode/declarative.html#table-data-model-attributes) & enlist RDBMS features\n- [Customize Serialization & API behavior](https://docs.servicestack.net/locode/declarative.html#custom-serialization)\n- [Define AutoQuery & CRUD API behavior](https://docs.servicestack.net/locode/declarative.html#autoquery-attributes)\n- Define [Validation Rules](https://docs.servicestack.net/locode/declarative.html#type-validation-attributes) and [Authorization restrictions](https://docs.servicestack.net/locode/declarative.html#authentication-restrictions)\n- [Annotate & Document APIs](https://docs.servicestack.net/locode/declarative.html#annotate-apis)\n- [Customize UI Behavior & Appearance](https://docs.servicestack.net/locode/declarative.html#result-formatters)","url":"https://docs.servicestack.net/releases/v6_01#code-first","wordCount":165,"lineCount":17,"group":"v6.1"},{"slug":"feature4","draft":false,"title":"Hybrid Locode Apps with Blazor WASM","image":"https://servicestack.net/img/whatsnew/v6.1/talent-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"Locode's declarative dev model lets you focus on your new App's business requirements where its data model, API capabilities, input validation & multi-user Auth restrictions can be defined simply using annotated C# POCOs.\nThis provides immense value at the start of the development cycle where functional prototypes can be quickly iterated to gather business requirements\n\nOnce requirements have solidified, its typed AutoQuery APIs can easily be reused to develop custom UIs to optimize important workflows.\n\n[Talent Blazor](https://github.com/NetCoreApps/TalentBlazor) is a new App showcasing an example of this where its entire back-office functionality can be managed through Locode whilst an optimized **Blazor WASM App** is created to optimize its unique workflow requirements which also benefits from the superior productive dev model of its Typed APIs.","url":"https://docs.servicestack.net/releases/v6_01#hybrid-locode-apps","wordCount":138,"lineCount":12,"group":"v6.1"},{"slug":"feature1","draft":false,"title":"FREE Individual & OSS Licenses","image":"https://servicestack.net/img/whatsnew/v6/servicestack-100m-976w.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"We're starting off 2022 eclipsing an impressive milestone having crossed\n[100M+ NuGet downloads](https://www.nuget.org/profiles/servicestack) which we're celebrating by making ServiceStack FREE for Individuals & collaborative OSS Projects.\n\nWe've also created 2 new community spaces for ServiceStack developers to engage with each other:\n\n- [ServiceStack/Discuss](https://github.com/ServiceStack/Discuss/discussions/)\n- [#ServiceStack channel on Discord](https://discord.gg/w4ayGbuYpA)\n\nThese new spaces are welcome to all users of the framework that we hope together with the new free licenses will encourage developers build and share their amazing creations with each other! 🎉","url":"https://docs.servicestack.net/releases/v6_00","wordCount":97,"lineCount":15,"group":"v6.0"},{"slug":"feature2","draft":false,"title":"API Explorer","image":"https://servicestack.net/img/whatsnew/v6/api-details-CreateBooking.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"Now built into every ServiceStack v6 App is API Explorer - an instant integrated Postman and Swagger UI alternative to quickly Call and Explore your APIs.\n\nThe entire API Explorer UI is driven by the rich metadata around your APIs and AppHost's registered plugins capturing greater knowledge about your APIs and is able to provide a smarter, richer and more optimized UX than what would be possible going through lowest common denominator specs like Open API.\n\nWith envious performance and unmatched customizability, API Explorer lets you easily incorporate gorgeous, rich, interactive API Documentation API Consumers will love who'll be able to read its source code in their preferred programming language and easily call from their existing Client Apps.","url":"https://docs.servicestack.net/releases/v6#api-explorer","wordCount":126,"lineCount":11,"group":"v6.0"},{"slug":"feature3","draft":false,"title":"Blazor WebAssembly Jamstack Template","image":"https://servicestack.net/img/whatsnew/v6/blazor-wasm.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"Our new Blazor WebAssembly (WASM) template is ideal for teams with strong C# skills building Line Of Business (LOB) applications. Utilizing an API First development model, the C# Blazor front-end is able to take advantage of the clean separation of ServiceStack APIs to enjoy instant frictionless 100% reuse of API Types as-is, without any reliance on any tooling or unproductive out-of-sync code-gen build steps interrupting developers workflow.\n\nTogether with new .NET Service Clients Apis it results in the ideal productive dev model to bind Blazor UIs to ServiceStack APIs.\n\nTemplates make use of **ServiceStack.Blazor** a new package of integrated functionality with ServiceStack, inc. JSON API HttpClient Factory, API-enabled base components & themable Bootstrap + Tailwind UI controls.\n\nIn addition to TODO MVC and CRUD UI examples demonstrating its productive dev model, it also includes pre-rendering solutions for instant load times & GitHub Actions for effortless optimal Jamstack CDN deployments.","url":"https://docs.servicestack.net/templates-blazor","wordCount":160,"lineCount":13,"group":"v6.0"},{"slug":"feature4","draft":false,"title":"C# Jamstack Templates","image":"https://servicestack.net/img/whatsnew/v6/jamstacks-net.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"ServiceStack's new [jamstacks.net](https://jamstacks.net) templates encapsulates the latest technologies at the forefront of modern web development to deliver both a great developer experience and performant end-user UX.\n\nJamstack (JavaScript, APIs, and Markup) is a modern architecture pattern to build fast, secure and easy to scale web applications where pre-rendering content, enhancing with JavaScript and leveraging CDN static hosting results in a highly productive, flexible and performant system that takes advantage of CDN edge caches to deliver greater performance & efficiency at lower cost.\n\nIt's quickly becoming the preferred architecture for modern web apps with benefits extending beyond performance to improved Security, Scale, Maintainability, Portability, Developer Experience & lower costs with your App's pre-rendered static UI assets on Content Delivery Network (CDN) edge caches close to users locations.\n\nThese new templates represent the best-in class experiences for their respective React, Vue & Blazor WASM ecosystems each, packed with features & examples common in many websites including Integrated Auth, rich Markdown content as well as TODOs MVC and CRUD examples with built-in contextual validation binding. As such they're now recommended over our existing SPA and C# MVC Templates.","url":"https://docs.servicestack.net/releases/v6#jamstack","wordCount":197,"lineCount":13,"group":"v6.0"},{"slug":"feature1","draft":false,"title":".NET 6 is here!","image":"https://servicestack.net/img/whatsnew/net6-released.png","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"We've cut this release cadence short to focus on putting out a quality release to take advantage of the newest and best .NET runtime yet!\n\nIn a lot of ways .NET 6 marks the start of a new era for .NET with the first LTS release after the end of the\n.NET Framework and .NET Standard with only 1 actively developed runtime going forward.\n\nWe're moving full-steam ahead and have standardized our new features onto .NET 6 with:\n\n- [All project templates upgraded to .NET 6](https://docs.servicestack.net/releases/v5_13#all-project-templates-upgraded-to-net-6)\n- [net6.0 TFM builds added to all packages](https://docs.servicestack.net/releases/v5_13#net6-0-tfm-builds-added-to-all-packages)\n- [Embracing .NET 6 new Hosting Model for mix](https://docs.servicestack.net/releases/v5_13#net-6-new-hosting-model)\n- [v4.5 .NET Framework Deprecation Notice](https://docs.servicestack.net/releases/v5_13#v4-5-net-framework-deprecation-notice)","url":"https://docs.servicestack.net/releases/v5_13","wordCount":133,"lineCount":17,"group":"v5.13"},{"slug":"feature2","draft":false,"title":"ServiceStackVS 2022 support","image":"https://servicestack.net/img/whatsnew/vs2022-splash.png","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"Visual Studio 2022 now has support for Add ServiceStack reference for C#/F#/VBNET/TypeScript!\n\nServiceStackVS can be found in the Extension Marketplace, and is installable straight from Visual Studio 2022.","url":"https://docs.servicestack.net/releases/v5_13#servicestackvs-now-supports-visual-studio-2022","wordCount":37,"lineCount":9,"group":"v5.13"},{"slug":"feature3","draft":false,"title":".NET 6 Hosting Model migration guide","image":"https://i.ytimg.com/vi/WgsFl0AFUdo/maxresdefault.jpg","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"We're now embracing .NET 6's idiom and have rewritten all our mix gist config files to adopt its HostingStartup which is better able to load modular Startup configuration without assembly scanning.\n\nThis video guide shows how you can migrate your existing startup modules to use .NET 6 Hosting Model.","url":"https://youtu.be/WgsFl0AFUdo","wordCount":62,"lineCount":9,"group":"v5.13"},{"slug":"feature1","draft":false,"title":"Python ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v5.12/python-reference.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"[Python](https://python.org) is one of the worlds most popular programming languages which\nexcels in a number of industries thanks to its ease of use and comprehensive libraries.\n\nTo maximize the experience for calling ServiceStack APIs within these environments\nServiceStack now supports Python as a 1st class Add ServiceStack Reference supported language\nwhich gives Python developers an end-to-end typed API for consuming ServiceStack APIs,\ncomplete with IDE integration in [PyCharm](https://www.jetbrains.com/pycharm/) as well as\n[built-in support in x dotnet tool](https://docs.servicestack.net//dotnet-tool#addupdate-servicestack-references)\nto generate Python DTOs for a remote ServiceStack instance from a single command.","url":"https://docs.servicestack.net/releases/v5.12#python-servicestack-reference","wordCount":106,"lineCount":15,"group":"v5.12"},{"slug":"feature2","draft":false,"title":"Jupyter Notebooks","image":"https://servicestack.net/img/whatsnew/v5.12/jupyter-splash.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"Python has solidified itself as a powerhouse in Data Science and Machine Learning thanks to its\nbest-in-class libraries as well as being at the forefront of Interactive Computing with its native\nsupport in [Jupyter Notebooks](https://jupyter.org/) - a popular realization of Donald Knuth’s\n[Literate Programming](https://en.wikipedia.org/wiki/Literate_programming)\nparadigm where executable code is interlaced in a live document with natural language\ndocumentation, rich markup and embedded media. It’s become an invaluable medium for data\nscience, scientists and researchers where it’s often used as an advanced REPL environment\nfor data and computation exploration whose resulting knowledge and insights are easily\ncaptured and shared.\n\nWe’re excited to be able to join the beautiful interactive world of Jupyter Notebooks with\nboth Simple UI and command-line tools for effortlessly generating customized Notebooks around\ntyped ServiceStack APIs for Jupyter’s premier support for **Python**.","url":"https://docs.servicestack.net/releases/v5.12#interactive-jupyter-notebooks","wordCount":141,"lineCount":19,"group":"v5.12"},{"slug":"feature3","draft":false,"title":"C# and F# Jupyter Notebooks","image":"https://servicestack.net/img/whatsnew/v5.12/jupyter-lab-visual-example.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"In addition to Python we've also extended support for generating customized pre-populated\n**C#** and **F#** Jupyter Notebooks by leveraging dotnet/interactive Jupyter kernel’s which\nallows C# and F# .NET Developers to join Jupyter's interactive live programming paradigm\nwhich they can either choose to run locally in the next gen JupyterLab UI or directly within\nVS Code using .NET Interactive's VS Code extension.\n\nNotebooks have also become a popular medium for sharing institutional data and computational\nknowledge thanks to being able to capture and embed execution output and support for exporting\nin multiple popular document formats as used by GitHub with their Auto Preview support for\nNotebooks. We also simplify configuring a Notebook GitHub repo to support executing C# and\nF# Notebooks in [mybinder.org](https://mybinder.org) FREE cloud hosting services with our\n`docker-jupyter` mix template.","url":"https://docs.servicestack.net/releases/v5.12#generate-c-jupyter-notebooks","wordCount":138,"lineCount":18,"group":"v5.12"},{"slug":"feature1","draft":false,"title":"Instant Client Apps","image":"https://servicestack.net/img/whatsnew/v5.11/client-apps.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"Building upon our native end-to-end typed solutions, we're excited to announce **Instant Client Apps** to\nprovide instant utility and value around your ServiceStack Services where your API consumers can use the\nAuto generated UI to craft API Requests in their preferred programming language:","url":"https://docs.servicestack.net/releases/v5.11#instant-client-apps","wordCount":51,"lineCount":9,"group":"v5.11"},{"slug":"feature2","draft":false,"title":"GitHub Actions Templates","image":"https://servicestack.net/img/whatsnew/v5.11/github-actions-header.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"We've begun to fully embrace GitHub Actions from this release to help quickly setting up CI environments for\nnew and existing ServiceStack project templates by automating them into building and running tests on each **commit**\nbefore publishing, dockerizing & deploying them on each **GitHub Release**.\nThe templates leverage [mix](https://docs.servicestack.net/mix-tool) to work like lego pieces where they can be combined to achieve your\npreferred automation workflow.","url":"https://docs.servicestack.net/releases/v5.11#githubaction-templates","wordCount":76,"lineCount":11,"group":"v5.11"},{"slug":"feature3","draft":false,"title":"All Service Client Libraries Upgraded","image":"https://servicestack.net/img/whatsnew/v5.11/service-clients.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"In addition to the Refresh Token support & built-in Inspect utils all ServiceStack’s generic Service Client libraries in all languages have received a number of updates to improve their consistency and overall development UX.","url":"https://docs.servicestack.net/releases/v5.11#all-service-client-libraries-upgraded","wordCount":47,"lineCount":7,"group":"v5.11"},{"slug":"feature1","draft":false,"title":"Booking System in minutes","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/studio/bookings-splash.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"To see the rapid development of AutoQuery in action we've created a quick demo showing how to create a simple multi-user Booking System from an empty [web](https://github.com/NetCoreTemplates/web) project, [mixed in](https://docs.servicestack.net/mix-tool) with the preferred RDBMS & Auth layered functionality, before enabling [Validation](https://docs.servicestack.net/validation), [AutoQuery](https://docs.servicestack.net/autoquery-rdbms), Admin Users & [CRUD Event Log](https://docs.servicestack.net/autoquery-audit-log) plugins - to lay the foundational features before building our App by first defining its `Booking` data model & its surrounding **Query**, **Create**, **Update** and **Soft Delete** Typed CRUD APIs with rich validation enforced by declarative Validation attributes and multi-layer authorization rules & access permissions protected using Authorization attributes.","url":"https://docs.servicestack.net/releases/v5.10#creating-a-multi-user-net-core-booking-system-in-minutes","wordCount":126,"lineCount":7,"group":"v5.10"},{"slug":"feature2","draft":false,"title":"Studio User Admin","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/studio/studio-home.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"We've caught a glimpse of the new User Admin Feature in the [Bookings CRUD demo](https://youtu.be/XpHAaCTV7jE) who utilizes it to create **Employee** and **Manager** users. The `AdminUsersFeature` provides Admin User Management APIs enabling remote programmatic access to your registered [User Auth Repository](https://docs.servicestack.net/authentication-and-authorization#user-auth-repository), featuring:\n\n- Works with existing `IUserAuthRepository` sync or async providers\n- Utilizes Progressive enhancement, e.g. search functionality utilizes `IQueryUserAuth` (if exists) performing a wildcard search over multiple fields, otherwise falls back to exact match on `UserName` or `Email`\n- Supports managing Auth Repositories utilizing custom `UserAuth` data models\n- Flexible UI options for customizing which fields to include in Search Results and Create/Edit UIs\n- Rich Metadata aggregating only App-specific Roles & Permissions defined in your App\n- User Events allow you to execute custom logic before & after each Created/Updated/Deleted User","url":"https://docs.servicestack.net/releases/v5.10#studio-user-management-ui","wordCount":145,"lineCount":14,"group":"v5.10"},{"slug":"feature3","draft":false,"title":"Sign In with Apple","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/dev/web-signin-with-apple-login.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"As mobile Apps is a target use-case for ServiceStack, this release also includes 1st class integration with **Sign In with Apple** OAuth provider. To assist with adoption we've also developed Sign In with Apple Integration Examples for iOS, Android & Web with working implementations for Flutter iOS/Android & SwiftUI Apps.","url":"https://docs.servicestack.net/releases/v5.10#sign-in-with-apple","wordCount":63,"lineCount":7,"group":"v5.10"},{"slug":"feature1","draft":false,"title":"Introducing ServiceStack Studio","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/studio-home.png","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"Another exciting development in this release is the successor to [Admin UI](https://github.com/ServiceStack/Admin):\n**ServiceStack Studio!** - a capability-based UI to manage multiple remote ServiceStack instances from either a Chromium Desktop App\nor cross-platform .NET Core Web App.\n\nThe richer metadata in ServiceStack Services allows Studio to logically group Services around Data Models, enabling its high-level\nsemantic features like its native data-grid like UX over all AutoQuery Services to quickly discover, search, create, update and\ndelete entities based on the available AutoQuery APIs and whether Authenticated Users have access to them.","url":"https://docs.servicestack.net/releases/v5.9#introducing-servicestack-studio","wordCount":102,"lineCount":13,"group":"v5.9"},{"slug":"feature2","draft":false,"title":"Instantly Servicify existing Systems!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/svg/servicify.svg","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"ServiceStack also reached maximum autonomy for a Services framework where in addition to **AutoQuery** automatically providing your Services implementations,\n**Studio** providing its instant UI, ServiceStack also gained the capability to **generate your entire API!** Including Typed API contracts,\ndata models, implementations & human-friendly pluralized HTTP API routes over an existing System RDBMS's tables!\n\nServiceStack's **AutoGen** enables a number of exciting possibilities, predominantly it's the fastest way to ServiceStack-ify an\nexisting systems RDBMS where it will serve as an invaluable tool for anyone wanting to quickly migrate to ServiceStack and access its\nfunctionality ecosystem around ServiceStack Services:","url":"https://docs.servicestack.net/releases/v5.9#instantly-servicify-existing-systems","wordCount":106,"lineCount":13,"group":"v5.9"},{"slug":"feature3","draft":false,"title":"Generate Types for RDBMS Tables","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/autodto-youtube.png","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"generate-types-for-rdbms-tables\nimage: https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/autodto-youtube.png\n---\n\nAn unintended consequence of **AutoGen** that's potentially universally appealing to even non .NET developers is that it's also a way to instantly\ngenerate Types for all RDBMS tables in all of ServiceStack [supported client languages](https://docs.servicestack.net/add-servicestack-reference),\nwhich thanks to being configurable in a [Sharp App](https://sharpscript.net/docs/sharp-apps) can be executed from the command-line using\nthe [dotnet tools](https://docs.servicestack.net/dotnet-tool)","url":"https://docs.servicestack.net/releases/v5.9#autodtogenerate-types-for-rdbms-tables","wordCount":75,"lineCount":10,"group":"v5.9"},{"slug":"feature1","draft":false,"title":"Simple Code-First DB MigrationsServiceStack gRPC support","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/grpc/grpc-horizontal-color.svg","tags":[],"date":"\/Date(1578960000000-0000)\/","content":"We're super excited to open the year with the premier feature in this release **ServiceStack gRPC**, our highly-productive entry into the\n[gRPC](https://grpc.io) universe with a number of value-added additions that makes developing and consuming gRPC Services a joy with USPs\nthat leverages and preserves your existing knowledge and investments and maximizes the utility of your Services offering unprecedented value\nfor your development efforts.","url":"https://docs.servicestack.net/grpc","wordCount":77,"lineCount":10,"group":"v5.8"},{"slug":"feature2","draft":false,"title":"Updated Templates .NET Core 3.1","image":"https://raw.githubusercontent.com/ServiceStack/Assets/master/csharp-templates/vue-nuxt.png","tags":[],"date":"\/Date(1578960000000-0000)\/","content":"With the release of [.NET Core 3.1 LTS](https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/) we've standardized our Project Templates\nand tools to **.NET Core 3.1 LTS** whilst continuing to support existing **.NET Core 2.1+** and **.NET Framework** projects including\n[ASP.NET Core Apps on the .NET Framework](https://docs.servicestack.net/templates-corefx).","url":"https://docs.servicestack.net/releases/v5.8#net-core-31-lts-project-templates","wordCount":67,"lineCount":9,"group":"v5.8"},{"slug":"feature1","draft":false,"title":".NET Core 3 Updates","image":"https://raw.githubusercontent.com/ServiceStack/Assets/master/img/release-notes/netcore-banner.png?t","tags":[],"date":"\/Date(1569888000000-0000)\/","content":"Ordinarily we'd have a longer release cadence in between releases with more features, but with the recent release of .NET Core 3\nwe've cut this release cycle short so we can release a version of ServiceStack compatible with .NET Core 3+. Other than that the major focus\non this release was `#Script` with [many new features](https://docs.servicestack.net/releases/v5.7#script) we're excited to share after covering the ServiceStack changes.","url":"https://docs.servicestack.net/releases/v5.7#net-core-3","wordCount":81,"lineCount":9,"group":"v5.7"},{"slug":"feature2","draft":false,"title":"New #Script Updates","image":"https://sharpscript.net/assets/img/sandbox.svg","tags":[],"date":"\/Date(1569888000000-0000)\/","content":"We've seen great reception of [Gist Desktop Apps](https://docs.servicestack.net/releases/v5.6#gist-desktop-apps) from the last v5.6 release with a\nnice shoutout from [Jon Galloway](https://twitter.com/jongalloway) in the\n[ASP.NET Community August Stand up](https://www.youtube.com/watch?v=a2lq4yEfJpk&feature=youtu.be&t=1529),\na featured [blog post](https://www.hanselman.com/blog/SharpScriptFromServiceStackLetsYouRunNETAppsDirectlyFromAGitHubGist.aspx)\nfrom [Scott Hanselman](https://twitter.com/shanselman) as well features in Hacker News and Reddit.\n\nWe've since further enhanced `#Script` capabilities in this release making it more functional then ever, broadening its appeal\nin its growing list of use-cases.","url":"https://docs.servicestack.net/releases/v5.7#1st-class-script-code-and-lisp-language-support","wordCount":94,"lineCount":14,"group":"v5.7"},{"slug":"feature1","draft":false,"title":"Modular Startup","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/mix/feature-authrepo.png","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"We want to dramatically simplify and improve the experience for configuring ASP.NET Core Apps and make them truly composable,\nwhere we can drop-in files that auto configures itself with both ASP.NET Core and ServiceStack's AppHost so they can\nencapsulate an entire feature and provide instant utility without needing to wade through different steps of how they\nshould be manually configured at different places in your Startup configuration class.","url":"https://docs.servicestack.net/releases/v5.6#modular-startup","wordCount":78,"lineCount":10,"group":"v5.6"},{"slug":"feature2","draft":false,"title":"Mix'n'Match .NET Core Apps","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/mix/example-validation-900.gif","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"To complete the picture of making it easy as possible to compose ASP.NET Core Apps we've created the `mix` dotnet tool to easily\ninstall features which can be installed with:\n\n```bash\n$ dotnet tool install --global mix\n```\n\nThe `mix` tool is designed around applying ASP.NET Core features captured in GitHub gists to your local .NET Core projects.\n\nThen choosing which features you want to add to your project with `mix `, e.g:\n\n```bash\n$ mix redis\n```","url":"https://docs.servicestack.net/releases/v5.6#mix-n-match-net-core-apps","wordCount":85,"lineCount":20,"group":"v5.6"},{"slug":"feature3","draft":false,"title":"Single Page App Component Libraries","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/ssvs/spa-templates-overview.png","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"To lay the foundation for richer and more tightly integrated UI controls, we've created UI and common component libraries for the\n3 most popular JS frameworks:\n\n\n- [@servicestack/vue](https://github.com/ServiceStack/servicestack-vue)\n- [@servicestack/react](https://github.com/ServiceStack/servicestack-react)\n- [@servicestack/angular](https://github.com/ServiceStack/servicestack-angular)\n\n\nAll new [Single Page App Project Templates](https://docs.servicestack.net/templates-single-page-apps) have been pre-configured to use these libraries which will make it\na lot easier to deliver new UI components and updates to existing SPA Apps with just an npm upgrade.","url":"https://docs.servicestack.net/releases/v5.6#spa-component-libraries","wordCount":89,"lineCount":17,"group":"v5.6"},{"slug":"feature1","draft":false,"title":"ServiceStack turns 10 🥳","image":"https://servicestack.net/img/whatsnew/v5.5/anniversary-10.png","tags":[],"date":"\/Date(1553990400000-0000)\/","content":"Before we get into unpacking this release we're happy to announce that we've now eclipsed **10 years** since our\n[first commit](https://github.com/ServiceStack/ServiceStack/commit/2a9cd0d10247ae1a679ac011d7bdef593937dba4)!\n\nI'd like to take this milestone to thank our thousands of Customers we've had the pleasure to serve and see our Software used which has amassed\nmore than **27,000,000+ total downloads** on NuGet and to see the uptick in adoption of some of our unique features like\n[Add ServiceStack Reference](https://docs.servicestack.net/add-servicestack-reference) which has been used more than **88,000 times**\nto generate native Typed DTOs amongst its [8 supported languages](https://docs.servicestack.net/add-servicestack-reference#supported-languages).","url":"https://docs.servicestack.net/releases/v5.5#servicestack-turns-10","wordCount":107,"lineCount":13,"group":"v5.5"},{"slug":"feature2","draft":false,"title":"Templates upgrades to #Script","image":"https://servicestack.net/img/whatsnew/v5.5/sharpscript.png","tags":[],"date":"\/Date(1553990400000-0000)\/","content":"As we continue enhancing ServiceStack's scripting support with exciting new features, it no longer made sense to call our dynamic scripting language\n\"Templates\" which is just one of the many use-cases `#Script` enables.\n\n[#Script](https://sharpscript.net) is typical of a popular dynamic template language you'd find in other platforms, using the ubiquitously familiar mix of\n[JavaScript Expressions](https://sharpscript.net/docs/expression-viewer) which for increased wrist-friendly readability can be easily composed\ntogether using the Unix `|` operator as embraced by [Vue.js filters](https://vuejs.org/v2/guide/syntax.html#header) and\n[Angular's Template Expressions](https://angular.io/guide/template-syntax#template-expression-operators)\nwhist the [Script Statement Blocks](https://sharpscript.net/docs/blocks) adopt the universally adopted Handlebars-like syntax that's ideal for\nrendering dynamic pages.","url":"https://docs.servicestack.net/releases/v5.5#script-fka-servicestack-templates","wordCount":118,"lineCount":15,"group":"v5.5"},{"slug":"feature1","draft":false,"title":".NET Core Windows Desktop Apps!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/app/netcore-chromium-splash.png","tags":[],"date":"\/Date(1537315200000-0000)\/","content":"Our new [app](https://www.nuget.org/packages/app) build tool is packed with features for \"Chromitizing\" any\n.NET Core Web App into a **.NET Core Windows Desktop App** that's as easy as installing the `app` tool:\n\n```bash\n$ dotnet tool install -g app\n```\n\nand using it to run your .NET Core Web App's `.dll`, e.g:\n\n```bash\n$ app MyApp.dll\n```\n\nWhere it will run your .NET Core App and host it inside an Chromium Embedded Framework (CEF) browser.\n\nThis provides instant utility for being able to deploy .NET Core Apps end users can run locally using Chrome's leading and consistent rendering engine\nwithin a Windows Desktop Application.","url":"https://docs.servicestack.net/releases/v5.4#net-core-windows-desktop-apps","wordCount":116,"lineCount":23,"group":"v5.4"},{"slug":"feature1","draft":false,"title":"Spanified ServiceStack","image":"https://servicestack.net/img/logo-text.svg","tags":[],"date":"\/Date(1535414400000-0000)\/","content":"Major rework was performed across the ServiceStack.Text and ServiceStack.Common foundational libraries to replace its internal usage of `StringSegment`\nwith .NET's new high-performance\n[Span and Memory Types](https://www.codemag.com/article/1807051/Introducing-.NET-Core-2.1-Flagship-Types-Span-T-and-Memory-T) primitives\nwhich are now used for all JSON/JSV deserialization and many other String utilities.\n\nThe new `Span` and `ReadOnlyMemory` Types is the successor to `StringSegment` which are both allocation-free, but Span also enjoys additional runtime support as a JIT intrinsic for improved performance.\n\nThis change was primarily an internal refactor so there shouldn't be any user visible differences except for the addition of the\n[System.Memory](https://www.nuget.org/packages/System.Memory) dependency which contains the new Memory types. As a general rule we're averse to adopting\nnew dependencies but the added performance of these new primitives makes it a required dependency for maintaining high-performance libraries.","url":"https://docs.servicestack.net/releases/v5.2#spanified-servicestack","wordCount":142,"lineCount":15,"group":"v5.2"},{"slug":"feature1","draft":false,"title":"Dart and Flutter!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/dart/dart.png","tags":[],"date":"\/Date(1524528000000-0000)\/","content":"We're super excited to announce first-class support for [Dart](https://www.dartlang.org) and [Flutter](https://flutter.io)! - Google’s premier new mobile UI framework for crafting high-quality native interfaces for iOS and Android from a single code-base in record time with a Reactive development model simplifying the effort for building Complex UIs in similar vein to development models pioneered in popular JavaScript frameworks like React, React Native, Vue and Angular. It's offers a beautiful blend of rapid development cycles with its built-in Hot Reloading giving you instant iterative feedback of changes to your Mobile App in milliseconds, whilst still offering high-performance native experiences at runtime where Dart code is AOT compiled into native ARM in iOS and Android.","url":"https://docs.servicestack.net/releases/v5.1.0#dart-and-flutter","wordCount":131,"lineCount":7,"group":"v5.1"},{"slug":"feature1","draft":false,"title":"Future Versioning Scheme","image":"https://servicestack.net/img/logo-text.svg","tags":[],"date":"\/Date(1514937600000-0000)\/","content":"Historically ServiceStack releases are focused around \"Major release schedules\" published along with detailed Release Notes describing new features and changes added in each release. All packages are published together in \"lockstep\" with the same version number so the effort to upgrade ServiceStack projects can be done all at same time, with low frequency.\n\nWhilst we want to minimize the effort for Customers to upgrade we also want to make any fixes or enhancements to the previous release available sooner as there are often fixes reported and resolved immediately after each release and made available in our [pre-release packages on MyGet](https://docs.servicestack.net/myget) that most Customers wont get until the next major Release on NuGet.","url":"https://docs.servicestack.net/releases/v5.0.0#future-versioning-scheme","wordCount":126,"lineCount":9,"group":"v5.0"},{"slug":"feature2","draft":false,"title":"ServiceStack Mobile and Desktop Apps","image":"https://raw.githubusercontent.com/ServiceStackApps/HelloMobile/master/screenshots/splash-900.png","tags":[],"date":"\/Date(1514937600000-0000)\/","content":"The [HelloMobile](https://github.com/ServiceStackApps/HelloMobile) project has been rewritten to use the latest v5 .NET Standard 2.0 and .NET Framework clients and contains multiple versions of the same App demonstrating a number of different calling conventions, service integrations and reuse possibilities for each of the following platforms:\n\n- WPF\n- UWP\n- Xamarin.Android\n- Xamarin.iOS\n- Xamarin.OSX\n- Xamarin.Forms\n - iOS\n - Android\n - UWP","url":"https://docs.servicestack.net/releases/v5.0.0#servicestack-mobile-and-desktop-apps","wordCount":77,"lineCount":17,"group":"v5.0"}],"videos":[{"slug":"video1","draft":false,"title":"Self Hosted gateway for proxying LLM APIs, Ollama, ComfyUI & FFmpeg servers","tags":["servicestack","ai","gpt"],"date":"\/Date(1732665600000+0000)\/","content":"Introducing AI Server, a self-hosted Docker gateway managing API access to various AI services like LLMs and ComfyUI. \nIt offers centralized management, load balancing across multiple providers, and native typed integrations for \nnumerous languages. \n\nKey features include live monitoring, protected access with API keys, and built-in UIs as well as \nsimplified access of OpenAI Chat compatible APIs across multiple languages.","url":"https://youtu.be/Ojo80oFQte8","wordCount":78,"lineCount":13,"group":"ai-server"},{"slug":"kamal-deployments","draft":false,"title":"Use Kamal to deploy .NET Apps to any Linux server","tags":["kamal","deployment","hosting"],"date":"\/Date(1732665600000+0000)\/","content":"Kamal is a CLI utility by the BaseCamp team that makes self hosting containers on any Linux host a lot easier to manage. \nWe've incorporated the use of Kamal into some of the most populate templates to give developers the ability to \nmanage their deployed containers using various Kamal commands, and use GitHub Actions as the CI for central deployment.","url":"https://youtu.be/-mDJfRG8mLQ","wordCount":76,"lineCount":10,"group":"actions","order":1},{"slug":"video2","draft":false,"title":"Schedule your Reoccurring Tasks with Background Jobs","tags":["jobs","ui","api"],"date":"\/Date(1726444800000+0000)\/","content":"In addition to queueing jobs, Background Jobs also supports scheduling recurring tasks \nto execute APIs or Commands at regular fixed intervals.\n\nDefine recurring tasks with flexible unix cron expressions or simple TimeSpan intervals and\nmonitor their progress in real-time from the Admins Jobs UI.","url":"https://youtu.be/DtB8KaXXMCM","wordCount":54,"lineCount":11,"group":"ui-jobs"},{"slug":"video1","draft":false,"title":"Background Jobs and Recurring Tasks","tags":["jobs","ui","api"],"date":"\/Date(1726099200000+0000)\/","content":"Background Jobs is our solution for managing background jobs and scheduled tasks \nin any .NET 8 App, implemented in true ServiceStack fashion where it seamlessly integrates \ninto existing ServiceStack Apps with a built-in Management UI to provide real-time monitoring, \ninspection and management of background jobs.","url":"https://youtu.be/2Cza_a_rrjA","wordCount":54,"lineCount":10,"group":"ui-jobs"},{"slug":"apikeys-admin","draft":false,"title":"API Keys with Built-In Admin and Identity User UIs","tags":["db","auth","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Building on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs which includes\ncustomizable built-in Admin UIs to manage both machine-to-machine API Keys and User API Keys, in addition all Identity Auth\nTailwind Templates includes a Identity User UIs for Users to create their own API Keys.","url":"https://youtu.be/U4vqOIHOs_Q","wordCount":85,"lineCount":11,"group":"ui-admin","order":1},{"slug":"commands-admin","draft":false,"title":"Build robust and observable systems with Commands","tags":["logic","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"How code-bases are structured is largely a matter of preference, however we've been able to add value \nin this area by introducing an appealing option with our new managed Commands Feature.\n\nIn addition to auto wiring all commands by default, it supports opt-in Auto Retry as well as an Admin UI \nto add observability around commands including timings, exceptions and a rolling list of latest commands executed.","url":"https://youtu.be/SXPdBHbncPc","wordCount":81,"lineCount":13,"group":"ui-admin","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story with API Keys for .NET 8 Microservices","tags":["auth","admin","api","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Admin Auth with API Keys benefits the class of Apps which don’t need Identity User Auth and the additional complexity \nit brings inc. Identity & Passwords, EF Migrations, Token Expirations, OAuth, etc.\n\nWith the introduction of API Keys we’re able to provide a simpler Auth Story for .NET 8 Microservices that’s easy for \nAdmin Users to manage and control which trusted clients and B2B Integrations can access its functionality.","url":"https://youtu.be/0ceU91ZBhTQ","wordCount":85,"lineCount":12,"group":"apis","order":3},{"slug":"press-vue","draft":false,"title":"Vite Vue Markdown Websites with Vite Press Plugin","tags":["vue","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we dive deep into the Vite Press Plugin, an alternative to VitePress for adding Markdown features to \nexisting Vite Vue projects. We explore the templates productive components including Tailwind CSS, Vue Router, \ndynamic Layouts, Iconify and Auto Component Imports, that work together with Vite Press Plugin universal Markdown \npowered features to create beautiful Website Blogs, Product Releases and Video Gallery Pages that can be reused across \nVue, React, and even .NET Razor and Blazor projects.","url":"https://youtu.be/u3FcgWlack4","wordCount":92,"lineCount":12,"group":"node","order":6},{"slug":"press-react","draft":false,"title":"Create static Websites with Vite React & Markdown, Host Free on GitHub Pages","tags":["react","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we will show how you can use the `press-react` template to create a beautiful React and Markdown \nstatic blog or content centric Websites that's easy to manage and add content. It utilizes the vite-plugin-press \nlibrary whose Markdown feature folders give you a consistent way of using markdown pages to create blogging, \nmarketing landing pages and other content heavy websites.","url":"https://youtu.be/S6O8QCaXDG0","wordCount":81,"lineCount":11,"group":"node","order":7},{"slug":"compose","draft":false,"title":"Mobile & Desktop Apps with Compose Multiplatform","tags":["compose","kotlin","android"],"date":"\/Date(1710115200000+0000)\/","content":"[JetBrains Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) builds on [Jetpack Compose](https://developer.android.com/jetpack/compose) - Google's modern toolkit for building\nnative Android UIs bringing it to more platforms, including Windows, macOS and Linux Desktops.\n\nIt offers a modern alternative for creating native Mobile, Desktop & Web Apps which can also leverage \n[Kotlin ServiceStack Reference](https://docs.servicestack.net/kotlin-add-servicestack-reference) for end-to-end typed APIs. We'll look at the latest [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/)\nand use it to build a cross-platform Desktop App integrated with a .NET API backend utilizing and end-to-end typed API\nintegration.","url":"https://youtu.be/r6T3B7o1GYE","wordCount":105,"lineCount":14,"group":"mobile"},{"slug":"vue-spa","draft":false,"title":"Productive ASP.NET Core Vite Vue SPA Tailwind Template with Identity Auth","tags":["vue","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `vue-spa` template which has incorporated changes from Microsoft's own \nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building \nweb applications with Vue.js, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/JlUjWlVslRg","wordCount":62,"lineCount":10,"group":"vue-projects","order":1},{"slug":"react-spa","draft":false,"title":"Productive ASP.NET Core Vite React SPA Tailwind Template with Identity Auth","tags":["react","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `react-spa` template which has incorporated changes from Microsoft's own\nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building\nweb applications with React, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/WXLF0piz6G0","wordCount":59,"lineCount":10,"group":"projects","order":2},{"slug":"net8-docker","draft":false,"title":".NET 8's built-in streamlined containerization","tags":["dotnet","deployment","hosting"],"date":"\/Date(1701302400000+0000)\/","content":"Explore the enhanced Docker integration in .NET 8 simplifying the containerization of your C# projects. \nWe cover how ServiceStack templates align seamlessly with these improvements for a more efficient development experience. \n\nDive deeper into .NET's Docker tooling and learn to streamline your application deployment with ease.","url":"https://youtu.be/y57c-9jeIww","wordCount":57,"lineCount":11,"group":"actions","order":2},{"slug":"blazor-vue","draft":false,"title":"Fast, SEO-friendly, Blazor Static Rendered Apps with Vue","tags":["blazor","vue","tailwind"],"date":"\/Date(1700611200000+0000)\/","content":"The new [Blazor Vue](/posts/net8-best-blazor) template is ideal for building Fast, SEO-friendly, 100% statically rendered Blazor Web Apps where \nall its dynamic functionally uses Vue.js to progressively enhance Blazor's statically rendered content - eliminating Blazor's \ncurrent limitations of being able to use Blazor SSR to develop an entire App without any of Blazor Interactivity downsides.\n\nThe [blazor-vue](/posts/net8-best-blazor) template reimplements all features of the [blazor](/posts/net8-blazor-template) \ntemplate with all its interactive features created with **Vue.js** and the \n[Vue Components library](https://docs.servicestack.net/vue/), with both templates combining the latest advancements in \nBlazor .NET 8 with **Tailwind CSS** styling for creating beautiful Responsive Websites with support for Dark Mode.","url":"https://youtu.be/ujbTGn4IwFs","wordCount":129,"lineCount":16,"group":"blazor","order":2},{"slug":"blazor-vue","draft":false,"title":"Fast, SEO-friendly, Blazor Static Rendered Apps with Vue","tags":["blazor","tailwind","vue"],"date":"\/Date(1700611200000+0000)\/","content":"The new **Blazor Vue** template is ideal for building Fast, SEO-friendly, 100% statically rendered Blazor Web Apps where \nall its dynamic functionally uses Vue.js to progressively enhance Blazor's statically rendered content - eliminating Blazor's \ncurrent limitations of being able to use Blazor SSR to develop an entire App without any of Blazor Interactivity downsides.\n\nThe new [blazor-vue](/posts/net8-best-blazor) template implements all the features of the [blazor](/posts/net8-blazor-template) \ntemplate but reimplements all its interactive features with **Vue.js** to and the \n[Vue Components library](https://docs.servicestack.net/vue/), with both templates combining the latest advancements in \nBlazor .NET 8 with **Tailwind CSS** styling for creating beautiful Responsive Websites with support for Dark Mode.","url":"https://youtu.be/ujbTGn4IwFs","wordCount":131,"lineCount":16,"group":"vue-projects","order":2},{"slug":"blazor","draft":false,"title":"Blazor Tailwind App for .NET 8","tags":["blazor","server","tailwind"],"date":"\/Date(1700524800000+0000)\/","content":"ServiceStack's new [Blazor project template](/posts/net8-blazor-template) takes advantage of .NET 8 Blazor's new features \nthat redefines modern Web Development in C# which we explore in this video overview, covering how the template adopts Blazor's \nfamiliar ASP.NET Core Identity and Entity Framework for its authentication, utilizes the modern Tailwind CSS framework for beautiful\nresponsive design and adopts .NET's best-practice Docker Containerization support for its built-in GitHub Action\nDeployments - enabling a simple ready-made CI solution for deployment to any Linux Host via SSH and Docker compose.","url":"https://youtu.be/hqyozHSL0Nk","wordCount":98,"lineCount":12,"group":"blazor","order":1},{"slug":"blazor-wasm","draft":false,"title":"Blazor WASM Tailwind App for .NET 8","tags":["blazor","wasm","tailwind"],"date":"\/Date(1700524800000+0000)\/","content":"This video walks through the **Blazor Web Assembly** Tailwind template - a powerful framework that allows developers to create \nhigh-performance web applications using C# and .NET end-to-end in both Server and Client, running directly in the browser via WebAssembly. \nIntegration with [ServiceStack.Blazor's Tailwind](https://blazor-gallery.servicestack.net/gallery) Components provides a \ncomprehensive set of pre-defined components and CSS styles, enabling developers to create modern and responsive designs with ease.","url":"https://youtu.be/U_LflAxz1z0","wordCount":84,"lineCount":12,"group":"blazor","order":3},{"slug":"video2","draft":false,"title":"Creating TypeChat's Voice Activated CoffeeShop in .NET","tags":["servicestack","autoquery","ai","gpt"],"date":"\/Date(1695168000000+0000)\/","content":"Part two in the series where we walk through a recreation of the TypeChat example build in .NET. \n\nWe show how you can utilize various different Speech-to-Text services with the `ServiceStack.AI` and \n`ServiceStack.GoogleCloud` libraries, and pass that text to be processed by Microsoft's TypeChat. \n\nWe demonstrate how TypeChat validates the output from OpenAI's APIs to ensure the JSON returned matches a specified \nTypeScript schema that is dynamically generated.","url":"https://youtu.be/OtgrIdkvw-4","wordCount":81,"lineCount":13,"group":"ai"},{"slug":"video1","draft":false,"title":"Building TypeScript's TypeChat CoffeeShop in .NET","tags":["servicestack","autoquery","ai","gpt"],"date":"\/Date(1694649600000+0000)\/","content":"In this video, we'll cover how to effectively model your data to capture all customer-orderable products. \nWe’ll walk you through the steps to dynamically generate a TypeScript schema and make use of AutoQuery for a quick and robust implementation. \n\nPlus, discover how TypeChat integrates seamlessly with OpenAI APIs for advanced natural language processing capabilities.","url":"https://youtu.be/MjNqPAXLH5w","wordCount":64,"lineCount":10,"group":"ai"},{"slug":"switch-to-arm","draft":false,"title":"How much can .NET Apps save by switching to ARM?","tags":["ormlite","db","hosting"],"date":"\/Date(1693353600000+0000)\/","content":"In this video we go through some benchmark results from comparing running 3 different types of workloads on x86 and \nARM running on Azure, AWS and Hetzner Cloud where you could half your monthly cloud costs just by switching from x86 to ARM.\n\nCompatibility of ARM for different production workloads has been improving over the last few years, \nso now is the perfect time to see if you can switch.","url":"https://youtu.be/yeGEI3n5pnQ","wordCount":87,"lineCount":12,"group":"actions","order":8},{"slug":"jsonl-stream","draft":false,"title":"Stream processing of data with JSON Lines","tags":["serialization","jsonl","apis"],"date":"\/Date(1692057600000+0000)\/","content":"In this video, we explore the efficient JSON Lines (JSONL) data format, a favorite among developers and the AI community\nfor handling large datasets. We walk through working with JSON Lines data, including examples for streaming parsers,\nasynchronous parsing with ServiceStack, and integration with Typesense.","url":"https://youtu.be/m0tAfjvJaZg","wordCount":56,"lineCount":10,"group":"apis","order":6},{"slug":"kubernetes-not-required","draft":false,"title":"GitHub for Auto Deployments - Kubernetes Not Required","tags":["github-actions","deployment","hosting"],"date":"\/Date(1691452800000+0000)\/","content":"Step by step walkthrough for deploying your App via GitHub Actions and plain old SSH. \nCheap hardware is getting fast enough that a lot of Web Apps don't need sophisticated orchestration tools like Kubernetes, \nso we show how you can use fundamental tools like SSH, Docker Compose and GitHub Actions to do it yourself! \n\nLow traffic Apps & proof of concepts can easily share cost effective server running Linux, \nNginx Reverse Proxy with LetsEncrypt.","url":"https://youtu.be/7dardvqBFbE","wordCount":89,"lineCount":14,"group":"actions","order":3},{"slug":"video4","draft":false,"title":"Load data fast with ADO.NET RDBMS Bulk Insert APIs","tags":["ormlite","db","performance"],"date":"\/Date(1690848000000+0000)\/","content":"OrmLite includes a Bulk Inserts API that encapsulates the most efficient ways for inserting large amounts of data \nin each supported RDBMS. We ran benchmarks across macOS on Apple M2 ARM, Intel Linux VM and Intel Windows 10 to measure \nhow fast they run across popular Operating System platforms.","url":"https://youtu.be/3gO_OEWIyPo","wordCount":64,"lineCount":10,"group":"features","order":4},{"slug":"video5","draft":false,"title":"GPT Agent Feature Plugin Updated with Semantic Kernel","tags":["gpt"],"date":"\/Date(1690848000000+0000)\/","content":"In this video, we delve into the integration of Microsoft's Semantic Kernel with our GPT Meeting Agent to simplify \nand enhance working with Large Language Models with a common abstraction library that allows for easy substitution\nand experimentation with different LLMs.","url":"https://youtu.be/smM-Bs7CxJ8","wordCount":54,"lineCount":11,"group":"features","order":5},{"slug":"video1","draft":false,"title":"Getting Started with OrmLite fast, code-first ORM for .NET","tags":["ormlite","db"],"date":"\/Date(1688428800000+0000)\/","content":"This video walks though getting started with OrmLite - a powerful, fast and easy to use ORM for .NET that \ncan be used in any .NET and .NET Framework App without the complexity of larger ORMs. \n\nIn this tutorial we'll demonstrate the best patterns to use to install, configure and use OrmLite in your Application, \ndefining code-first POCOs, using them to create RDBMS tables and explore how to Create, Query, Update and Delete them \nusing OrmLite's Typed APIs.","url":"https://youtu.be/vUbpwjfEYzg","wordCount":92,"lineCount":13,"group":"features","order":1},{"slug":"video2","draft":false,"title":"Getting Started with ServiceStack.Redis in .NET","tags":["redis"],"date":"\/Date(1687824000000+0000)\/","content":"In this tutorial we explore the basics of Redis, an in-memory database, and its integration in .NET using the ServiceStack.Redis library. \nThe video covers topics such as setting up a Redis server with Docker, understanding the ServiceStack.Redis library, and making \nthe most of Redis data structures in a .NET context. \n\nFurthermore, it also delves into utilizing the async capabilities of ServiceStack, all demonstrated through clear, practical examples.","url":"https://youtu.be/jBdOvTvjyqY","wordCount":82,"lineCount":13,"group":"features","order":2},{"slug":"custom-admin-uis","draft":false,"title":"Build beautiful custom .NET Admin UIs in minutes","tags":["vue","autoquery"],"date":"\/Date(1686700800000+0000)\/","content":"In this video we explore the Server Multi Razor Page and Client rendered Admin UI Pages in the latest .NET\n[vue-mjs](https://vue-mjs.web-templates.io) project template to see how to use the new SidebarLayout and AutoQueryGrid\nVue Tailwind components to build beautiful Admin UI Pages within minutes.","url":"https://youtu.be/wlRA4_owEsc","wordCount":61,"lineCount":10,"group":"vue-projects","order":6},{"slug":"video2","draft":false,"title":"New Disqus OSS self-host alternative for .NET Websites","tags":["creatorkit","posts","tailwind"],"date":"\/Date(1686268800000+0000)\/","content":"In this video we explore how we can use CreatorKit - a self-hosting alternative to Disqus to add comments, voting\nand moderation to any existing page or blog post.\n\nCreatorKit is especially useful for adding dynamic post comment and voting features to Jamstack and other\nstatically generated websites which can continually be statically pre-rendered and hosted on CDN's whilst its \ndynamic features are powered by an external CreatorKit instance.","url":"https://youtu.be/lgpl-VjxtdU","wordCount":79,"lineCount":12,"group":"creatorkit"},{"slug":"video1","draft":false,"title":"New Mailchimp self-host mail management alternative","tags":["creatorkit","mail","tailwind"],"date":"\/Date(1686182400000+0000)\/","content":"In this video we introduce CreatorKit an OSS self-hosting alternative to Mailchimp for managing mailing lists,\nnewsletter subscriptions, email templating, marketing campaigns & more whose tailwind components can be easily \nintegrated into any existing website.\n\nIt's an ideal companion for .NET Apps looking to manage their mailinglist and newsletter subscribers in an\nisolated customizable .NET App with support for creating custom email layouts, templates and mail campaigns.","url":"https://youtu.be/_qDVtfcHf14","wordCount":75,"lineCount":12,"group":"creatorkit"},{"slug":"video1","draft":false,"title":"Bring static Xkcd dataset to life with AutoQuery","tags":["autoquery","razor-pages","ssg","tailwind"],"date":"\/Date(1683763200000+0000)\/","content":"In this video, we demonstrate how to use AutoQuery to turn a static XKCD comic dataset from Hugging Face into a Web API, \naddressing common issues of siloed data.\n\nBy creating well-defined AutoQuery APIs, we make the data more accessible and enable efficient data integrations \nfor rapid creation of production Web Apps which we demonstrate in new lightweight a Razor SSG Vue App.","url":"https://youtu.be/CrKtXVrPj8Q","wordCount":78,"lineCount":11,"group":"autoquery"},{"slug":"razor-ssg","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":89,"lineCount":13,"group":"projects","order":3},{"slug":"razor-ssg","draft":false,"title":"Using Razor SSG to Create Websites in GitHub Codespaces","tags":["razor-pages","ssg","markdown","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":86,"lineCount":13,"group":"vue-projects","order":5},{"slug":"video1","draft":false,"title":"Flutter Todo App with .NET API, from Scratch in Minutes","tags":["flutter","android","api"],"date":"\/Date(1679875200000+0000)\/","content":"This video starts from scratch, walking through installing Flutter SDK, \nbefore adding a new native Flutter App to a new .NET Blazor Server project -\ngiving our existing TODO Blazor Web App new native iOS & Android native UIs\n\nNext, we'll demonstrate the iterative development workflow of making changes \nto backend .NET APIs that's easily kept in-sync with our clients Dart DTOs\nfrom within Android Studio or command-line","url":"https://youtu.be/t4WcXo4Vnio","wordCount":79,"lineCount":13,"group":"flutter"},{"slug":"video2","draft":false,"title":"Use Flutter to build a Bookings App Fast","tags":["flutter","android","api"],"date":"\/Date(1679875200000+0000)\/","content":"In this video, we'll show how we can rapidly develop a new Flutter Android Bookings App\nadded to a new [blazor](https://blazor.web-templates.io) .NET Project using `x mix flutter`\n\nNext, we'll dive into the development process, where we'll demonstrate the productivity\nof calling typed .NET APIs using typed Dart DTOs for end-to-end typed integrations\nthat can be effortlessly updated from within Android Studio","url":"https://youtu.be/eMbwaMuIk84","wordCount":72,"lineCount":13,"group":"flutter"},{"slug":"video1","draft":false,"title":"Fastest way to a working gRPC Server and Flutter solution","tags":["grpc","flutter","android"],"date":"\/Date(1679875200000+0000)\/","content":"In this video we'll walk through configuring Flutter and gRPC .NET Services with the `flutter-grpc` mix template\nto add a new Flutter application using your locally installed **Flutter SDK** to an existing ServiceStack `grpc` project\nthat has been configured to support gRPC services","url":"https://youtu.be/fgts6sQ2Ags","wordCount":55,"lineCount":9,"group":"flutter-grpc"},{"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":"video1","draft":false,"title":"Preview APIs with the Auto Html API Page","tags":["ui","api"],"date":"\/Date(1678665600000+0000)\/","content":"The Auto HTML Page provides instant utility for API consumers in consuming your APIs with a built-in \nAPI Response Visualizer, JSON syntax highlighting, integrated Postman-like UI and API SDK integration all-in-one.\n\nPowered by Vue 3 and the ServiceStack [Vue library](https://docs.servicestack.net/vue/), it's also highly customizable.","url":"https://youtu.be/3gjisRVqhLo","wordCount":61,"lineCount":11,"group":"ui-autohtml"},{"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 \nwith the **vue-mjs** template. \n\nThe template illustrates building content-heavy or complex sites while avoiding the intricacies of Single Page Apps (SPAs) \nthrough the use of JavaScript Modules, Tailwind, Vue.js, Razor Pages, and ServiceStack.","url":"https://youtu.be/YIa0w6whe2U","wordCount":62,"lineCount":11,"group":"vue"},{"slug":"video3","draft":false,"title":"Create testable code-first RDBMS migrations in C#","tags":["ormlite","db","migrations"],"date":"\/Date(1665619200000+0000)\/","content":"In this video, we guide you through creating OrmLite DB Migrations, which enhance OrmLite's lightweight code-first development approach by offering a simple change-based migration solution. This solution supports the code-first development workflow of OrmLite, streamlining the process. \n\nBy following the video, you'll learn how to effectively manage database schema changes while leveraging OrmLite's capabilities.","url":"https://youtu.be/NIVFqute7JQ","wordCount":66,"lineCount":10,"group":"features","order":3},{"slug":"db-admin","draft":false,"title":"Using Database Admin UI to browse your App's databases","tags":["db","admin","ui"],"date":"\/Date(1662076800000+0000)\/","content":"Database Admin UI lets Admin Users quickly browse and navigate your App's configured RDBMS schemas and tables,\nwith support for browsing, querying, ordering and filtering data directly from your database without needing to create any APIs \n\nConfiguration is imported from your AppHost which can be easily added in shared development or testing environments \nfor developers and non-developers alike to troubleshoot data issues","url":"https://youtu.be/NZkeyuc_prg","wordCount":76,"lineCount":12,"group":"ui-admin","order":3},{"slug":"redis-admin","draft":false,"title":"Use Redis Admin UI to inspect your App's Redis usage","tags":["redis","admin","ui"],"date":"\/Date(1661904000000+0000)\/","content":"Redis Admin UI lets you manage your App's configured Redis Server with a UX-friendly UI for managing core Redis data types, \nsimple search to quickly find Redis values, quick navigation between related values, \nfirst class support for JSON values and a flexible command interface and command history to inspect all previously run redis \ncommands that's easily editable & rerun","url":"https://youtu.be/AACZtTOcQbg","wordCount":75,"lineCount":12,"group":"ui-admin","order":5},{"slug":"video2","draft":false,"title":"Build a Bookings API with Auto Admin UI in minutes","tags":["autoquery"],"date":"\/Date(1660608000000+0000)\/","content":"From an empty web project, this video shows how to:\n- Add SQLite & Authentication support\n- Define code-first Data Model with Validation\n- Add User Management support\n- Enable Audit History support\n- Add Excel integration","url":"https://youtu.be/rSFiikDjGos","wordCount":46,"lineCount":12,"group":"autoquery"},{"slug":"autoquery-bookings","draft":false,"title":"Build a Bookings API with Auto Admin UI in minutes","tags":["razor-pages","mvc","tailwind","vue"],"date":"\/Date(1660608000000+0000)\/","content":"In this video tutorial, we demonstrate the steps required to create a bookings API that is designed to be easy to use for non-developers. \n\nTo achieve this, we make use of the ServiceStack Locode and Admin UI features.\nWith [Locode](/auto-ui#locode), developers can easily generate a fully functional APIs with CRUD functionality \nwhilst many App features like User Access, Logging, Profiling & DB Validation can be managed from the built-in [Admin UI](/auto-ui#admin).","url":"https://youtu.be/rSFiikDjGos","wordCount":91,"lineCount":13,"group":"apis","order":2},{"slug":"file-uploads-easy","draft":false,"title":"File Upload services the Easy way","tags":["autoquery","files","locode"],"date":"\/Date(1660608000000+0000)\/","content":"The `FileUploadFeature` plugin in ServiceStack enables developers to add managed file uploads to their applications, \nproviding integration with any ServiceStack service, including AutoQuery services, as well as the Locode App UI. \n\nThe modular JavaScript used in this example provides a structured & organized way to write JavaScript code that \ncan be reused in multiple components, further simplifying the development process.","url":"https://youtu.be/xSUqAB0HQB4","wordCount":72,"lineCount":12,"group":"apis","order":4},{"slug":"profiling","draft":false,"title":"Real-time insights with Request Logging & Profiling UIs","tags":["logging","profiling","api","ui"],"date":"\/Date(1658707200000+0000)\/","content":"The new Request Logging & Profiling UIs bring an invaluable new level of observability into your App, \nfrom being able to quickly inspect and browse incoming requests, to tracing their behavior from their generated events \nin the new Diagnostic Source capabilities added all throughout ServiceStack, which both power the new UIs and \nenables new introspectability from code where you can tap in to inspect & debug when diagnostic events occurs","url":"https://youtu.be/LgQHTSHSk1g","wordCount":84,"lineCount":11,"group":"ui-admin","order":4},{"slug":"validation-admin","draft":false,"title":"Create API validation rules from the Validation Admin UI","tags":["db","validation","admin","ui"],"date":"\/Date(1658707200000+0000)\/","content":"With very little code, we walk through the steps required to setup AutoQuery APIs with dynamic validation in .NET. \nThis enables non-developers to manage data, user access and validation rules all from a friendly admin UI \n\nRules can be applied at runtime taking immediate effect, with custom messages, status codes and notes about each rule \nmaking them easy to manage in a team setting","url":"https://youtu.be/W5OJAlOxH98","wordCount":79,"lineCount":12,"group":"ui-admin","order":6},{"slug":"litestream","draft":false,"title":"Create Simple, Fast, Reliable Apps with Litestream","tags":["ormlite","db","litestream","hosting"],"date":"\/Date(1658448000000+0000)\/","content":"This guide introduces [Litestream](https://litestream.io) for SQLite and demonstrates using ServiceStack Litestream mix templates for efficient setup. \nThe tutorial focuses on SQLite backup and restore procedures during deployment via SSH and docker-compose, utilizing GitHub Actions. \n\nBy following these steps, you can streamline your SQLite management tasks and enhance your overall deployment process.","url":"https://youtu.be/WXRwT7ayc1Y","wordCount":66,"lineCount":11,"group":"actions","order":7},{"slug":"file-uploads-cloud","draft":false,"title":"Managed File Uploads","tags":["files","blazor"],"date":"\/Date(1654560000000+0000)\/","content":"In this walkthrough, we explore the `FilesUploadFeature` plugin and a demo FileBlazor App's \n[Managed Files Uploads](https://docs.servicestack.net/locode/files) solution. \n\nThe plugin is a powerful tool that adds managed file uploads to your ServiceStack App, seamlessly integrating \nwith any ServiceStack service, including AutoQuery services and [Locode](/auto-ui#locode) built-in UI \nand [Vue AutoQueryGrid](https://docs.servicestack.net/vue/autoquerygrid) and \n[Blazor Component Library](https://blazor-gallery.servicestack.net/gallery).","url":"https://youtu.be/5sd00MzHpaU","wordCount":74,"lineCount":15,"group":"apis","order":5},{"slug":"video1","draft":false,"title":"Rapidly develop apps with Locode","tags":["ui","api"],"date":"\/Date(1652659200000+0000)\/","content":"Learn how to easily create customizable feature-rich UX-friendly RDBMS Web Apps with Locode's\ninstant CRUD UI driven by your AutoQuery APIs that can be further extended with custom UIs\n\nIn this video we show 3 examples from generating everything from an existing database, making customizations to the Locode App, \nand finally reusing all your services in a custom Blazor WASM App","url":"https://youtu.be/hkuO_DMFXmc","wordCount":68,"lineCount":12,"group":"ui-locode"},{"slug":"video2","draft":false,"title":"Database-first development with Locode","tags":["ui","api"],"date":"\/Date(1652659200000+0000)\/","content":"To demonstrate a database-first development workflow we've enabled\n[AutoGen](https://docs.servicestack.net/autoquery-autogen)\non the **Northwind** sample database to generate \n[AutoQuery](https://docs.servicestack.net/autoquery-rdbms) & \n[CRUD](https://docs.servicestack.net/autoquery-crud) \nAPIs whose capabilities are used to power the custom Northwind Locode App","url":"https://youtu.be/NiTp5Z_5U2Y","wordCount":50,"lineCount":13,"group":"ui-locode"},{"slug":"video3","draft":false,"title":"Quickly create a code-first API and CRUD App with Locode","tags":["autoquery","crud","ui"],"date":"\/Date(1652659200000+0000)\/","content":"To showcase greater customizability options, we've exported AutoGen APIs of the **Chinook** sample database into typed AutoQuery APIs \n& Data Models to unlock more flexible code-first declarative & programmatic dev models that includes Custom UI components \nto showcase potential enhancements in Locode Apps","url":"https://youtu.be/mFyMgg7c3vg","wordCount":57,"lineCount":9,"group":"ui-locode"},{"slug":"video3","draft":false,"title":"Rapidly develop apps with Locode","tags":["autoquery","locode"],"date":"\/Date(1652659200000+0000)\/","content":"ServiceStack Locode App is a generated API driven by your service metadata. When combined with AutoQuery, \nit becomes a way to rapidly develop web applications with robust service APIs that can be later extended with custom UIs. \n\nIn this video we show 3 examples from generating everything from an existing database, making customizations to the Locode \nApp, and finally reusing all your services in a custom Blazor WASM App","url":"https://youtu.be/hkuO_DMFXmc","wordCount":78,"lineCount":12,"group":"autoquery"},{"slug":"video1","draft":false,"title":"Database first development with Locode","tags":["autoquery","autogen","locode"],"date":"\/Date(1652659200000+0000)\/","content":"In this video we show a step by step process for start with an existing database and customizations without the need for code first models.\n\n[Locode](https://docs.servicestack.net/locode/) is a generated API driven by your APIs metadata. \nCombined with other high-level ServiceStack features, it becomes a way to rapidly develop web applications with robust service APIs \nthat can be later extended with custom UIs.","url":"https://youtu.be/NiTp5Z_5U2Y","wordCount":76,"lineCount":12,"group":"autogen"},{"slug":"video1","draft":false,"title":"Fastest way to a working gRPC Server and Flutter solution","tags":["flutter","dart","grpc"],"date":"\/Date(1648771200000+0000)\/","content":"The video guides viewers through configuring a Flutter application with gRPC .NET services using the `flutter-grpc` mix template, starting with Flutter and gRPC services introduction and installation of the required SDK and template. \n\nIt demonstrates creating typed Dart DTOs for gRPC services, making typed requests, and keeping the Flutter app in sync with the .NET backend through automatic updates.","url":"https://youtu.be/fgts6sQ2Ags","wordCount":73,"lineCount":9,"group":"grpc"},{"slug":"nextjs","draft":false,"title":"Rapidly develop C# .NET Next.js JamStack Apps with Rider","tags":["nextjs","react","jamstack"],"date":"\/Date(1644278400000+0000)\/","content":"In this comprehensive walkthrough, we will guide you through the ServiceStack Next.js template, which offers an \nexceptional rapid development cycle when used with JetBrains Rider. \n\nThis template is specifically designed for Microsoft .NET developers seeking a seamless and efficient Next.js React \nsetup while employing the better performing Jamstack architecture.","url":"https://youtu.be/3pPLRyPsO5A","wordCount":67,"lineCount":13,"group":"projects","order":5},{"slug":"ultimate-vue-spa-ssg","draft":false,"title":"Ultimate Vue SPA & SSG Jamstack templates for .NET","tags":["vue","vite","jamstack"],"date":"\/Date(1643673600000+0000)\/","content":"In this video tutorial, we introduce the `vue-ssg` template, a powerful combination of Vite, Vue3, and ServiceStack \nthat offers an unparalleled developer experience\n\nThis template is specifically designed for .NET developers seeking a seamless and efficient Vue.js setup \nwhile employing the Jamstack architecture leveraging capabilities of Vite, Vue & ServiceStack","url":"https://youtu.be/D-rU0lU_B4I","wordCount":64,"lineCount":13,"group":"vue-projects","order":6},{"slug":"vue-ssg","draft":false,"title":"Ultimate Vue SPA & SSG Jamstack templates for .NET","tags":["vue","vite","jamstack"],"date":"\/Date(1643673600000+0000)\/","content":"In this video tutorial, we introduce the `vue-ssg` template, a powerful combination of Vite, Vue3, and ServiceStack \nthat offers an unparalleled developer experience\n\nThis template is specifically designed for .NET developers seeking a seamless and efficient Vue.js setup \nwhile employing the Jamstack architecture leveraging capabilities of Vite, Vue & ServiceStack","url":"https://youtu.be/D-rU0lU_B4I","wordCount":67,"lineCount":13,"group":"projects","order":6},{"slug":"video1","draft":false,"title":"API Explorer - a better Postman & Swagger UI","tags":["ui","api"],"date":"\/Date(1643068800000+0000)\/","content":"The entire API Explorer UI is driven by the rich metadata around your APIs typed Service Contracts and AppHost's registered plugins\n\nIt's built from the ground up with multiple levels of customizations, supporting both declarative & programmatic models\nwhilst also enabling rich interactive HTML Components to document each of your APIs & their Types","url":"https://youtu.be/lUDlTMq9DHU","wordCount":65,"lineCount":10,"group":"ui-explorer"},{"slug":"csharp-fsharp-vb","draft":false,"title":"Add Typed C#, TypeScript, F# and VB.NET ServiceStack References from JetBrains Rider","tags":["rider","c#","f#","vb"],"date":"\/Date(1629936000000+0000)\/","content":"The ServiceStack plugin for Jetbrains Rider simplifies managing your C#, F# and VB.NET client integrations by automating the generation of typed DTOs, request and response models, and client libraries.\n\nIn this video, we demonstrate the process of installing and utilizing the JetBrains Rider plugin to manage your client integrations for your ServiceStack .NET clients.","url":"https://youtu.be/JKsgrstNnYY","wordCount":77,"lineCount":10,"group":"ss-ref","order":2},{"slug":"post-command","draft":false,"title":"Post Command line HTTP API tools","tags":["inspect","tool"],"date":"\/Date(1629676800000+0000)\/","content":"[Post Command](https://docs.servicestack.net/post-command) is a collection of command line utils that lets you easily discover,\ninspect and invoke ServiceStack endpoints from a single command.\n\nUse [inspect](https://docs.servicestack.net/post-command#inspect-command) to discover features and APIs available on a remote\nServiceStack endpoint including the version of ServiceStack running, the App’s registered Content Types, Plugins and Auth Providers\nas well as its public APIs, their routes and Response Types.","url":"https://youtu.be/FcXG4RnlVQk","wordCount":78,"lineCount":13,"group":"apis","order":7},{"slug":"video1","draft":false,"title":"Create Python Jupyter Notebooks for .NET APIs","tags":["jupyter","python"],"date":"\/Date(1629158400000+0000)\/","content":"The video demonstrates generating Jupyter Notebooks using ServiceStack **x** tool and [Instant Client Apps](https://apps.servicestack.net), which together provide an efficient and portable development experience. \n\nThis enables developers to use Jupyter Notebooks for tasks like data analysis, visualization, and machine learning in a transferable manner across environments.","url":"https://youtu.be/h6UwDuXt8MA","wordCount":61,"lineCount":10,"group":"jupyter"},{"slug":"video2","draft":false,"title":"Create C# Jupyter Notebooks to Inspect & Chart .NET APIs","tags":["jupyter","c#"],"date":"\/Date(1629158400000+0000)\/","content":"This video demonstrates integrating .NET Interactive and JupyterLab to enhance the development experience, creating a seamless workflow when working with ServiceStack services. \n\nIt guides viewers through generating working C# notebooks for any ServiceStack service, highlighting improved productivity through these tools which are FREE on [mybinder.org](https://mybinder.org).","url":"https://youtu.be/vt92pbet5bY","wordCount":64,"lineCount":11,"group":"jupyter"},{"slug":"video3","draft":false,"title":"Create F# Jupyter Notebooks to inspect .NET APIs & run FREE on Binder","tags":["jupyter","f#"],"date":"\/Date(1629158400000+0000)\/","content":"This video demonstrates integrating .NET Interactive and JupyterLab to enhance the development experience, creating a seamless workflow when working with ServiceStack services.\n\nIt guides viewers through generating working F# notebooks for any ServiceStack service, highlighting improved productivity through these tools which are FREE on [mybinder.org](https://mybinder.org).","url":"https://youtu.be/PxH3K5WIDx8","wordCount":66,"lineCount":10,"group":"jupyter"},{"slug":"python","draft":false,"title":"Call typed .NET APIs from Python","tags":["python","vscode","jupyter"],"date":"\/Date(1629158400000+0000)\/","content":"The video tutorial walks through how to leverage Add ServiceStack Reference for Python in different Python IDEs \nsuch as PyCharm, VSCode, and Jupyter Notebooks \n\nAdd ServiceStack Reference is a powerful tool that automatically generates typed Python DTOs for your \nServiceStack APIs, saving you time and effort. With this tool, you can access your web services with \nease and benefit from the productivity boost it provides.","url":"https://youtu.be/WjbhfH45i5k","wordCount":80,"lineCount":14,"group":"ss-ref","order":1},{"slug":"php","draft":false,"title":"Call typed .NET APIs from PHP","tags":["php","phpstorm","drupal"],"date":"\/Date(1629158400000+0000)\/","content":"Learn about how to maximize the developer experience for calling ServiceStack .NET APIs within PHP's popular \nWordpress, Drupal or Laravel Apps with Add ServiceStack Reference first class support for PHP, giving \ndevelopers an end-to-end typed API for consuming ServiceStack APIs, complete with IDE integration in PhpStorm as well \nas built-in support in `x` dotnet tool to generate Typed and annotated PHP DTOs for a remote ServiceStack instance \nfrom a single command-line.","url":"https://youtu.be/ZLVdaJ38vwc","wordCount":85,"lineCount":12,"group":"ss-ref","order":2},{"slug":"razor-press","draft":false,"title":"VitePress and Jekyll alternative for SSG Docs","tags":["razor-pages","ssg","tailwind","markdown"],"date":"\/Date(1626134400000+0000)\/","content":"Introducing Razor Press, a powerful ServiceStack project template for creating documentation and content-centric websites \nusing .NET's Razor Pages, Markdown, Tailwind CSS, and Vue. \n\nLearn how Razor Press aids in the easy creation, and deployment of your statically generated sites that can be hosted for \nFREE on GitHub Pages CDN","url":"https://youtu.be/uqEa_DfFFDQ","wordCount":61,"lineCount":12,"group":"vue-projects","order":4},{"slug":"intro","draft":false,"title":"Intro to ServiceStack","tags":["apis"],"date":"\/Date(1625529600000+0000)\/","content":"In this introduction to ServiceStack, we will guide you through the framework's message-based design and its numerous benefits, \nwhich include promoting simplicity and enabling maximum reuse. \n\nBy utilizing a message-based design, ServiceStack encourages developers to focus on the core functionality of their services while \nabstracting away complexities, resulting in a more streamlined and efficient development process.","url":"https://youtu.be/Vae0ALalIP0","wordCount":66,"lineCount":13,"group":"apis","order":1},{"slug":"modern-razor-tailwind","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","url":"https://youtu.be/SyppvQB7IPs","wordCount":57,"lineCount":12,"group":"vue-projects","order":3},{"slug":"modern-vue-js","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://blazor-vue.web-templates.io\n- https://razor.web-templates.io\n- https://mvc.web-templates.io\n- https://web-tailwind.web-templates.io","url":"https://youtu.be/SyppvQB7IPs","wordCount":75,"lineCount":18,"group":"projects","order":4},{"slug":"video2","draft":false,"title":"Enabling Dart gRPC support to ServiceStack .NET Apps","tags":["dart","grpc"],"date":"\/Date(1620864000000+0000)\/","content":"In this video we walk through how to enable gRPC endpoints for your existing ServiceStack services\nand how the [x dotnet tool](https://docs.servicestack.net/dotnet-tool) greatly\nsimplifies the development workflow of maintaining in-sync client integrations in a simple and consistent\nway across all gRPC languages","url":"https://youtu.be/UQlYodNS1xc","wordCount":54,"lineCount":10,"group":"flutter-grpc"},{"slug":"video2","draft":false,"title":"Enabling Dart gRPC support to ServiceStack .NET Apps","tags":["dart","grpc"],"date":"\/Date(1620864000000+0000)\/","content":"This video tutorial explains how to easily transform ServiceStack services into gRPC services by generating the `.proto` file automatically from your service definitions.\n\nIt also showcases the [ServiceStack x tool](https://docs.servicestack.net/dotnet-tool)'s powerful features streamline integration, automate repetitive tasks, and support various languages, enabling the development of faster, more efficient, and scalable applications.","url":"https://youtu.be/UQlYodNS1xc","wordCount":68,"lineCount":9,"group":"grpc"},{"slug":"video3","draft":false,"title":"Call .NET APIs from a Flutter Android App with native Dart","tags":["flutter","android","apis"],"date":"\/Date(1619654400000+0000)\/","content":"In this video we should how you can quickly get up and running using ServiceStack's \nDart client library with your Flutter Android or iOS Apps \nto generate native typed Dart DTOs with [Add ServiceStack Reference](https://docs.servicestack.net/dart-add-servicestack-reference)\nenabling end-to-end typed integrations to call .NET APIs from Flutter Mobile, Desktop and Dart Web Apps","url":"https://youtu.be/ocH5L-CikQ0","wordCount":69,"lineCount":11,"group":"flutter"},{"slug":"flutter","draft":false,"title":"Call typed .NET APIs from Flutter Android Apps using Dart","tags":["flutter","dart","android"],"date":"\/Date(1619654400000+0000)\/","content":"In this video, we will demonstrate how you can swiftly set up and begin utilizing ServiceStack's Dart client library with your Flutter Android or iOS applications.\n\nThis also enables you to automate the generation native typed Dart Data Transfer Objects (DTOs) using the Add ServiceStack Reference feature, which simplifies the integration process and typed end-to-end communication between your Flutter Mobile Apps.","url":"https://youtu.be/ocH5L-CikQ0","wordCount":76,"lineCount":10,"group":"mobile"},{"slug":"ssh-deployments","draft":false,"title":"Using GitHub Actions for CI & .NET App Deployments","tags":["github-actions","deployment"],"date":"\/Date(1619049600000+0000)\/","content":"This tutorial demonstrates enabling continuous integration, deployment, hosting, and Let's Encrypt HTTPS configuration \nfor an existing ServiceStack Project using the new mix support for GitHub Actions. \n\nWe'll guide you through the process of integrating these powerful features into your project. By following the tutorial, \nyou'll streamline your workflow of your ServiceStack Project.","url":"https://youtu.be/0PvzcnxlBvc","wordCount":67,"lineCount":12,"group":"actions","order":4},{"slug":"video2","draft":false,"title":"Servicify an existing RDBMS with AutoQuery","tags":["autoquery","autogen"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack’s AutoGen enables a number of exciting possibilities, predominantly it’s the fastest way to ServiceStack-ify an existing systems \nRDBMS where it will serve as an invaluable tool for anyone wanting to quickly migrate to ServiceStack and access its functionality \necosystem around ServiceStack Services","url":"https://youtu.be/NaJ7TW-Q_pU","wordCount":53,"lineCount":11,"group":"autogen"},{"slug":"xamarin","draft":false,"title":"Call typed .NET APIs from Xamarin.Android in C#","tags":["xamarin","android","c#"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack framework and Add ServiceStack Reference tool can be utilized in mobile applications built with Xamarin.Android, enabling developers to create native Android applications using C# and .NET framework. \n\nAdd ServiceStack Reference simplifies the consumption of web services by generating your Request DTOs for easy API access. This saves time and effort, promoting faster mobile app development.","url":"https://youtu.be/cbYuem1b2tg","wordCount":70,"lineCount":9,"group":"mobile"},{"slug":"instant-client-apps","draft":false,"title":"Create Instant Client Apps from C# .NET Web APIs","tags":["c#","f#","node.js","dart"],"date":"\/Date(1618963200000+0000)\/","content":"Generate working native client apps for your live ServiceStack services, in a variety of languages, instantly with our free managed service.\n\nThis tool enables your developers, and even your customers, to open a working example native application straight from the web to their favorite IDE.","url":"https://youtu.be/GTnuMhvUayg","wordCount":65,"lineCount":11,"group":"ss-ref","order":3},{"slug":"aws-ecs","draft":false,"title":"Deploy Docker .NET Apps to AWS ECS with GitHub Actions","tags":["github-actions","deployment","aws","ecs"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack projects, enabling the configuration for building, testing, and deploying to a cost-efficient AWS ECS setup. \nBy utilizing this approach, Docker Apps can be deployed on a single instance, automatically configured behind an NGINX \nproxy with Let's Encrypt SSL support. \n\nFollowing this tutorial will streamline your workflow of your ServiceStack projects.","url":"https://youtu.be/Eh4tvLN8i8g","wordCount":68,"lineCount":13,"group":"actions","order":5},{"slug":"aws-lambda","draft":false,"title":"Run ServiceStack .NET Apps in AWS Lambda Containers","tags":["github-actions","deployment","aws","lambda"],"date":"\/Date(1612224000000+0000)\/","content":"This walkthrough demonstrates deploying a ServiceStack application to AWS Lambda using Docker containers through GitHub Actions. \nBy following the guide, you'll learn the process of automating deployment and leveraging the advantages of containerization. \n\nThis approach simplifies the deployment process of your ServiceStack applications.\n\n - [Learn More](https://docs.servicestack.net/templates-aws)","url":"https://youtu.be/8mpGNTsSlvE","wordCount":64,"lineCount":13,"group":"actions","order":6}],"posts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","image":"https://images.unsplash.com/photo-1639262498805-17c7dc422d37?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://servicestack.net/posts/npx-get-dtos","wordCount":690,"lineCount":125},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":479,"lineCount":123},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1593486544625-13ef2368e43a?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":1070,"lineCount":409},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1496368077930-c1e31b4e5b44?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":731,"lineCount":143},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","image":"https://images.unsplash.com/photo-1494961104209-3c223057bd26?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://servicestack.net/posts/kamal-deployments","wordCount":1119,"lineCount":133},{"slug":"ai-server","draft":false,"title":"Self Hosted AI Server for LLMs, Ollama, Comfy UI & FFmpeg","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1642516303080-431f6681f864?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://servicestack.net/posts/ai-server","wordCount":1728,"lineCount":361},{"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":"Demis Bellot","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-podcasts","wordCount":1021,"lineCount":167},{"slug":"scalable-sqlite","draft":false,"title":"Scalable Server SQLite Apps","summary":"Learn how to build concurrent, safe scalable SQLite .NET Apps in C#","image":"https://images.unsplash.com/photo-1558494949-ef010cbdcc31?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727308800000-0000)\/","url":"https://servicestack.net/posts/scalable-sqlite","wordCount":2187,"lineCount":363},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite C# Request Logs","summary":"Maintain C# Request Log History in rolling Monthly SQLite databases","image":"https://images.unsplash.com/photo-1535350356005-fd52b3b524fb?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727136000000-0000)\/","url":"https://servicestack.net/posts/sqlite-request-logs","wordCount":494,"lineCount":104},{"slug":"background-jobs","draft":false,"title":"Simple C# Background Jobs & Recurring Tasks for .NET 8","summary":"Introducing C# Background Jobs for managing background jobs and scheduled tasks","image":"https://images.unsplash.com/photo-1716191300020-b52dec5b70a8?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["workers","commands",".net8"],"date":"\/Date(1726012800000-0000)\/","url":"https://servicestack.net/posts/background-jobs","wordCount":4365,"lineCount":917},{"slug":"commands-feature","draft":false,"title":"Utilize C# Commands to build more robust and observable systems","summary":"Learn how to build testable, robust observable systems with the new Commands Feature","image":"https://images.unsplash.com/photo-1524741978410-350ba91a70d7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["commands",".net8"],"date":"\/Date(1719964800000-0000)\/","url":"https://servicestack.net/posts/commands-feature","wordCount":2422,"lineCount":507},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 C# Microservices","summary":"A Simple Auth configuration using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1529265895721-65945a176cff?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://servicestack.net/posts/simple-auth-microservices","wordCount":1154,"lineCount":270},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 C# APIs","summary":"Using C# API Keys for simplified fine-grained access control in ServiceStack .NET 8 APIs","image":"https://images.unsplash.com/photo-1693251952958-0f0f40882fe7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["apikeys",".net8","identity-auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://servicestack.net/posts/apikeys","wordCount":1998,"lineCount":394},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","summary":"Regenerate your License Key to support RedHat Enterprise Linux 9 Default Cryptography Policy","image":"https://images.unsplash.com/photo-1564296787121-726de5b37bf1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","servicestack","licensing"],"date":"\/Date(1719705600000-0000)\/","url":"https://servicestack.net/posts/rhel9-cryptography","wordCount":481,"lineCount":58},{"slug":"redis-outputcache","draft":false,"title":"Using ASP.NET Core Output Caching","summary":"How to use ASP.NET Core Output Caching to cache the response of a ServiceStack Service using ServiceStack.Redis","image":"https://images.unsplash.com/photo-1590247813693-5541d1c609fd?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://servicestack.net/posts/redis-outputcache","wordCount":1089,"lineCount":233},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"Using ASP.NET Core Rate Limiter Middleware","summary":"Learn how to use the new Rate Limiter Middleware in ServiceStack to protect your APIs from abuse.","image":"https://images.unsplash.com/photo-1527710200112-665192dc1c22?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://servicestack.net/posts/asp-rate-limiter-middleware","wordCount":1348,"lineCount":218},{"slug":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Explore the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","author":"Demis Bellot","tags":["kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://servicestack.net/posts/kotlin-compose-multiplatform","wordCount":1026,"lineCount":176},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"Explore the new enhanced Vite TypeScript React SPA template for .NET 8","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["react",".net8","autoquery","admin"],"date":"\/Date(1709683200000-0000)\/","url":"https://servicestack.net/posts/net8-react-spa-template","wordCount":2337,"lineCount":313},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Introducing the enhanced Vite TypeScript Vue SPA template for .NET 8","image":"https://images.unsplash.com/photo-1590212151175-e58edd96185b?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue",".net8","autoquery","admin"],"date":"\/Date(1709596800000-0000)\/","url":"https://servicestack.net/posts/net8-vue-spa-template","wordCount":1874,"lineCount":333},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Vite Press Plugin for Vite Vue & React Apps","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://servicestack.net/posts/vite-press-plugin","wordCount":2093,"lineCount":538},{"slug":"blazor-8-admin","draft":false,"title":"New Blazor Interactive Auto Template with Custom Admin UIs","summary":"Discover how to use ServiceStack.Blazor components to quickly create customizable and professional-looking admin pages in a Blazor application","image":"https://images.unsplash.com/photo-1535478044878-3ed83d5456ef?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["blazor",".net8","admin"],"date":"\/Date(1708905600000-0000)\/","url":"https://servicestack.net/posts/blazor-8-admin","wordCount":1429,"lineCount":218},{"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":"Demis Bellot","tags":[".net8","auth","jwt"],"date":"\/Date(1708560000000-0000)\/","url":"https://servicestack.net/posts/jwt-identity-auth","wordCount":1084,"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":"Demis Bellot","tags":[".net8","identity-auth","admin-ui"],"date":"\/Date(1708473600000-0000)\/","url":"https://servicestack.net/posts/identity-auth-admin-ui","wordCount":647,"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":"Demis Bellot","tags":[".net8","json","api"],"date":"\/Date(1708387200000-0000)\/","url":"https://servicestack.net/posts/system-text-json-apis","wordCount":943,"lineCount":212},{"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":"Darren Reid","tags":["openapi",".net8"],"date":"\/Date(1708300800000-0000)\/","url":"https://servicestack.net/posts/openapi-v3","wordCount":1195,"lineCount":199},{"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":"Demis Bellot","tags":[".net8","api"],"date":"\/Date(1707264000000-0000)\/","url":"https://servicestack.net/posts/servicestack-endpoint-routing","wordCount":3178,"lineCount":619},{"slug":"identity-migration","draft":false,"title":"Migrating to ASP.NET Core Identity for Authentication","summary":"A walkthrough of migrating our BlazorDiffusion example application over to ASP.NET Core Identity for authentication","image":"https://images.unsplash.com/photo-1596563910641-86f6aebaab9a?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["auth","identity-auth"],"date":"\/Date(1707177600000-0000)\/","url":"https://servicestack.net/posts/identity-migration","wordCount":3575,"lineCount":534},{"slug":"net8-docker-containers","draft":false,"title":"Docker Containerization in .NET 8","summary":".NET 8 Docker Containers and GitHub Actions Deployments in new Project Templates","image":"https://images.unsplash.com/photo-1609884557151-1e356d32900c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["dotnet","github-actions","hosting","devops"],"date":"\/Date(1702339200000-0000)\/","url":"https://servicestack.net/posts/net8-docker-containers","wordCount":2595,"lineCount":352},{"slug":"php-typed-apis","draft":false,"title":"PHP typed client DTOs for .NET APIs","summary":"Announcing 1st class end-to-end typed support for calling .NET APIs with PHP","image":"https://images.unsplash.com/photo-1599507593548-0187ac4043c6?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["php","servicestack","service-reference"],"date":"\/Date(1701216000000-0000)\/","url":"https://servicestack.net/posts/php-typed-apis","wordCount":1455,"lineCount":239},{"slug":"net8-identity-auth","draft":false,"title":"ASP.NET Core Identity Auth in .NET 8","summary":"ServiceStack has switched to ASP.NET Core Identity Auth in new .NET 8 Blazor, Razor and MVC Project Templates","image":"https://images.unsplash.com/photo-1635602739175-bab409a6e94c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","identity-auth","templates"],"date":"\/Date(1701129600000-0000)\/","url":"https://servicestack.net/posts/net8-identity-auth","wordCount":3717,"lineCount":707},{"slug":"net8-best-blazor","draft":false,"title":".NET 8's Best Blazor is not Blazor as we know it","summary":"We explore the exciting new potential of Blazor in .NET 8 to develop fast, interactive Web Apps without compromise","image":"https://images.unsplash.com/photo-1482686115713-0fbcaced6e28?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","blazor","servicestack"],"date":"\/Date(1700611200000-0000)\/","url":"https://servicestack.net/posts/net8-best-blazor","wordCount":3748,"lineCount":507},{"slug":"net8-blazor-template","draft":false,"title":"New .NET 8 Blazor Tailwind Template","summary":"The new Blazor for .NET 8 template streamlines web UI development in C#.","image":"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","blazor","templates"],"date":"\/Date(1700438400000-0000)\/","url":"https://servicestack.net/posts/net8-blazor-template","wordCount":1167,"lineCount":97},{"slug":"servicestack-ai","draft":false,"title":"ServiceStack.AI - Chat GPT and Managed Cloud Providers","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1655393001768-d946c97d6fd1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695859200000-0000)\/","url":"https://servicestack.net/posts/servicestack-ai","wordCount":4037,"lineCount":886},{"slug":"typescript-typechat-examples","draft":false,"title":"All of TypeScript's TypeChat Examples in .NET","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1522542550221-31fd19575a2d?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695686400000-0000)\/","url":"https://servicestack.net/posts/typescript-typechat-examples","wordCount":933,"lineCount":161},{"slug":"voice-activated-typechat-coffeeshop","draft":false,"title":"Creating a Voice Activated CoffeeShop in .NET","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1678483789107-0029c61fdcca?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695168000000-0000)\/","url":"https://servicestack.net/posts/voice-activated-typechat-coffeeshop","wordCount":5927,"lineCount":1212},{"slug":"building-typechat-coffeeshop-modelling","draft":false,"title":"Modelling TypeChat's CoffeeShop in .NET","summary":"We look at Modelling TypeChat's CoffeeShop App","image":"https://images.unsplash.com/photo-1501516069922-a9982bd6f3bd?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1694476800000-0000)\/","url":"https://servicestack.net/posts/building-typechat-coffeeshop-modelling","wordCount":7146,"lineCount":1356},{"slug":"cloud-value-between-architectures","draft":false,"title":"Should .NET Apps switch to ARM?","summary":"Evaluating the cost and performance of ARM vs x86 in AWS, Azure, and Hetzner","image":"https://images.unsplash.com/photo-1587845323226-bad89242c735?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","hosting","arm","performance"],"date":"\/Date(1693180800000-0000)\/","url":"https://servicestack.net/posts/cloud-value-between-architectures","wordCount":3263,"lineCount":394},{"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":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1692748800000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-new-blog-features","wordCount":1288,"lineCount":337},{"slug":"jsonl-format","draft":false,"title":"Exploring the new streamable JSON Lines Format","summary":"A dive into the JSON Lines format and how to use it in ServiceStack","image":"https://images.unsplash.com/photo-1687042268541-5cc60ad9d3de?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["serialization","servicestack","jsonl"],"date":"\/Date(1692057600000-0000)\/","url":"https://servicestack.net/posts/jsonl-format","wordCount":1656,"lineCount":217},{"slug":"kubernetes_not_required","draft":false,"title":"Using GitHub for Auto Deployments - Kubernetes Not Required","summary":"A cost-effective and straightforward web app deployment pattern using GitHub and a single Linux server","image":"https://images.unsplash.com/photo-1667372459510-55b5e2087cd0?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","devops","hosting"],"date":"\/Date(1691452800000-0000)\/","url":"https://servicestack.net/posts/kubernetes_not_required","wordCount":5290,"lineCount":693},{"slug":"bulk-insert-performance","draft":false,"title":"Which RDBMS has the fastest .NET Bulk Insert implementation?","summary":"Measuring the different performance of RDBMS Bulk Insert implementations","image":"https://images.unsplash.com/photo-1517026575980-3e1e2dedeab4?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["db","dev","dotnet"],"date":"\/Date(1690761600000-0000)\/","url":"https://servicestack.net/posts/bulk-insert-performance","wordCount":6965,"lineCount":1070},{"slug":"postgres-mysql-sqlserver-on-apple-silicon","draft":false,"title":"Install PostgreSQL, MySql and SQL Server on Apple Silicon","summary":"Easiest way to install PostgreSQL, MySql and SQL Server on macOS running Apple Silicon's M2","image":"https://images.unsplash.com/photo-1517663404855-6f96c7aa20e2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["db","dev"],"date":"\/Date(1690243200000-0000)\/","url":"https://servicestack.net/posts/postgres-mysql-sqlserver-on-apple-silicon","wordCount":1671,"lineCount":328},{"slug":"semantic-kernel-gptmeetngs","draft":false,"title":"Trying Microsoft's Semantic Kernel","summary":"Incorporating the Semantic Kernel into our GPT Meeting Agent gives developers more flexibility when working with LLMs","image":"https://images.unsplash.com/photo-1579548122080-c35fd6820ecb?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","ai","semantic-kernel","gpt"],"date":"\/Date(1689638400000-0000)\/","url":"https://servicestack.net/posts/semantic-kernel-gptmeetngs","wordCount":833,"lineCount":54},{"slug":"razor-press","draft":false,"title":"Introducing Razor Press","summary":"Markdown & Razor Pages Static Site Generator for beautiful fast Content & Documentation","image":"https://images.unsplash.com/photo-1681301968680-fe46a0cd51be?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1689552000000-0000)\/","url":"https://servicestack.net/posts/razor-press","wordCount":957,"lineCount":164},{"slug":"using-json-patch","draft":false,"title":"JSON Patch secrets into appsettings.json","summary":"Simplify managing App secrets by JSON patching them into your appsettings.json with during deployments","image":"https://images.unsplash.com/photo-1563089145-599997674d42?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["devops","github-actions"],"date":"\/Date(1689033600000-0000)\/","url":"https://servicestack.net/posts/using-json-patch","wordCount":670,"lineCount":135},{"slug":"new-razor-ssg-docs","draft":false,"title":"New Razor SSG generated docs.servicestack.net","summary":"The new docs.servicestack.net website is now generated with Razor SSG - now with Dark Mode!","image":"https://images.unsplash.com/photo-1526243741027-444d633d7365?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","ssg","docs"],"date":"\/Date(1688947200000-0000)\/","url":"https://servicestack.net/posts/new-razor-ssg-docs","wordCount":1046,"lineCount":130},{"slug":"vue-stable-diffusion","draft":false,"title":"Vue Stable Diffusion","summary":"Rewriting Blazor Diffusion image generation & album catalog in Vue & Razor SSG","image":"https://images.unsplash.com/photo-1573490647695-2892d0bf89e7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue","tailwind"],"date":"\/Date(1686787200000-0000)\/","url":"https://servicestack.net/posts/vue-stable-diffusion","wordCount":1057,"lineCount":209},{"slug":"admin-uis","draft":false,"title":"Build Beautiful Admin UIs, Fast","summary":"Taking a look at the new features in Vue Razor Pages template to build Admin UIs, Fast","image":"https://images.unsplash.com/photo-1667906962043-a3e82dea23a3?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue","tailwind","admin"],"date":"\/Date(1686614400000-0000)\/","url":"https://servicestack.net/posts/admin-uis","wordCount":1854,"lineCount":352},{"slug":"creatorkit","draft":false,"title":"Introducing CreatorKit","summary":"Exploring CreatorKit - an OSS Self-Hosting alternative to Mailchimp and Disqus","image":"https://images.unsplash.com/photo-1493723843671-1d655e66ac1c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["creatorkit","marketing","publishing"],"date":"\/Date(1686182400000-0000)\/","url":"https://servicestack.net/posts/creatorkit","wordCount":1348,"lineCount":209},{"slug":"chat-gpt-agents","draft":false,"title":"Creating ChatGPT Agents to call System APIs","summary":"A walkthrough of how to enable Large Language Model 'Agents' with access to your own ServiceStack APIs","image":"https://images.unsplash.com/photo-1675271591211-126ad94e495d?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["servicestack","gpt","ai"],"date":"\/Date(1683849600000-0000)\/","url":"https://servicestack.net/posts/chat-gpt-agents","wordCount":1951,"lineCount":273},{"slug":"autoquery-xkcd","draft":false,"title":"Bringing xkcd static dataset to life with AutoQuery","summary":"Unsiloing data quickly with AutoQuery to make your datasets available from queryable Web APIs","image":"./img/posts/autoquery-xkcd/drawing-xkcd-upscaled.jpg","author":"Darren Reid","tags":["autoquery","db","dev","vue"],"date":"\/Date(1681516800000-0000)\/","url":"https://servicestack.net/posts/autoquery-xkcd","wordCount":3308,"lineCount":551},{"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":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1680134400000-0000)\/","url":"https://servicestack.net/posts/razor-ssg","wordCount":3035,"lineCount":607},{"slug":"new_razor_ssg_website","draft":false,"title":"New Razor SSG generated servicestack.net","summary":"Celebrating 150M Downloads with a new Razor SSG generated Website","image":"https://images.unsplash.com/photo-1475669698648-2f144fcaaeb1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","ssg","website"],"date":"\/Date(1680048000000-0000)\/","url":"https://servicestack.net/posts/new_razor_ssg_website","wordCount":561,"lineCount":77},{"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":"Demis Bellot","tags":["js","dev"],"date":"\/Date(1675209600000-0000)\/","url":"https://servicestack.net/posts/javascript","wordCount":3348,"lineCount":676},{"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":"Demis Bellot","tags":["c#","dev"],"date":"\/Date(1673395200000-0000)\/","url":"https://servicestack.net/posts/rider","wordCount":472,"lineCount":77},{"slug":"prerendering","draft":false,"title":"Prerendering Razor Pages","summary":"Improving Blog Performance with Prerendering","image":"https://images.unsplash.com/photo-1522526886914-6e8d4fd91399?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","dev","markdown"],"date":"\/Date(1673395200000-0000)\/","url":"https://servicestack.net/posts/prerendering","wordCount":1160,"lineCount":235},{"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":"Demis Bellot","tags":["c#","dev"],"date":"\/Date(1673308800000-0000)\/","url":"https://servicestack.net/posts/vs","wordCount":1325,"lineCount":76},{"slug":"jamstacks_hosting","draft":false,"title":"Jamstack Hosting Costs @ $.40 /mo","summary":"Exploring cost & scalability benefits of hybrid CDN & .NET Apps","image":"https://images.unsplash.com/photo-1506399309177-3b43e99fead2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["dev","hosting","devops"],"date":"\/Date(1672617600000-0000)\/","url":"https://servicestack.net/posts/jamstacks_hosting","wordCount":3054,"lineCount":83},{"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":"Darren Reid","tags":["github-actions","devops","hosting"],"date":"\/Date(1672531200000-0000)\/","url":"https://servicestack.net/posts/deploy","wordCount":724,"lineCount":107},{"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":"Darren Reid","tags":["dev","hosting","devops"],"date":"\/Date(1662422400000-0000)\/","url":"https://servicestack.net/posts/hetzner-cloud","wordCount":2699,"lineCount":229},{"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":"Darren Reid","tags":["dev","docs"],"date":"\/Date(1636329600000-0000)\/","url":"https://servicestack.net/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":"Darren Reid","tags":["docs","markdown"],"date":"\/Date(1635724800000-0000)\/","url":"https://servicestack.net/posts/jekyll-to-vitepress","wordCount":2478,"lineCount":355}],"podcasts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://media.servicestack.com/podcasts/npx-get-dtos.mp3","wordCount":130,"lineCount":21},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://media.servicestack.com/podcasts/swift6-upgrade.mp3","wordCount":105,"lineCount":20},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://media.servicestack.com/podcasts/typed-openai-chat-ollama-apis.mp3","wordCount":127,"lineCount":20},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikey-credentials-auth.mp3","wordCount":123,"lineCount":21},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://media.servicestack.com/podcasts/kamal-deployments.mp3","wordCount":134,"lineCount":25},{"slug":"ai-server","draft":false,"title":"Introducing AI Server","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/ai-server.mp3","wordCount":123,"lineCount":27},{"slug":"v8-5-release","draft":false,"title":"ServiceStack v8.5 Release","summary":"The latest features in ServiceStack v8.5 covering release of AI Server and Kamal Deployments and more!","tags":["release","ai-server","jobs","api"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-5-release.mp3","wordCount":350,"lineCount":87},{"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 C# 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":163,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"C# Background Jobs","summary":"Taking a deep dive into C# 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":200,"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":226,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize C# 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":155,"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 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":172,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new C# 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":182,"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":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Talking about the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","tags":["template","kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://media.servicestack.com/podcasts/kotlin-compose-multiplatform.mp3","wordCount":179,"lineCount":44},{"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":164,"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":179,"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":238,"lineCount":54},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Universal Vite Press Plugin for Vite Vue & React Apps and its unique compatibility with .NET 8 Apps utilizing Markdig","tags":["template","docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/vite-press-plugin.mp3","wordCount":212,"lineCount":53},{"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":256,"lineCount":63}]} \ No newline at end of file +{"pages":[{"slug":"community-rules","draft":false,"title":"Community Rules","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/community-rules","wordCount":412,"lineCount":37},{"slug":"links","draft":false,"title":"Quick Shortcuts to ServiceStack Sites","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/links","wordCount":52,"lineCount":13},{"slug":"mail-preferences","draft":false,"title":"Manage your mail preferences","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/mail-preferences","wordCount":113,"lineCount":13},{"slug":"privacy","draft":false,"title":"Privacy Policy for ServiceStack, Inc","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/privacy","wordCount":1151,"lineCount":92},{"slug":"register","draft":false,"title":"License Registration","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/register","wordCount":327,"lineCount":76},{"slug":"signup-confirmed","draft":false,"title":"Welcome to ServiceStack Newsletter","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/signup-confirmed","wordCount":53,"lineCount":8},{"slug":"terms","draft":false,"title":"ServiceStack License Agreement","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/terms","wordCount":3036,"lineCount":136},{"slug":"creatorkit/about","draft":false,"title":"About","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/about","wordCount":597,"lineCount":100,"order":1},{"slug":"creatorkit/install","draft":false,"title":"Install","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/install","wordCount":1724,"lineCount":266,"order":2},{"slug":"creatorkit/customize","draft":false,"title":"Customize","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/customize","wordCount":430,"lineCount":136,"order":3},{"slug":"creatorkit/components","draft":false,"title":"Components","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/components","wordCount":855,"lineCount":195,"order":4},{"slug":"creatorkit/integrations","draft":false,"title":"Integrations","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/integrations","wordCount":107,"lineCount":29,"order":5},{"slug":"creatorkit/portal-overview","draft":false,"title":"Overview","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-overview","wordCount":163,"lineCount":40,"group":"Portal","order":6},{"slug":"creatorkit/portal-messages","draft":false,"title":"Messages","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-messages","wordCount":1047,"lineCount":250,"group":"Portal","order":7},{"slug":"creatorkit/portal-mailruns","draft":false,"title":"Mail Runs","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-mailruns","wordCount":1303,"lineCount":277,"group":"Portal","order":8},{"slug":"creatorkit/portal-posts","draft":false,"title":"Posts","tags":[],"date":"\/Date(1733828926364)\/","url":"https://servicestack.net/creatorkit/portal-posts","wordCount":180,"lineCount":28,"group":"Portal","order":9}],"whatsnew":[{"slug":"ai-server","draft":false,"title":"Introducing AI Server","image":"https://servicestack.net/img/posts/ai-server/ai-server-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We're excited to announce AI Server - an open-source, self-hosted Docker gateway for managing API access \nto various AI services. It offers centralized management of LLMs, Ollama endpoints, media APIs, Comfy UI\nand FFmpeg agents, distributing loads across multiple servers.\n\nIt's initial V1 release comes packed with features, including:\n\n - **Centralized Management**: Manage all your AI services from a single Admin UI\n - **Load Balancing**: Distribute loads across multiple servers\n - **Native Typed Integrations**: For 11 popular programming languages\n - **Synchronous, Queued, and Callback-based APIs**: For different use-cases\n - **Monitoring and Analytics**: Live monitoring, analytics and full history\n - **Protected Access**: With simple API keys","url":"https://servicestack.net/posts/ai-server","wordCount":111,"lineCount":19,"group":"v8.5","order":1},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates now using Kamal for deployments","image":"https://servicestack.net/img/posts/kamal-deployments/kamal-splash.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"We've updated the built-in GitHub Actions for all Identity Auth templates to use the [Kamal deployment](https://kamal-deploy.org/) tool\nfor customers considering their potential [cloud exit cost savings](https://world.hey.com/dhh/our-cloud-exit-savings-will-now-top-ten-million-over-five-years-c7d9b5bd)\nby exploring the shift in deployment strategy for self-hosting their .NET Docker Apps on their own servers or \nin-expensive cloud providers like [hetzner.com](https://www.hetzner.com) \n\nPreviously, a less streamlined process involving [SSH and Docker Compose](https://docs.servicestack.net/kamal-deploy) was used. \nNow, all Identity Auth templates utilize Kamal, a CLI tool simplifying deployments to any Linux server accessible via SSH.\nKamal automates tasks such as reverse proxy setup and TLS certificate management whilst providing useful \nlocal management tools via Kamal's commands.","url":"https://servicestack.net/posts/kamal-deployments","wordCount":125,"lineCount":16,"group":"v8.5","order":2},{"slug":"apikey-credentials-auth","draft":false,"title":"API Keys Credentials Provider for .NET 8 Microservices","image":"https://servicestack.net/img/posts/apikey-credentials-auth/ai-server-auth-apiexplorer.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"The usability of the **Simple Auth with API Keys** story has been significantly improved with the new \n`ApiKeyCredentialsProvider` which enables .NET Microservices to provide persistent UserSession-like \nbehavior using simple API Keys which can be configured together with `AuthSecretAuthProvider` and \n`ApiKeysFeature` to enable a Credentials Auth implementation users can use with their API Keys \nto restrict access to Authorized Users or Admin AuthSecret to protect Admin UIs and APIs.\n\n### Session Auth with API Keys\n\nBehind the scenes this creates a Server Auth Session but instead of maintaining an Authenticated \nUser Session it saves the API Key in the session then attaches the API Key to each request. \nThis makes it possible to make API Key validated requests with just a session cookie instead of \nrequiring resubmission of API Keys for each request.","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":143,"lineCount":18,"group":"v8.5","order":4},{"slug":"typed-openai-chat-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","image":"https://servicestack.net/img/posts/ai-server/ai-server-languages.png","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"AI Server's `OpenAiChatCompletion` API - is an OpenAI compatible Chat API with ChatGPT and\nother LLMs like Ollama, the benefit of which allows developers to use its Typed DTOs and ServiceStack\ngeneric Service Clients to call any Open AI Chat compatible API directly, in all of ServiceStack's\n11 supported popular programming languages.\n\nThis allows developers to easily integrate typed access to different LLMs into their applications.\nInstructions are provided for each language demonstrating how to install necessary packages, download DTOs,\nand send API requests.","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":95,"lineCount":15,"group":"v8.5","order":4},{"slug":"swift-6","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","image":"https://docs.servicestack.net/img/pages/servicestack-reference/swift-logo-banner.jpg","tags":[],"date":"\/Date(1732579200000-0000)\/","content":"All generic service client libraries have been upgraded to support multiple file uploads with API requests \nto take advantage of AI Server APIs that accept file uploads like Image to Image, Speech to Text or its \nFFmpeg Image and Video Transforms.\n\nServiceStack.Swift received the biggest upgrade, which was also rewritten to take advantage of Swift 6 features, \nincluding Swift promises which replaced the previous PromiseKit dependency - making it now dependency-free!","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":86,"lineCount":12,"group":"v8.5","order":5},{"slug":"background-jobs","draft":false,"title":"Execute Background Jobs and Recurring Tasks","image":"https://servicestack.net/img/posts/background-jobs/jobs-dashboard.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"**Background Jobs** is our effortless solution for managing background jobs and \nscheduled tasks in any .NET 8 App, implemented in true ServiceStack fashion where \nit seamlessly integrates into existing ServiceStack Apps with a built-in Management UI \nto provide real-time monitoring, inspection and management of background jobs.\n\nIt packs all useful features we wanted in its initial V1 release, including:\n\n- No infrastructure dependencies\n - Monthly archivable rolling Databases with full Job Execution History\n- Execute existing **APIs** or **Commands**\n- Schedule **Reoccurring Tasks**\n- Serially execute jobs with **named Workers**\n- Queue Jobs that **Depends On** successful completion of a parent Job\n- Execute **Callback** on successful execution of Job\n- Queue Jobs to **Run After** a specified Date\n- Execute Jobs within the context of an Authenticated User\n- **Auto Retry** and **Timeout** failed jobs on a default or per-job limit\n- Cancellable Jobs\n- Requeue Failed Jobs\n- Maintain Status, Logs and Progress of Executing Jobs\n- Execute transitive (i.e. non-durable) jobs","url":"https://docs.servicestack.net/background-jobs","wordCount":164,"lineCount":28,"group":"v8.4","order":1},{"slug":"sqlite-request-logger","draft":false,"title":"Capture Request Logs in Monthly Rolling SQLite DBs","image":"https://servicestack.net/img/posts/sqlite-request-logs/sqlite-request-logs.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"SQLite's low latency, high-performance and embeddable nature make it ideal for self-managing \nisolated appliance black-box functionality like Request Logging which offers up to \n[35% faster disk performance](https://www.sqlite.org/fasterthanfs.html) than standard file logging.\n\n### Rolling Monthly SQLite Databases\n\nSQLite is unique in its ability to create lightweight databases on-the-fly where Requests \nwill be persisted into isolated Monthly databases which can be easily archived \ninto managed file storage instead of a singular growing database.\n\nSQLite Request Logs also make it easier to generate monthly aggregate reports that provide \nkey insights into the usage of your App.\n\n#### AutoQuery Admin Logging UI\n\nAs SQLite Requests Logs also makes it efficiently possible to sort and filter through logs, \nthe Admin Logging UI has been upgraded to using a fully queryable AutoQueryGrid when using \n`SqliteRequestLogger`","url":"https://docs.servicestack.net/sqlite-request-logs","wordCount":146,"lineCount":24,"group":"v8.4","order":2},{"slug":"scalable-sqlite","draft":false,"title":"Safe, Scalable, High Performance SQLite Apps","image":"https://servicestack.net/img/posts/scalable-sqlite/pvq.webp","tags":[],"date":"\/Date(1726012800000-0000)\/","content":"Ever since adding support for Litestream in ServiceStack project's templates GitHub Action Deployments \nwe've been using SQLite as the backend for our latest new .NET Apps as it's the most cost-effective \noption that frees us from needing to use cloud managed databases and by extension expensive major cloud \nproviders instead of the better value commodity cloud providers.\n\nSQLite is a highly-performant DB that can handle a large number of concurrent read operations and\n35% faster filesystem performance for write operations with next to no latency that's often \nfaster than other RDBMS's courtesy of its proximity to the running application which gives it\nunique advantages over traditional client/server RDBMS's where it's not susceptible to the \n[N+1 Queries problem](https://www.sqlite.org/np1queryprob.html) and is also able to execute your\ncustom C# Logic inside SQL Queries using [Application SQL Functions](https://www.sqlite.org/appfunc.html).\n\nWith [litestream.io](https://litestream.io) taking care of real-time replication to managed storage\nwe just need to workaround SQLite's single concurrent writer to unlock the value, performance and \nunique features of SQLite in our Apps which we cover in this release with integrated support for\nDatabase Locks and Sync Commands.","url":"https://docs.servicestack.net/ormlite/scalable-sqlite","wordCount":200,"lineCount":22,"group":"v8.4","order":3},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","image":"https://servicestack.net/img/whatsnew/v8.3/bg-security.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"API Keys are a simple and effective way to authorize access to your APIs, which are typically used for machine-to-machine\ncommunication, where a client application needs to access an API without user intervention.\nAPI Keys are often used to control access to specific resources or features in your API, providing a simple way\nto manage access control.\n\n### Redesigning API Keys\n\nBuilding on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs.\n\nGiven the primary use-case for API Keys is for machine-to-machine communication where the client isn't a User,\nnor do they want systems using their API Keys to have access to their User Account, we've changed\nhow API Keys work in .NET 8.","url":"https://docs.servicestack.net/auth/apikeys","wordCount":150,"lineCount":20,"group":"v8.3","order":1},{"slug":"commands","draft":false,"title":"Use Commands to build robust and observable systems","image":"https://servicestack.net/img/whatsnew/v8.3/commands.png","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"How code-bases are structured is largely a matter of developer preference, however we believe we've also been able to \nadd value in this area with the new appealing managed Commands Feature.\n\n### When to restructure\n\nTimes when you may want to consider moving logic out of your Service include:\n\n- **Code Reuse**: Make it easier to reuse your Service logic in other Services\n- **Complexity**: Break down complex logic into smaller more manageable pieces\n- **Testability**: Make it easier to test your Logic in isolation\n- **Observability**: Make it easier to log and monitor\n- **Robustness**: Make it easier to handle, retry and recover from errors\n- **Flexibility**: Make it easier to run in parallel or in a different managed thread\n\nWe'll look at how the new **Commands Feature** can help in these areas.","url":"https://docs.servicestack.net/commands","wordCount":141,"lineCount":21,"group":"v8.3","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story for .NET 8 Microservices","image":"https://img.youtube.com/vi/0ceU91ZBhTQ/maxresdefault.jpg","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"With ServiceStack now [fully integrated](/auth/identity-auth) with ASP.NET Identity Auth,\nour latest .NET 8 [Tailwind Templates](/start) offer a full-featured Auth Configuration complete with User Registration,\nLogin, Password Recovery, Two Factory Auth, and more.\n\nWhilst great for Web Applications that need it, it neglects the class of Apps which don't need User Auth and\nthe additional complexity it brings inc. Identity and Password Management, EF Migrations, Token Expirations, OAuth Integrations, etc.\n\nFor these stand-alone Apps, Microservices and Docker Appliances that would still like to restrict Access to their APIs\nbut don't need the complexity of ASP .NET Core's Authentication machinery, a simpler Auth Story would be preferred.\n\nWith the introduction of API Keys in this release we're able to provide a simpler Auth Story for .NET 8 Microservices\nthat's easy for **Admin** Users to manage and control which trusted clients and B2B Integrations can access their functionality.","url":"https://docs.servicestack.net/auth/admin-apikeys","wordCount":159,"lineCount":19,"group":"v8.3","order":3},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","image":"https://servicestack.net/img/posts/rhel9-cryptography/bg-redhat.webp","tags":[],"date":"\/Date(1718582400000-0000)\/","content":"A consequence of RedHat Enterprise Linux 9's hardened\n[system-wide cryptographic policies](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening)\nis that it's incompatible with ServiceStack's current licensing which uses RSA encryption and SHA1 hashing algorithm\nto validate license keys.\n\nUnfortunately this makes it no longer possible to use License Keys to run unrestricted ServiceStack Apps on default\ninstalls of RHEL 9 or any of its variants.\n\n### Generate License Key for RHEL 9+\n\nStarting from **ServiceStack v8.3+** Customers can regenerate a new License Key with a stronger **SHA512** Hash Algorithm\nthat's compatible with RHEL 9's default hardened cryptography policy by visiting:\n\n:::{.text-2xl .text-indigo-600}\nhttps://account.servicestack.net/regenerate-license\n:::","url":"https://docs.servicestack.net/rhel9-cryptography","wordCount":110,"lineCount":23,"group":"v8.3","order":4},{"slug":"vue-spa","draft":false,"title":"Enhanced ASP .NET Core SPA Templates","image":"https://servicestack.net/img/whatsnew/v8.2/spa-logos.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"With ServiceStack now fully integrated with .NET 8, our focus has shifted from providing platform-agnostic solutions \nthat supports all ServiceStack's .NET Framework and .NET hosts to building on the new capabilities of .NET 8 by \nenhancing ASP .NET Core's built-in features and templates with ServiceStack's high-productivity features.\n\n### New Vue SPA Template\n\nThe latest Vue SPA template is a good example of this, building on and enhancing the built-in ASP.NET Core Vue SPA \ntemplate with many high-productivity features:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Highly Productive Vue Component Library\n- Effortless CRUD and Admin UIs with AutoQueryGrid","url":"https://docs.servicestack.net/releases/v8_02","wordCount":125,"lineCount":21,"group":"v8.2","order":1},{"slug":"react-spa","draft":false,"title":"New ASP.NET Core React SPA Template","image":"https://servicestack.net/img/whatsnew/v8.2/react-spa.png","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The ASP.NET Core Vite React SPA Template has also been upgraded and enhanced with many high-productivity features including:\n\n- ASP.NET Core Identity Auth Integration\n- End-to-end Typed TypeScript APIs\n- Beautiful Tailwind CSS with Dark Mode\n- Universal Vite Press Plugin Markdown features\n- Integration with shadcn/ui Tailwind React components\n- Native MDX Markdown integration\n- React Router and conventional file system based routing\n- Tailwind Validation bound Input Form Components","url":"https://docs.servicestack.net/releases/v8_02#asp.net-core-react-spa-template","wordCount":80,"lineCount":16,"group":"v8.2","order":2},{"slug":"compose-multiplatform","draft":false,"title":"New Kotlin Compose Multiplaform Template","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The last few years of neglect of Xamarin has removed itself from consideration as a viable development option for \ncreating native Mobile and Desktop Apps.\n\nFortunately JetBrains has stepped in to fill the void with its Compose Multiplatform UI Framework offering \na modern declarative alternative reactive for creating native Mobile, Desktop & Web Apps that can also leverage\nKotlin ServiceStack Reference for its end-to-end typed APIs.\n\nWe'll look at the latest Compose Multiplatform [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/) \nand use it to build a cross-platform Desktop App integrated with a .NET API backend which can both be developed from \nthe same JetBrains Fleet IDE.","url":"https://docs.servicestack.net/releases/v8_02#compose-multiplatform-ios-android-apps","wordCount":115,"lineCount":16,"group":"v8.2","order":3},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=1000","tags":[],"date":"\/Date(1709510400000-0000)\/","content":"The Vite Press Plugin is an alternative to VitePress for adding Markdown features to existing Vite Vue or React projects. \nIt's a non-intrusive plugin for Vue and React Vite apps that want to add markdown powered content features without needing \nto adopt an opinionated framework for their entire App.\n\n### Universal Markdown Features\n\nA goal for vite-press-plugin is to implement a suite of universal markdown-powered features that can be reused across Vue, \nReact and .NET Razor and Blazor projects, allowing you to incorporate same set of markdown feature folders to power \nmarkdown content features across a range of websites built with different technologies.\n\n### Vite Apps with vite-press-plugin\n\nThe vite-press-plugin currently powers the markdown features in the static Vite Vue and React templates which are ideal \nfor creating static websites, blogs, documentation and marketing websites that can be hosted FREE on GitHub Pages CDN","url":"https://docs.servicestack.net/releases/v8_02#vite-press-plugin","wordCount":153,"lineCount":21,"group":"v8.2","order":4},{"slug":"endpoint-routing","draft":false,"title":"Full Integration with ASP.NET Core 8","image":"https://servicestack.net/img/whatsnew/v8.1/aspnet-8.webp","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"We're happy to announce the latest ServiceStack v8.1 release supports deep integration with ASP.NET Core's \nstandardized features for execution of its APIs.\n\nThis reduces friction for integrating ServiceStack into existing .NET 8 Apps, encourages greater knowledge and reuse and \nsimplifies .NET development as developers have fewer concepts to learn and technology implementations \nto configure and maintain that are now applied across their entire .NET App.\n\nBetter yet, this is enabled by default in all of ServiceStack's new \n[Identity Auth .NET 8 templates](https://servicestack.net/start) which now embraces all these standard \nASP.NET Core features:\n\n- [ASP.NET Core Identity Auth](https://docs.servicestack.net/auth/identity-auth)\n- [ASP.NET Core IOC](https://docs.servicestack.net/releases/v8_01#asp.net-core-ioc)\n- [Endpoint Routing](https://docs.servicestack.net/releases/v8_01#endpoint-routing)\n- [System.Text.Json APIs](https://docs.servicestack.net/releases/v8_01#system.text.json)\n- [Open API v3 and Swagger UI](https://docs.servicestack.net/releases/v8_01#openapi-v3)\n- [JWT Identity Auth](https://docs.servicestack.net/releases/v8_01#jwt-identity-auth)","url":"https://docs.servicestack.net/releases/v8_01","wordCount":161,"lineCount":23,"group":"v8.1","order":1},{"slug":"system-json-apis","draft":false,"title":"System.Text.Json APIs","image":"https://servicestack.net/img/whatsnew/v8.1/system-text-json.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"ServiceStack Endpoint Routing APIs now utilize **System.Text.Json** - the default high-performance async \nJSON serializer used in .NET Apps for serializing its JSON APIs.\n\n### Enhanced System.Text.Json\n\nServiceStack uses a custom `JsonSerializerOptions` to improve compatibility with existing ServiceStack DTOs and \nServiceStack's rich ecosystem of generic \n[Add ServiceStack Reference Service Clients](https://docs.servicestack.net/add-servicestack-reference), which is configured to:\n\n- Uses `CamelCaseNamingPolicy` for property names\n- Supports Case Insensitive Properties\n- Not serialize `null` properties\n- Serializes `TimeSpan` and `TimeOnly` Data Types with XML Schema Time format\n- Supports `[DataContract]` annotations\n- Supports Custom Enum Serialization","url":"https://docs.servicestack.net/releases/v8_01#system.text.json","wordCount":107,"lineCount":21,"group":"v8.1","order":2},{"slug":"openapi-v3","draft":false,"title":"Swashbuckle OpenAPI v3 and Swagger UI","image":"https://servicestack.net/img/whatsnew/v8.1/openapiv3-logo.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"Utilizing the same **ASP.NET Core Endpoints** that the rest of the ASP.NET Core App uses enables your ServiceStack APIs \nto integrate with your wider ASP.NET Core application, opening up more opportunities for reuse of your ServiceStack APIs.\n\nThis opens up the ability to use common third party tooling like the popular `Swashbuckle` package used to to\nenable OpenAPI v3 specification generation of ASP .NET Core APIs which now includes ServiceStack APIs, \ndisplayed along-side Minimal and Web APIs. \n\nWe've created the **ServiceStack.AspNetCore.OpenApi** package to make this integration as easy as possible, which \nincorporates additional information from your ServiceStack APIs into Swagger metadata.","url":"https://docs.servicestack.net/releases/v8_01#openapi-v3","wordCount":118,"lineCount":15,"group":"v8.1","order":3},{"slug":"identity-auth-admin-users-ui","draft":false,"title":"Identity Auth Admin Users UI","image":"https://servicestack.net/img/whatsnew/v8.1/admin-ui-users-edit-custom.png","tags":[],"date":"\/Date(1707177600000-0000)\/","content":"The new Identity Auth Admin UI is an example of value-added features that can benefit all .NET Core App, that \nenables a built-in Admin UI that's only accessible to **Admin** Users for managing Identity Auth\nusers at `/admin-ui/users`.\n\nIt's a highly customizable UI feature that includes standard features to lockout users, change user passwords and manage their roles\nas well as being flexible enough to support Custom `ApplicationUser` Identity Models including:\n\n - Custom Search Results\n - Custom Search Behavior\n - Custom Sort Order\n - Custom Editable Fields\n - Custom User Creation and Validation\n - Admin User Events to run custom logic","url":"https://docs.servicestack.net/releases/v8_01#asp.net-core-identity-auth-admin-ui","wordCount":112,"lineCount":19,"group":"v8.1","order":4},{"slug":"net8","draft":false,"title":"Enhanced for .NET 8","image":"https://servicestack.net/img/whatsnew/v8.0/net8.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"We're excited to welcome the next major release of ServiceStack v8, designed to take advantage of many advancements\nfor in .NET's latest long-term release: **.NET 8**\n\n#### All NuGet Packages include net8.0 builds\n\nAll of ServiceStack's active NuGet packages now include `.net8.0` target framework builds along with their\ndependencies on Microsoft's packages upgraded to use the latest `8.0.0` that were released with .NET 8.\n\n#### All .NET Project Templates upgraded to .NET 8\n\nAll Project Templates have been upgraded to use **ServiceStack v8** and **.NET 8**, inc. built-in CI/CD GitHub Actions \nupgraded to use [secure rootless Linux Docker containers](https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/)\nbuilt into .NET 8 which allow you to effortlessly deploy your containerized .NET 8 Apps with Docker and\nGitHub Registry via SSH to any Linux Server.","url":"https://docs.servicestack.net/releases/v8_00","wordCount":141,"lineCount":21,"group":"v8.0","order":1},{"slug":"blazor-templates","draft":false,"title":"New .NET 8 Blazor Tailwind Templates","image":"https://servicestack.net/img/whatsnew/v8.0/blazor-templates.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"ServiceStack's new [Blazor](/posts/net8-blazor-template) project template takes advantage of .NET 8 Blazor's new features\nthat redefines modern Web Development in C# which sees our new templates adopting Blazor's\nfamiliar **ASP.NET Core Identity** and **Entity Framework** for its authentication, utilizes the modern\n[Tailwind CSS](https://tailwindcss.com) framework for beautiful responsive design and adopts .NET's best-practice\n[Docker Containerization](https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container) support for its built-in\n[GitHub Action Deployments](https://blazor.web-templates.io/deploy) - enabling a simple ready-made CI solution for deployment to any\nLinux Host via SSH and Docker compose.\n\n#### New Blazor Vue Template\n\nThe new [Blazor Vue](/posts/net8-best-blazor) template is ideal for building fast, SEO-friendly 100% statically rendered \nBlazor Web Apps where all its dynamic functionally uses Vue.js to progressively enhance its static rendered content - \neliminating Blazor's limitations of using static rendering to implement an entire App.","url":"https://docs.servicestack.net/releases/v8_00#new.net-8-blazor-template","wordCount":149,"lineCount":19,"group":"v8.0","order":2},{"slug":"identity-auth-templates","draft":false,"title":"ASP.NET Core Identity Auth & Entity Framework","image":"https://servicestack.net/img/whatsnew/v8.0/blazor-identityauth-qrcode.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"A significant change we've added to our new .NET 8 Project Templates is the adoption of the same ASP.NET Core \nIdentity Authentication that's configured in Microsoft's default Projects templates.\n\nASP.NET Core Identity Auth now used in new Integrated Auth projects Going forward all new ServiceStack .NET Project Templates \nwill adopt ASP.NET Identity Auth, which closely follows the same approach as the Microsoft Project Template it integrates \nServiceStack with, e.g. the new .NET 8 Blazor and Blazor Vue project templates adopts the exact same Auth configuration \nas Microsoft's default Blazor Project Template configured with Individual Identity Auth, likewise with the Bootstrap \nand Tailwind styled MVC and Razor Pages templates.\n\n#### ASP.NET Core Identity Auth Migration Guide\n\nMigrating from ServiceStack Auth to Identity Auth should be relatively straight-forward as ServiceStack uses a compatible \nIdentity v2 password hashing format, which should let you migrate your users to Identity Auth without them noticing.\n\nTo help with any migrations we've published an [Identity Auth Migration Guide](https://docs.servicestack.net/auth/migrate-to-identity-auth) \nwe've used to convert existing ServiceStack Auth Apps to use Identity Auth.","url":"https://docs.servicestack.net/releases/v8_00#asp.net-core-identity-auth-in.net-8-templates","wordCount":197,"lineCount":22,"group":"v8.0","order":3},{"slug":"php","draft":false,"title":"PHP Add ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v8.0/php.webp","tags":[],"date":"\/Date(1700438400000-0000)\/","content":"We're happy to announce the **11th** [Add ServiceStack Reference](https://docs.servicestack.net/add-servicestack-reference) \nlanguage to enjoy end-to-end typed support for calling .NET APIs - [PHP](https://www.php.net)!\n\n**PHP** is one of the worlds most popular programming languages thanks to its ease of use, \nflexibility and fast development experience which sees it excels as a popular language for web development and for development \nof popular CMS products like WordPress, Drupal and Joomla.\n\n### First class development experience\n\nTo maximize the experience for calling ServiceStack APIs within these environments ServiceStack now supports PHP as a\n1st class Add ServiceStack Reference supported language which gives PHP developers an end-to-end typed API for consuming\nServiceStack APIs, complete with IDE integration in [PhpStorm](https://www.jetbrains.com/phpstorm/) as well as\n[built-in support in x dotnet tool](/dotnet-tool#addupdate-servicestack-references)\nto generate Typed and annotated PHP DTOs for a remote ServiceStack instance from a single command-line.","url":"https://docs.servicestack.net/php-add-servicestack-reference","wordCount":156,"lineCount":21,"group":"v8.0","order":4},{"slug":"servicestack-ai","draft":false,"title":"ServiceStack.AI","image":"https://servicestack.net/img/whatsnew/v6.11/servicestack-ai.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"ServiceStack.AI covers a Free suite implementation-agnostic abstractions for different AI and GPT Providers to enable \nAI features in .NET Apps under the new **ServiceStack.AI** namespace in the dep-free `ServiceStack.Interfaces` package.\n\nThe implementations for these abstractions are maintained across NuGet packages in accordance with their dependencies:\n\n- `ServiceStack.Aws` - AI & GPT Providers for Amazon Web Services\n- `ServiceStack.Azure` - AI & GPT Providers for Microsoft Azure\n- `ServiceStack.GoogleCloud` - AI & GPT Providers for Google Cloud\n- `ServiceStack.AI` - AI & GPT Providers for OpenAI APIs and local Whisper and Node TypeChat installs\n\nThese abstractions and implementations enable .NET projects to add AI-powered natural language features whilst \ndecoupling their Speech-to-text and ChatGPT requirements from any single implementation where they're easily substituted","url":"https://docs.servicestack.net/releases/v6_11","wordCount":132,"lineCount":18,"group":"v6.11","order":1},{"slug":"typechat-examples","draft":false,"title":"TypeChat Examples","image":"https://servicestack.net/img/whatsnew/v6.11/typechat-examples.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"The TypeScript team have sought a simple approach to enable AI-powered features that instead of relying on engineering \nsophisticated prompts to instead use TypeScript type's system to define the machine readable model LLMs should return \nand then if necessary to use TypeScript compiler's Schema validation errors to enable auto correcting prompts to \nguide ChatGPT into returning valid responses that our App's can understand.\n\nTo show the versatility of this approach we've implemented the [All TypeChat Examples in .NET](https://typechat.netcore.io/) \nwhich in addition to supporting **5 different Speech-to-text** providers also supports utilizing a pure .NET approach \nof generating TypeChat's prompt in C# and using Semantic Kernel to connect with your preferred Chat GPT \nprovider or utilizing node's TypeChat library to interface with ChatGPT where it benefits from \nTypeScript schema validation and auto-retry of invalid responses with auto correcting prompts.","url":"https://docs.servicestack.net/releases/v6_11#all-typechat-examples","wordCount":150,"lineCount":17,"group":"v6.11","order":2},{"slug":"servicestack-googlecloud","draft":false,"title":"ServiceStack.GoogleCloud","image":"https://servicestack.net/img/whatsnew/v6.11/servicestack-googlecloud.png","tags":[],"date":"\/Date(1696291200000-0000)\/","content":"The new `ServiceStack.GoogleCloud` package contains functionality for integrating with Google's Cloud Platform,\nincluding `GoogleCloudVirtualFiles` [Virtual Files](https://docs.servicestack.net/virtual-file-system) Provider\nenabling usage of Google Cloud's managed Storage that's easily substitutable with other VFS providers from\nAWS S3, Azure Blob storage, Cloudflare R2 or local File System. \n\nThe `GoogleCloudSpeechToText` provider implements ServiceStack.AI's Speech-to-Text abstraction for providing\ntranscription services using Google Cloud's [Speech-to-Text v2 API](https://cloud.google.com/speech-to-text/v2/docs)","url":"https://docs.servicestack.net/releases/v6_11#google-cloud-solution","wordCount":73,"lineCount":13,"group":"v6.11","order":3},{"slug":"razor-press","draft":false,"title":"Introducing Razor Press","image":"https://servicestack.net/img/whatsnew/v6.10/razor-press.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"Razor Press is a **Razor Pages** and **Markdown** powered alternative to Ruby's Jekyll & Vue's VitePress that's ideal for\ngenerating fast, static content-centric & documentation websites. Inspired by [VitePress](https://vitepress.dev),\nit's designed to effortlessly create documentation around content written in Markdown, rendered using C# Razor Pages\nthat's beautifully styled with [tailwindcss](https://tailwindcss.com) and [@tailwindcss/typography](https://tailwindcss.com/docs/typography-plugin).\n\nThe resulting statically generated HTML pages can be easily deployed anywhere, where it can be hosted by any HTTP Server or CDN.\nBy default it includes GitHub Actions to deploy it your GitHub Repo's **gh-pages** branch where it's hosted for FREE\non [GitHub Pages](https://pages.github.com) CDN which can be easily configured to use your\n[Custom Domain](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site).","url":"https://docs.servicestack.net/releases/v6_10","wordCount":127,"lineCount":16,"group":"v6.10","order":1},{"slug":"new-in-razor-ssg","draft":false,"title":"New in Razor SSG","image":"https://servicestack.net/img/whatsnew/v6.10/twitter-cards.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"The Razor SSG template continues to see improvements for creating richer static websites and Blogs: \n\n - RSS Feed for Blog Posts\n - New Razor Press Markdown Containers\n - Support for Markdown Includes\n - Meta Headers support for Twitter cards and Improved SEO\n - Blog Posts can include rich Vue Components\n - Light and Dark Mode Query Params\n - Threads and Mastodon Links for Blog Authors","url":"https://docs.servicestack.net/releases/v6_10#new-in-razor-ssg","wordCount":77,"lineCount":16,"group":"v6.10","order":2},{"slug":"rdbms-bulk-inserts","draft":false,"title":"RDBMS Bulk Inserts","image":"https://servicestack.net/img/whatsnew/v6.10/bulk-inserts.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"The latest release of OrmLite includes Bulk Inserts implementations for each supported RDBMS to support the most \nefficient ways for inserting large amounts of data, which is encapsulated behind OrmLite's new BulkInsert API\nwhich are up to **138x times faster** than traditional single INSERT statements.\n\nIn addition to an optimal default Bulk Insert implementation, it can also be configured to execute batched \nSQL Insert statements with configurable batch sizes which enjoys broad support across all RDBMS's.","url":"https://docs.servicestack.net/releases/v6_10#rdbms-bulk-inserts","wordCount":85,"lineCount":12,"group":"v6.10","order":3},{"slug":"jsonl-data-format","draft":false,"title":"JSON Lines Data Format","image":"https://servicestack.net/img/whatsnew/v6.10/jsonl.png","tags":[],"date":"\/Date(1690761600000-0000)\/","content":"JSON Lines is an efficient JSON data format parseable by streaming parsers and text processing tools like Unix \nshell pipelines, whose streamable properties is making it a popular data format for maintaining large datasets \nlike the large AI datasets maintained on [huggingface.co](https://huggingface.co) that's now accessible on \n[Auto HTML API pages](https://docs.servicestack.net/auto-html-api).\n\nThe JSON Lines data format behaves the same way as the CSV format where it will automatically serialize the \nfirst IEnumerable property, including for all AutoQuery APIs which now benefit from a streamable JSON data format.","url":"https://docs.servicestack.net/releases/v6_10#json-lines-data-format","wordCount":104,"lineCount":13,"group":"v6.10","order":4},{"slug":"creator-kit","draft":false,"title":"Introducing CreatorKit","image":"https://servicestack.net/img/whatsnew/v6.9/creatorkit-splash.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"CreatorKit is a simple, customizable, self-hostable alternative solution to using Mailchimp for managing an organization's \nmailing lists, accepting newsletter subscriptions, defining customizable email layouts and templates and sending \nrich HTML emails to your Customers and subscribers using your preferred SMTP provider.\n\nIt also provides a private alternative to using Disqus to enhance websites with a threading and commenting system \non your preferred blog posts and website pages that you want to be able to connect with your community on.","url":"https://docs.servicestack.net/releases/v6_09","wordCount":88,"lineCount":12,"group":"v6.9","order":1},{"slug":"build-admin-uis-fast","draft":false,"title":"Build Admin UIs, Fast","image":"https://servicestack.net/img/whatsnew/v6.9/admin-ui.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"The new `` is a high-productivity Vue Component that combined with the `` content\ncan save an invaluable amount of time in being able to rapidly create custom Admin UIs.\n\nThe [blazor-vue](https://blazor-vue.web-templates.io) now includes a [Client Admin UI](https://blazor-vue.web-templates.io/admin/)\nshowing how we can replicate most of Locode's Auto UI in a customizable Vue App from a single\n[index.html](https://github.com/NetCoreTemplates/blazor-vue/blob/main/MyApp/wwwroot/admin/index.html) page. It also includes\nan example of a [Server Rendered Admin UI](https://blazor.web-templates.io/admin/) for those that prefer to develop\nMulti Page Apps with Razor Pages.","url":"https://docs.servicestack.net/releases/v6_09#build-admin-uis-fast","wordCount":102,"lineCount":14,"group":"v6.9","order":2},{"slug":"creating-gpt-agents","draft":false,"title":"Creating ChatGPT Agents to call System APIs","image":"https://servicestack.net/img/whatsnew/v6.9/gptmeetings.jpg","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"We've been working on different patterns of development to enable ChatGPT to leverage an App's ServiceStack APIs \nto solve given tasks. This is done through various prompting techniques which allows the Agent to reason about the \ncontext of the conversation and make decisions to reach for different 'tools' (your APIs) when trying to achieve \na specific goal.\n\nFor anyone wishing to incorporate AI into their systems we've created a introductory video into the techniques \nof how to leverage Large Language Models (LLMs) like GPT so they can make informed decisions on which of your \ninternal APIs they should call to accomplish a given task described in natural language.","url":"https://docs.servicestack.net/releases/v6_09#creating-chatgpt-agents-to-call-system-apis","wordCount":122,"lineCount":14,"group":"v6.9","order":3},{"slug":"vue-stable-diffusion","draft":false,"title":"Vue Stable Diffusion","image":"https://servicestack.net/img/whatsnew/v6.9/vuediffusion.png","tags":[],"date":"\/Date(1686009600000-0000)\/","content":"Following [blazordiffusion.com](https://blazordiffusion.com) which was created to showcase ServiceStack's\nBlazor Server and Blazor WASM [project templates and components](https://servicestack.net/blazor), \nwe've rewritten a new Stable Diffusion App in Vue adopting a\n[Simple Modern JavaScript](https://razor-ssg.web-templates.io/posts/javascript) approach to showcase the **Razor SSG**\nProject Template and Tailwind [Vue Component Library](https://docs.servicestack.net/vue/) available at:\n\n

\n https://diffusion.works\n

\n\nVue Diffusion is built differently from other Razor SSG Apps as instead of being pre-rendered from static content \nlike Markdown documents, it's prerendered from https://blazordiffusion.com APIs to render its dynamic \n[Albums](https://diffusion.works/albums/), \n[Top](https://diffusion.works/top) and [Latest](https://diffusion.works/latest) pages at deployment which it does by \nconfiguring the App's Service Gateway to reference external Blazor Diffusion APIs.","url":"https://docs.servicestack.net/releases/v6_09#vue-stable-diffusion","wordCount":137,"lineCount":21,"group":"v6.9","order":4},{"slug":"feature1","draft":false,"title":"New statically generated Razor Pages & Vue website","image":"https://servicestack.net/img/whatsnew/v6.8/servicestack.net-home-1440.png","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We're celebrating reaching **150M Total Downloads** with a brand new website, rewritten from Ruby's Jekyll and jQuery with an exciting \nnew Razor SSG project template enhanced with Vue 3 components for client interactivity features.\n\nThe new Razor Pages & Markdown powered template takes advantage of the advances made in the last few releases with our npm \ndependency-free approach to [Simple, Modern JavaScript](/posts/javascript), the built-in support for \n[Prerendering Razor Pages](/posts/prerendering) and the rich Tailwind \n[Vue Component Library](https://docs.servicestack.net/vue/) to create an enjoyable experience for creating Fast, FREE, \nbeautiful, CDN-hostable static generated websites & blogs.","url":"https://docs.servicestack.net/releases/v6_08","wordCount":115,"lineCount":13,"group":"v6.8"},{"slug":"feature2","draft":false,"title":"New Razor Pages & Markdown powered static website","image":"https://servicestack.net/img/whatsnew/v6.8/razor-ssg.png","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We're excited to announce our new [razor-ssg](https://razor-ssg.web-templates.io) project template - a Razor Pages powered Markdown \nalternative to Ruby's Jekyll & Next.js that's ideal for generating static websites & blogs using C#, Razor Pages & Markdown.\n\nIt's now available FREE to all .NET Developers wanting to creating Fast, Beautiful Static Websites & Blogs with Razor Pages. \nIt's FREE to create, FREE to host on GitHub Pages CDN and also designed to support running FREE from any local .NET Installs \nor IDEs where it can be maintained in [GitHub Codespaces](https://github.com/features/codespaces) that you can do entirely from an iPad.","url":"https://docs.servicestack.net/releases/v6_08#razor-ssg","wordCount":117,"lineCount":12,"group":"v6.8"},{"slug":"feature3","draft":false,"title":"Streamlined Development for creating Flutter Apps","image":"https://servicestack.net/img/whatsnew/v6.8/flutter-todos.jpg","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We've greatly improved the end-to-end development experience of creating Flutter Mobile Apps that integrate with your ServiceStack APIs. \nTo demonstrate the seamless development experience, we've created a [video walk through](https://www.youtube.com/watch?v=t4WcXo4Vnio) \ncreating a new Blazor Server project that we use **mix flutter** to create a new Flutter App that we can use to quickly build \na Mobile App to call its existing Todo .NET APIs using the built-in [Typed Dart DTOs](https://docs.servicestack.net/dart-add-servicestack-reference) integration.\n\nThis release also includes improvements to generated Dart DTOs and servicestack Dart client library with new simplified APIs\nthat greatly improves usage in Reactive UIs by encapsulates Successful and Failed API Responses in a single `ApiResult` \nvalue which can be passed down and bound to reactive components without any inhibitive `try/catch` statements.","url":"https://docs.servicestack.net/releases/v6_08#flutter","wordCount":141,"lineCount":13,"group":"v6.8"},{"slug":"feature4","draft":false,"title":"Improved workflow for creating Flutter gRPC Apps","image":"https://servicestack.net/img/whatsnew/v6.8/flutter-grpc.jpg","tags":[],"date":"\/Date(1680048000000-0000)\/","content":"We've also improved the development experience for developers who prefer or have existing investments in gRPC will be able to \nbenefit from the improved development experience with **mix flutter-grpc** which works like **mix flutter** but instead \nadds a new Flutter gRPC App to an existing ServiceStack grpc project, with pre-configured gRPC integrations. \n\nTo demonstrate this productive workflow we've [created a new video](https://www.youtube.com/watch?v=fgts6sQ2Ags) which walks \nthrough the process of creating a new Flutter App from scratch, adding a Flutter gRPC App to an existing grpc .NET project, \nand using **mix flutter-grpc** to configure the Flutter App to work with ServiceStack's gRPC Services.","url":"https://docs.servicestack.net/releases/v6_08#flutter-grpc","wordCount":118,"lineCount":12,"group":"v6.8"},{"slug":"feature1","draft":false,"title":"New Auto API HTML Page for all APIs!","image":"https://servicestack.net/img/whatsnew/v6.7/autohtml-preview.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The new Auto HTML Page is the best way to visualize, inspect and integrate with your APIs which provides instant utility for API consumers in consuming your APIs with a built-in API Response Visualizer, JSON syntax highlighting, integrated Postman-like UI and API SDK integration all-in-one.\n\nA nice benefit of ServiceStack's API Design is that consuming APIs are fundamentally all done the same way in all languages, which just requires adding a dependency containing a generic ServiceClient which can be used to call any ServiceStack API using the typed DTOs copied directly from the API docs page to enable an end-to-end typed API without any external tooling or build steps.","url":"https://docs.servicestack.net/releases/v6_07","wordCount":125,"lineCount":9,"group":"v6.7"},{"slug":"feature2","draft":false,"title":"Vue AutoQueryGrid Component for Auto CRUD UIs","image":"https://servicestack.net/img/whatsnew/v6.7/gallery-contacts.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The new AutoQueryGrid component is the last high-productivity component missing from the Vue Tailwind Component Library to reach feature parity with Blazor Tailwind Component Library.\n\nIt enables an Effortless CRUD UI without any external dependencies, tooling or build steps, generating a capability-based UI for the currently authenticated user, enabling full CRUD functionality through the App's auth-protected AutoQuery APIs, validated by the APIs Declarative Validation Rules utilizing optimal Form Inputs for each C# property type with contextual validation binding, that displays its results in a rich formatted data grid customized with APIs Declarative UI Attributes.","url":"https://docs.servicestack.net/releases/v6_07#autoquerygrid","wordCount":108,"lineCount":10,"group":"v6.7"},{"slug":"feature3","draft":false,"title":"New Vue 3 Locode, API Explorer & Admin UIs","image":"https://servicestack.net/img/whatsnew/v6.7/new-vue3-uis.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"With access to all components needed, we've taken this opportunity to modernize all of ServiceStack's built-in UI's that were previously written with petite-vue and have rewritten them with Vue 3 and the Vue Components Library, which has become our preferred UI technology stack for all of ServiceStack's built-in UIs.\n\nUltimately the new Vue 3 UIs should appeal to a lot more use-cases with better reuse and customizability using the full Vue 3 framework and 3rd Party ecosystem for creating more compelling and interactive UIs.","url":"https://docs.servicestack.net/releases/v6_07#new-locode-api-explorer-admin-uis-now-in-vue-3","wordCount":100,"lineCount":9,"group":"v6.7"},{"slug":"feature4","draft":false,"title":"New API Index Page","image":"https://servicestack.net/img/whatsnew/v6.7/api-gallery.png","tags":[],"date":"\/Date(1678752000000-0000)\/","content":"The `/api` route is now being used as an opportunity to improve API Discovery by returning an App's public APIs grouped by user-defined tags with direct links to the API endpoint, viewing it in API Explorer and in Locode for AutoQuery APIs.","url":"https://docs.servicestack.net/releases/v6_07#api-index","wordCount":53,"lineCount":7,"group":"v6.7"},{"slug":"feature1","draft":false,"title":"New Tailwind Razor Pages & MVC Templates","image":"https://servicestack.net/img/whatsnew/v6.6/vue-mjs.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"The new Tailwind Razor Pages & MVC Templates enable rapid development of Modern Tailwind Apps without the pitfalls plaguing SPA development:\n\n- **[vue-mjs](https://vue-mjs.web-templates.io)** - Flagship Vue.mjs template with OrmLite, AutoQuery, boosted htmx links & static pre-rendered blogs\n- **[razor](https://razor.web-templates.io)** - Simple Razor Pages Template without DB or pre-rendering\n- **[mvc](https://mvc.web-templates.io)** - Want to use MVC Identity Auth and Entity Framework\n- **[web-tailwind](https://web-tailwind.web-templates.io)** - Empty tailwind template with no web framework configured\n- **[vue-vite](https://vue-vite.jamstacks.net)** - Vite + TypeScript in a simpler JAMStack Vite SPA App\n- **[vue-ssg](https://vue-ssg.jamstacks.net)** - Vite + TypeScript in an advanced JAMStack Vite SSG App","url":"https://docs.servicestack.net/releases/v6_06","wordCount":135,"lineCount":14,"group":"v6.6"},{"slug":"feature2","draft":false,"title":"Vue 3 Tailwind Components","image":"https://servicestack.net/img/whatsnew/v6.6/vue-components.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"To maximize productivity, all new Vue Tailwind templates are pre-configured to use the feature-rich [Vue 3 Taiwlind Library](https://docs.servicestack.net/vue/).\n\n**@servicestack/vue** is our growing Vue 3 Tailwind component library with a number of rich Tailwind components useful in .NET Web Apps, including DataGrids, Auto Forms, Modals, Slide Overs, Navigational Components, Formatters, standard HTML Form Input controls inc. FileInput, Autocomplete, TagInput - all with integrated contextual validation binding.\n\nIt's our cornerstone library for enabling a highly productive dev model across our Vue.js Tailwind Project templates that we'll be continuing to invest in to unlock even greater productivity - watch this space!","url":"https://docs.servicestack.net/vue/","wordCount":113,"lineCount":11,"group":"v6.6"},{"slug":"feature3","draft":false,"title":"ES6 JS Module Add ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v6.6/mjs-update-reference-rider.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"The new ES6 classes provide a productive type-safe development model during development but can also be referenced as-is in JS Module scripts and run natively in browsers to enable instant typed API integrations without any build tools!\n\nTo achieve this the ES6 classes are annotated with JSDoc type hints in comments which enjoys broad support in IDEs and tools like TypeScript where it can be used to provide type information in JavaScript files.\n\nThey're now a first-class Add ServiceStack Reference language supported language complete with IDE integration in the latest ServiceStack Plugins for VS .NET and JetBrains IDEs.","url":"https://docs.servicestack.net/releases/v6_06#js-module-es6-class-dtos","wordCount":111,"lineCount":11,"group":"v6.6"},{"slug":"feature4","draft":false,"title":"Static prerendered Markdown Razor Pages","image":"https://servicestack.net/img/whatsnew/v6.6/razor-pages-prerendering.png","tags":[],"date":"\/Date(1675814400000-0000)\/","content":"Prerendering static content is a popular technique used by JAMStack Apps to improve the performance, reliability and scalability of Web Apps that's able to save unnecessary computation at runtime by generating static content at deployment which can be optionally hosted from a CDN for even greater performance.\n\nAs it's a valuable performance optimizing technique it's included in the [vue-mjs](https://vue-mjs.web-templates.io) template to show how it can be easily achieved within a Razor Pages App. Since prerendered content is only updated at deployment, it's primarily only useful for static content like markdown powered blogs.\n\nFor those interested in utilizing this optimization we've published details on how this works in the\n**[Prerendering Razor Pages](https://vue-mjs.web-templates.io/blog/prerendering)** blog post.","url":"https://vue-mjs.web-templates.io/posts/prerendering","wordCount":131,"lineCount":11,"group":"v6.6"},{"slug":"feature1","draft":false,"title":"Blazor Dark Mode Everywhere","image":"https://servicestack.net/img/whatsnew/v6.5/dark-and-light-mode.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"Tailwind has revolutionized how we style our Web Apps with its mobile first design system that's dramatically simplified creating maintainable responsive Web Apps. It also excels at adding support for Dark Mode with its first-class dark: modifier allowing the use of standard tailwind classes to specify what elements should look like when viewed in Dark Mode.\n\nWe're happy to announce that Dark Mode support has been added to **all ServiceStack.Blazor Tailwind components** and all Blazor Tailwind project templates where you'll be able to toggle on/off Dark Mode with the new **DarkModeToggle** component.","url":"https://docs.servicestack.net/releases/v6_05","wordCount":104,"lineCount":9,"group":"v6.5"},{"slug":"feature2","draft":false,"title":"New Blazor Components","image":"https://servicestack.net/img/whatsnew/v6.5/blazordiffusion-Autocomplete.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The ServiceStack.Blazor component library continues to expand with exciting new Components and improvements, including:\n\n- **Autocomplete** - Rich content Input to quickly search & select items\n- **TagInput** - UX friendly input for managing a list of strings like words or tags\n- **FormStyle.Card** - Render Auto Forms from POCO classes in a Card Layout\n- **NavList** - Beautiful Nav Links list component with Icons + Descriptions\n- **Colored Buttons** - Render buttons in different primary Tailwind colors\n- **SelectInput Expressions** - Declaratively define Select Input Options\n- **Custom Edit & Create Forms** - Use forms in custom AutoQueryGrids","url":"https://docs.servicestack.net/releases/v6_05#blazor-components","wordCount":103,"lineCount":15,"group":"v6.5"},{"slug":"feature3","draft":false,"title":"Blazor Diffusion","image":"https://servicestack.net/img/whatsnew/v6.5/blazordiffusion.com_splash.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The goal of our increasing Blazor investments is to enable a highly productive and capable platform for rapidly developing a majority of internal Apps CRUD functionality as well as enabling a hybrid development model where the management of Back office supporting tables can be quickly implemented using custom AutoQueryGrid components freeing up developers to be able to focus a majority of their efforts where they add the most value - in the bespoke Blazor UI's optimized customer-facing UX.\n\nTo best demonstrate its potential we've created [blazordiffusion.com](https://blazordiffusion.com) - a new ServiceStack.Blazor App front-end for Stable Diffusion - a deep learning text-to-image model that can generate quality images from a text prompt. It's a great example of Hybrid Development in action where the entire user-facing UI is a bespoke Blazor App that's optimized for creating, searching, cataloging and discovering Stable Diffusion generated images, whilst all its supporting admin tasks to manage the back office tables that power the UI were effortlessly implemented with custom AutoQueryGrid components.","url":"https://docs.servicestack.net/releases/v6_05#blazor-diffusion","wordCount":178,"lineCount":9,"group":"v6.5"},{"slug":"feature4","draft":false,"title":"Universal Blazor API Components","image":"https://servicestack.net/img/whatsnew/v6.5/blazor-universal-components.png","tags":[],"date":"\/Date(1670630400000-0000)\/","content":"The recommendation to access DB's directly in Blazor Server components encourages a more tightly-coupled and less reusable & testable architecture than the traditional well-defined API dev model used in client/server Mobile & Desktop Apps or Web SPA Apps like Blazor WASM.\n\nTo achieve the best of both worlds, we've enabled support for utilizing the In Process Service Gateway in Blazor Server Apps which lets you retain the traditional client/server dev model for invoking your Server APIs In Process - avoiding any serialization, HTTP networking or even Kestrel middleware overhead to invoke your APIs directly!\n\nThis enables using the exact same source code to call APIs in Blazor Server and WASM which allows us to develop reusable Blazor Components to invoke the same Server APIs that serve Web, Mobile and Desktop Apps in Blazor Server Apps.","url":"https://youtu.be/66DgLHExC9E","wordCount":145,"lineCount":11,"group":"v6.5"},{"slug":"feature1","draft":false,"title":"RAD Blazor","image":"https://servicestack.net/img/whatsnew/v6.4/blazor-components-youtube.jpg","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We're excited to announce exciting new Blazor Components enabling a compelling a Rapid Application Development platform for Blazor Apps delivering many of the productivity benefits previously limited to [Locode](/locode).\n\nOur new native Blazor Components allows for a beautiful progression story where you can start with a [Database-First Locode](https://docs.servicestack.net/locode/database-first) solution to instantly [generate Data Models and CRUD APIs](/locode/database-first#exporting-to-code-first-types) around your existing databases that thanks to the new `AutoQueryGrid` Blazor component will be able to trivially implement both CRUD UI's and optimized Blazor UIs in the same Blazor App.","url":"https://docs.servicestack.net/releases/v6_04","wordCount":101,"lineCount":9,"group":"v6.4"},{"slug":"feature2","draft":false,"title":"Blazor Server Template","image":"https://servicestack.net/img/whatsnew/v6.4/blazor-server.png","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We're happy to announce our new Blazor Server App template offering a number compelling advantages over Blazor WASM, including:\n\n- A superior dev model and debugging experience\n- Improved live-reload and faster iterative dev cycles\n- Full access to .NET Server functionality\n- Better start times & UI responsiveness\n- Less complexity from unnecessary client project or pre-rendering solutions","url":"https://docs.servicestack.net/releases/v6_04#blazor-server","wordCount":63,"lineCount":13,"group":"v6.4"},{"slug":"feature3","draft":false,"title":"Blazor Component Gallery","image":"https://servicestack.net/img/whatsnew/v6.4/gallery-splash.png","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"ServiceStack.Blazor Components gives you the ideal development workflow without compromise. Effortless, highly productive, API integrated Rich Blazor UI Components with 100% Server model reuse and integrated contextual validation.\n\nTo better showcase our growing Blazor functionality we've created new Blazor Gallery websites showcasing usage of available rich Blazor Components for rapidly develop beautiful Tailwind Web Apps available in both [Blazor Server](https://blazor-gallery.servicestack.net) and [Blazor WASM](https://blazor-gallery.jamstacks.net) Web Apps.","url":"https://docs.servicestack.net/releases/v6_04#blazor-gallery","wordCount":82,"lineCount":9,"group":"v6.4"},{"slug":"feature4","draft":false,"title":"Debug DB Migrations from IDE","image":"https://servicestack.net/img/whatsnew/v6.4/database-migrations-youtube.jpg","tags":[],"date":"\/Date(1665446400000-0000)\/","content":"We've continued improving our story around [Code-First DB Migrations](/ormlite/db-migrations) and have created a [new video](https://www.youtube.com/embed/NIVFqute7JQ) demonstrating how it can be used to maintain DB Schema migrations under a typical development workflow.\n\nAs they encourage a structured workflow for incremental development of new App features we've upgraded all modern [jamstacks.net](https://jamstacks.net)\ntemplates to adopt DB Migrations for creating and populating their App DB.\n\nA benefit of DB Migrations being implemented in a library instead of wrapped up behind an external tool, is that it's better integrated and more versatile in supporting more executable options like being able to run from code, a feature the new `MigrationTasks` Explicit TestFixture benefits from enabling DB Migrations to be run or debugged directly from within your IDE.","url":"https://docs.servicestack.net/releases/v6_04#db-migrations","wordCount":140,"lineCount":12,"group":"v6.4"},{"slug":"feature1","draft":false,"title":"Simple Code-First DB Migrations","image":"https://servicestack.net/img/whatsnew/v6.3/db-migrations.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"We're excited to share the next release of ServiceStack which sees the introduction of our simple Database Migration solution with Code-First DB Migrations which advances OrmLite's light-weight code-first development approach with a simple change based migration solution that facilitates the code-first development workflow of OrmLite.\n\nStarting from a seamless quick install and supporting multiple running options from command-line tooling, IDE run npm scripts, run, debug & verify from unit tests and integrated with our GitHub Action deployments where only successful migrations are deployed.\n\nInstead of relying on generation by an opaque tool, this code-first approach treats DB Migrations like any other maintainable & logically structured code written by developers where it maintains a connected audit history in source control together with the feature that needs the schema changes.","url":"https://docs.servicestack.net/releases/v6_03#code-first-db-migrations","wordCount":139,"lineCount":11,"group":"v6.3"},{"slug":"feature2","draft":false,"title":"Manage App Redis Servers with Redis Admin","image":"https://servicestack.net/img/whatsnew/v6.3/admin-ui-redis.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"The Redis Admin UI lets you manage your App's configured Redis Server with a user-friendly UX for managing core Redis data types, simple search functionality to quickly find Redis values, quick navigation between related values, first class support for JSON values and a flexible command interface and command history to inspect all previously run redis commands that's easily editable & rerun.","url":"https://docs.servicestack.net/releases/v6_03#redis-admin-ui","wordCount":75,"lineCount":7,"group":"v6.3"},{"slug":"feature3","draft":false,"title":"Browse App RDBMS Tables with Database Admin","image":"https://servicestack.net/img/whatsnew/v6.3/admin-ui-database.png","tags":[],"date":"\/Date(1661817600000-0000)\/","content":"The new built-in Database Admin UI lets you quickly browse your App's configured RDBMS schemas and tables, which without any additional configuration your App's configured databases, their schemas, tables and any registered [named connections](https://docs.servicestack.net/ormlite/getting-started#multiple-database-connections) will be navigable from the home page where they'll be browsable with a familiar tabular search results grid, similar in appearance and functionality to [Locode's Auto UI](/locode) where their resultsets can each be personalized with flexible query preferences and filtering options that's persisted across browser restarts.","url":"https://docs.servicestack.net/releases/v6_03#database-admin-ui","wordCount":98,"lineCount":7,"group":"v6.3"},{"slug":"feature1","draft":false,"title":"Beautiful Blazor Tailwind Template","image":"https://servicestack.net/img/whatsnew/v6.2/blazor-tailwind.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The feature-rich [Blazor WASM Tailwind](https://docs.servicestack.net/templates-blazor-tailwind) template us ideal for teams with strong C# skills building Line Of Business (LOB) applications who prefer utilizing Tailwind's modern utility-first CSS design system to create beautiful, instant-loading Blazor WASM Apps.","url":"https://docs.servicestack.net/releases/v6_02","wordCount":50,"lineCount":7,"group":"v6.2"},{"slug":"feature2","draft":false,"title":"Create Litestream Apps and Save 10x on Hosting","image":"https://servicestack.net/img/whatsnew/v6.2/litestream-costs.svg","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"Having achieved the best architecture for delivering [max value](https://jamstacks.net/posts/hosting) and performance with our [jamstacks.net](https://jamstacks.net) templates, the last expensive vital component used in most Web Apps is hosting of their expensive managed databases. Despite most RDBMS's being OSS and free of licensing costs, major cloud companies continue to charge artificially high hosting costs to provide redundant hosting of App data.\n\n[Litestream](https://litestream.io) lets us avoid these expensive hosting costs by providing transparent per-second replica backups to inexpensive managed storage, enabling latency-free queries, simplified hosting architectures at vastly reduced hosting costs.","url":"https://docs.servicestack.net/releases/v6_02.html#litestream","wordCount":112,"lineCount":9,"group":"v6.2"},{"slug":"feature3","draft":false,"title":"Gain real-time insights with built-in Profiling","image":"https://servicestack.net/img/whatsnew/v6.2/profiling.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The new Request Logging & Profiling UIs bring an invaluable new level of observability into your App, from being able to quickly inspect and browse incoming requests, to tracing their behavior from their generated events in the new [Diagnostic Source](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.diagnosticsource?view=net-6.0) capabilities added all throughout ServiceStack, which both power the new UIs and enables new introspectability from code where you can now to tap in to inspect & debug when each diagnostic event occurs.","url":"https://docs.servicestack.net/releases/v6_02.html#request-logging-profiling","wordCount":94,"lineCount":7,"group":"v6.2"},{"slug":"feature4","draft":false,"title":"Manage DB Validation Rules with Validation UI","image":"https://servicestack.net/img/whatsnew/v6.2/validation-video.png","tags":[],"date":"\/Date(1658707200000-0000)\/","content":"The DB Validation feature leverages the existing [Declarative Validation](https://docs.servicestack.net/declarative-validation) infrastructure where it enables dynamically managing Request DTO Type and Property Validators from a RDBMS data source which immediately takes effect at runtime that carries the same performance profile at runtime as they can be optionally cached where they'll only need to be re-hydrated from the database after modification.","url":"https://docs.servicestack.net/releases/v6_02.html#db-validation","wordCount":76,"lineCount":7,"group":"v6.2"},{"slug":"feature1","draft":false,"title":"Rapid Application Development with Locode","image":"https://servicestack.net/img/whatsnew/v6.1/locode-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"We're excited to announce [Locode](/locode), our **Rapid Application Development** solution to quickly develop\nbeautiful Full Stack CRUD Apps around **AutoQuery APIs**, suitable for a wide number of use-cases including:\n\n- Rapid prototyping by creating an instant UI around existing **Database-First** RDBMS tables\n- Declarative **Code-First** development model with unprecedented customizability (exportable from Database-First)\n- **Hybrid Apps** with a custom UI to optimize common workflows whilst using Locode's Auto UI to manage Back office tables\n\nAs Locode's UI is built on top of ServiceStack's industrial strength AutoQuery APIs, Hybrid Apps can benefit from its superior end-to-end typed development model for creating Web, Mobile & Desktop Apps.","url":"https://docs.servicestack.net/releases/v6_01","wordCount":115,"lineCount":14,"group":"v6.1"},{"slug":"feature2","draft":false,"title":"Database-First Development Model","image":"https://servicestack.net/img/whatsnew/v6.1/youtube-locode-intro.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"Using [AutoQuery's AutoGen](https://docs.servicestack.net/autoquery-autogen) enables the quickest way to modernize an existing database by dynamically creating Data Models & AutoQuery CRUD APIs from RDBMS table schemas at runtime.\n\nLocode provides a highly functional UI out-of-the-box that doesn't rely on code-gen that allows you to only override the Custom UI or Custom API implementation when needed resulting in a significantly smaller code-base to maintain as reflected in the comparitive code-bases of a customized\nNorthwind Locode App vs the Northwind code-base of a popular RAD code-gen tool for .NET\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Locode NorthwindRadzen Northwind
~120 lines of C#~4500 lines of C# (generated)
29 lines custom Home Page10k+ lines of Angular HTML/TS (generated)
","url":"https://docs.servicestack.net/releases/v6_01#database-first","wordCount":134,"lineCount":29,"group":"v6.1"},{"slug":"feature3","draft":false,"title":"Code-First Development Model","image":"https://servicestack.net/img/whatsnew/v6.1/chinook-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"[Code-First](https://docs.servicestack.net/locode/code-first) is the natural development model of [AutoQuery Services](https://docs.servicestack.net/autoquery-rdbms) which facilitates the majority of a\nSystem and its UI can be developed from simple, declarative C# POCOs to define the underlying RDBMS Schema Data Models and the precise typed\nAPI DTO Contracts of their surrounding AutoQuery & CRUD APIs. The Data and Service models can be further enhanced by ServiceStack's vast\n[declarative attributes](https://docs.servicestack.net/locode/declarative) where a significant amount of behavior, functionality and customization can be defined, ranging from:\n\n- Customize how [Data Models map to DB Tables](https://docs.servicestack.net/locode/declarative.html#table-data-model-attributes) & enlist RDBMS features\n- [Customize Serialization & API behavior](https://docs.servicestack.net/locode/declarative.html#custom-serialization)\n- [Define AutoQuery & CRUD API behavior](https://docs.servicestack.net/locode/declarative.html#autoquery-attributes)\n- Define [Validation Rules](https://docs.servicestack.net/locode/declarative.html#type-validation-attributes) and [Authorization restrictions](https://docs.servicestack.net/locode/declarative.html#authentication-restrictions)\n- [Annotate & Document APIs](https://docs.servicestack.net/locode/declarative.html#annotate-apis)\n- [Customize UI Behavior & Appearance](https://docs.servicestack.net/locode/declarative.html#result-formatters)","url":"https://docs.servicestack.net/releases/v6_01#code-first","wordCount":165,"lineCount":17,"group":"v6.1"},{"slug":"feature4","draft":false,"title":"Hybrid Locode Apps with Blazor WASM","image":"https://servicestack.net/img/whatsnew/v6.1/talent-splash.png","tags":[],"date":"\/Date(1652659200000-0000)\/","content":"Locode's declarative dev model lets you focus on your new App's business requirements where its data model, API capabilities, input validation & multi-user Auth restrictions can be defined simply using annotated C# POCOs.\nThis provides immense value at the start of the development cycle where functional prototypes can be quickly iterated to gather business requirements\n\nOnce requirements have solidified, its typed AutoQuery APIs can easily be reused to develop custom UIs to optimize important workflows.\n\n[Talent Blazor](https://github.com/NetCoreApps/TalentBlazor) is a new App showcasing an example of this where its entire back-office functionality can be managed through Locode whilst an optimized **Blazor WASM App** is created to optimize its unique workflow requirements which also benefits from the superior productive dev model of its Typed APIs.","url":"https://docs.servicestack.net/releases/v6_01#hybrid-locode-apps","wordCount":138,"lineCount":12,"group":"v6.1"},{"slug":"feature1","draft":false,"title":"FREE Individual & OSS Licenses","image":"https://servicestack.net/img/whatsnew/v6/servicestack-100m-976w.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"We're starting off 2022 eclipsing an impressive milestone having crossed\n[100M+ NuGet downloads](https://www.nuget.org/profiles/servicestack) which we're celebrating by making ServiceStack FREE for Individuals & collaborative OSS Projects.\n\nWe've also created 2 new community spaces for ServiceStack developers to engage with each other:\n\n- [ServiceStack/Discuss](https://github.com/ServiceStack/Discuss/discussions/)\n- [#ServiceStack channel on Discord](https://discord.gg/w4ayGbuYpA)\n\nThese new spaces are welcome to all users of the framework that we hope together with the new free licenses will encourage developers build and share their amazing creations with each other! 🎉","url":"https://docs.servicestack.net/releases/v6_00","wordCount":97,"lineCount":15,"group":"v6.0"},{"slug":"feature2","draft":false,"title":"API Explorer","image":"https://servicestack.net/img/whatsnew/v6/api-details-CreateBooking.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"Now built into every ServiceStack v6 App is API Explorer - an instant integrated Postman and Swagger UI alternative to quickly Call and Explore your APIs.\n\nThe entire API Explorer UI is driven by the rich metadata around your APIs and AppHost's registered plugins capturing greater knowledge about your APIs and is able to provide a smarter, richer and more optimized UX than what would be possible going through lowest common denominator specs like Open API.\n\nWith envious performance and unmatched customizability, API Explorer lets you easily incorporate gorgeous, rich, interactive API Documentation API Consumers will love who'll be able to read its source code in their preferred programming language and easily call from their existing Client Apps.","url":"https://docs.servicestack.net/releases/v6#api-explorer","wordCount":126,"lineCount":11,"group":"v6.0"},{"slug":"feature3","draft":false,"title":"Blazor WebAssembly Jamstack Template","image":"https://servicestack.net/img/whatsnew/v6/blazor-wasm.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"Our new Blazor WebAssembly (WASM) template is ideal for teams with strong C# skills building Line Of Business (LOB) applications. Utilizing an API First development model, the C# Blazor front-end is able to take advantage of the clean separation of ServiceStack APIs to enjoy instant frictionless 100% reuse of API Types as-is, without any reliance on any tooling or unproductive out-of-sync code-gen build steps interrupting developers workflow.\n\nTogether with new .NET Service Clients Apis it results in the ideal productive dev model to bind Blazor UIs to ServiceStack APIs.\n\nTemplates make use of **ServiceStack.Blazor** a new package of integrated functionality with ServiceStack, inc. JSON API HttpClient Factory, API-enabled base components & themable Bootstrap + Tailwind UI controls.\n\nIn addition to TODO MVC and CRUD UI examples demonstrating its productive dev model, it also includes pre-rendering solutions for instant load times & GitHub Actions for effortless optimal Jamstack CDN deployments.","url":"https://docs.servicestack.net/templates-blazor","wordCount":160,"lineCount":13,"group":"v6.0"},{"slug":"feature4","draft":false,"title":"C# Jamstack Templates","image":"https://servicestack.net/img/whatsnew/v6/jamstacks-net.png","tags":[],"date":"\/Date(1642723200000-0000)\/","content":"ServiceStack's new [jamstacks.net](https://jamstacks.net) templates encapsulates the latest technologies at the forefront of modern web development to deliver both a great developer experience and performant end-user UX.\n\nJamstack (JavaScript, APIs, and Markup) is a modern architecture pattern to build fast, secure and easy to scale web applications where pre-rendering content, enhancing with JavaScript and leveraging CDN static hosting results in a highly productive, flexible and performant system that takes advantage of CDN edge caches to deliver greater performance & efficiency at lower cost.\n\nIt's quickly becoming the preferred architecture for modern web apps with benefits extending beyond performance to improved Security, Scale, Maintainability, Portability, Developer Experience & lower costs with your App's pre-rendered static UI assets on Content Delivery Network (CDN) edge caches close to users locations.\n\nThese new templates represent the best-in class experiences for their respective React, Vue & Blazor WASM ecosystems each, packed with features & examples common in many websites including Integrated Auth, rich Markdown content as well as TODOs MVC and CRUD examples with built-in contextual validation binding. As such they're now recommended over our existing SPA and C# MVC Templates.","url":"https://docs.servicestack.net/releases/v6#jamstack","wordCount":197,"lineCount":13,"group":"v6.0"},{"slug":"feature1","draft":false,"title":".NET 6 is here!","image":"https://servicestack.net/img/whatsnew/net6-released.png","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"We've cut this release cadence short to focus on putting out a quality release to take advantage of the newest and best .NET runtime yet!\n\nIn a lot of ways .NET 6 marks the start of a new era for .NET with the first LTS release after the end of the\n.NET Framework and .NET Standard with only 1 actively developed runtime going forward.\n\nWe're moving full-steam ahead and have standardized our new features onto .NET 6 with:\n\n- [All project templates upgraded to .NET 6](https://docs.servicestack.net/releases/v5_13#all-project-templates-upgraded-to-net-6)\n- [net6.0 TFM builds added to all packages](https://docs.servicestack.net/releases/v5_13#net6-0-tfm-builds-added-to-all-packages)\n- [Embracing .NET 6 new Hosting Model for mix](https://docs.servicestack.net/releases/v5_13#net-6-new-hosting-model)\n- [v4.5 .NET Framework Deprecation Notice](https://docs.servicestack.net/releases/v5_13#v4-5-net-framework-deprecation-notice)","url":"https://docs.servicestack.net/releases/v5_13","wordCount":133,"lineCount":17,"group":"v5.13"},{"slug":"feature2","draft":false,"title":"ServiceStackVS 2022 support","image":"https://servicestack.net/img/whatsnew/vs2022-splash.png","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"Visual Studio 2022 now has support for Add ServiceStack reference for C#/F#/VBNET/TypeScript!\n\nServiceStackVS can be found in the Extension Marketplace, and is installable straight from Visual Studio 2022.","url":"https://docs.servicestack.net/releases/v5_13#servicestackvs-now-supports-visual-studio-2022","wordCount":37,"lineCount":9,"group":"v5.13"},{"slug":"feature3","draft":false,"title":".NET 6 Hosting Model migration guide","image":"https://i.ytimg.com/vi/WgsFl0AFUdo/maxresdefault.jpg","tags":[],"date":"\/Date(1637366400000-0000)\/","content":"We're now embracing .NET 6's idiom and have rewritten all our mix gist config files to adopt its HostingStartup which is better able to load modular Startup configuration without assembly scanning.\n\nThis video guide shows how you can migrate your existing startup modules to use .NET 6 Hosting Model.","url":"https://youtu.be/WgsFl0AFUdo","wordCount":62,"lineCount":9,"group":"v5.13"},{"slug":"feature1","draft":false,"title":"Python ServiceStack Reference","image":"https://servicestack.net/img/whatsnew/v5.12/python-reference.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"[Python](https://python.org) is one of the worlds most popular programming languages which\nexcels in a number of industries thanks to its ease of use and comprehensive libraries.\n\nTo maximize the experience for calling ServiceStack APIs within these environments\nServiceStack now supports Python as a 1st class Add ServiceStack Reference supported language\nwhich gives Python developers an end-to-end typed API for consuming ServiceStack APIs,\ncomplete with IDE integration in [PyCharm](https://www.jetbrains.com/pycharm/) as well as\n[built-in support in x dotnet tool](https://docs.servicestack.net//dotnet-tool#addupdate-servicestack-references)\nto generate Python DTOs for a remote ServiceStack instance from a single command.","url":"https://docs.servicestack.net/releases/v5.12#python-servicestack-reference","wordCount":106,"lineCount":15,"group":"v5.12"},{"slug":"feature2","draft":false,"title":"Jupyter Notebooks","image":"https://servicestack.net/img/whatsnew/v5.12/jupyter-splash.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"Python has solidified itself as a powerhouse in Data Science and Machine Learning thanks to its\nbest-in-class libraries as well as being at the forefront of Interactive Computing with its native\nsupport in [Jupyter Notebooks](https://jupyter.org/) - a popular realization of Donald Knuth’s\n[Literate Programming](https://en.wikipedia.org/wiki/Literate_programming)\nparadigm where executable code is interlaced in a live document with natural language\ndocumentation, rich markup and embedded media. It’s become an invaluable medium for data\nscience, scientists and researchers where it’s often used as an advanced REPL environment\nfor data and computation exploration whose resulting knowledge and insights are easily\ncaptured and shared.\n\nWe’re excited to be able to join the beautiful interactive world of Jupyter Notebooks with\nboth Simple UI and command-line tools for effortlessly generating customized Notebooks around\ntyped ServiceStack APIs for Jupyter’s premier support for **Python**.","url":"https://docs.servicestack.net/releases/v5.12#interactive-jupyter-notebooks","wordCount":141,"lineCount":19,"group":"v5.12"},{"slug":"feature3","draft":false,"title":"C# and F# Jupyter Notebooks","image":"https://servicestack.net/img/whatsnew/v5.12/jupyter-lab-visual-example.png","tags":[],"date":"\/Date(1629158400000-0000)\/","content":"In addition to Python we've also extended support for generating customized pre-populated\n**C#** and **F#** Jupyter Notebooks by leveraging dotnet/interactive Jupyter kernel’s which\nallows C# and F# .NET Developers to join Jupyter's interactive live programming paradigm\nwhich they can either choose to run locally in the next gen JupyterLab UI or directly within\nVS Code using .NET Interactive's VS Code extension.\n\nNotebooks have also become a popular medium for sharing institutional data and computational\nknowledge thanks to being able to capture and embed execution output and support for exporting\nin multiple popular document formats as used by GitHub with their Auto Preview support for\nNotebooks. We also simplify configuring a Notebook GitHub repo to support executing C# and\nF# Notebooks in [mybinder.org](https://mybinder.org) FREE cloud hosting services with our\n`docker-jupyter` mix template.","url":"https://docs.servicestack.net/releases/v5.12#generate-c-jupyter-notebooks","wordCount":138,"lineCount":18,"group":"v5.12"},{"slug":"feature1","draft":false,"title":"Instant Client Apps","image":"https://servicestack.net/img/whatsnew/v5.11/client-apps.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"Building upon our native end-to-end typed solutions, we're excited to announce **Instant Client Apps** to\nprovide instant utility and value around your ServiceStack Services where your API consumers can use the\nAuto generated UI to craft API Requests in their preferred programming language:","url":"https://docs.servicestack.net/releases/v5.11#instant-client-apps","wordCount":51,"lineCount":9,"group":"v5.11"},{"slug":"feature2","draft":false,"title":"GitHub Actions Templates","image":"https://servicestack.net/img/whatsnew/v5.11/github-actions-header.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"We've begun to fully embrace GitHub Actions from this release to help quickly setting up CI environments for\nnew and existing ServiceStack project templates by automating them into building and running tests on each **commit**\nbefore publishing, dockerizing & deploying them on each **GitHub Release**.\nThe templates leverage [mix](https://docs.servicestack.net/mix-tool) to work like lego pieces where they can be combined to achieve your\npreferred automation workflow.","url":"https://docs.servicestack.net/releases/v5.11#githubaction-templates","wordCount":76,"lineCount":11,"group":"v5.11"},{"slug":"feature3","draft":false,"title":"All Service Client Libraries Upgraded","image":"https://servicestack.net/img/whatsnew/v5.11/service-clients.png","tags":[],"date":"\/Date(1618963200000-0000)\/","content":"In addition to the Refresh Token support & built-in Inspect utils all ServiceStack’s generic Service Client libraries in all languages have received a number of updates to improve their consistency and overall development UX.","url":"https://docs.servicestack.net/releases/v5.11#all-service-client-libraries-upgraded","wordCount":47,"lineCount":7,"group":"v5.11"},{"slug":"feature1","draft":false,"title":"Booking System in minutes","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/studio/bookings-splash.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"To see the rapid development of AutoQuery in action we've created a quick demo showing how to create a simple multi-user Booking System from an empty [web](https://github.com/NetCoreTemplates/web) project, [mixed in](https://docs.servicestack.net/mix-tool) with the preferred RDBMS & Auth layered functionality, before enabling [Validation](https://docs.servicestack.net/validation), [AutoQuery](https://docs.servicestack.net/autoquery-rdbms), Admin Users & [CRUD Event Log](https://docs.servicestack.net/autoquery-audit-log) plugins - to lay the foundational features before building our App by first defining its `Booking` data model & its surrounding **Query**, **Create**, **Update** and **Soft Delete** Typed CRUD APIs with rich validation enforced by declarative Validation attributes and multi-layer authorization rules & access permissions protected using Authorization attributes.","url":"https://docs.servicestack.net/releases/v5.10#creating-a-multi-user-net-core-booking-system-in-minutes","wordCount":126,"lineCount":7,"group":"v5.10"},{"slug":"feature2","draft":false,"title":"Studio User Admin","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/studio/studio-home.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"We've caught a glimpse of the new User Admin Feature in the [Bookings CRUD demo](https://youtu.be/XpHAaCTV7jE) who utilizes it to create **Employee** and **Manager** users. The `AdminUsersFeature` provides Admin User Management APIs enabling remote programmatic access to your registered [User Auth Repository](https://docs.servicestack.net/authentication-and-authorization#user-auth-repository), featuring:\n\n- Works with existing `IUserAuthRepository` sync or async providers\n- Utilizes Progressive enhancement, e.g. search functionality utilizes `IQueryUserAuth` (if exists) performing a wildcard search over multiple fields, otherwise falls back to exact match on `UserName` or `Email`\n- Supports managing Auth Repositories utilizing custom `UserAuth` data models\n- Flexible UI options for customizing which fields to include in Search Results and Create/Edit UIs\n- Rich Metadata aggregating only App-specific Roles & Permissions defined in your App\n- User Events allow you to execute custom logic before & after each Created/Updated/Deleted User","url":"https://docs.servicestack.net/releases/v5.10#studio-user-management-ui","wordCount":145,"lineCount":14,"group":"v5.10"},{"slug":"feature3","draft":false,"title":"Sign In with Apple","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/dev/web-signin-with-apple-login.png","tags":[],"date":"\/Date(1605052800000-0000)\/","content":"As mobile Apps is a target use-case for ServiceStack, this release also includes 1st class integration with **Sign In with Apple** OAuth provider. To assist with adoption we've also developed Sign In with Apple Integration Examples for iOS, Android & Web with working implementations for Flutter iOS/Android & SwiftUI Apps.","url":"https://docs.servicestack.net/releases/v5.10#sign-in-with-apple","wordCount":63,"lineCount":7,"group":"v5.10"},{"slug":"feature1","draft":false,"title":"Introducing ServiceStack Studio","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/studio-home.png","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"Another exciting development in this release is the successor to [Admin UI](https://github.com/ServiceStack/Admin):\n**ServiceStack Studio!** - a capability-based UI to manage multiple remote ServiceStack instances from either a Chromium Desktop App\nor cross-platform .NET Core Web App.\n\nThe richer metadata in ServiceStack Services allows Studio to logically group Services around Data Models, enabling its high-level\nsemantic features like its native data-grid like UX over all AutoQuery Services to quickly discover, search, create, update and\ndelete entities based on the available AutoQuery APIs and whether Authenticated Users have access to them.","url":"https://docs.servicestack.net/releases/v5.9#introducing-servicestack-studio","wordCount":102,"lineCount":13,"group":"v5.9"},{"slug":"feature2","draft":false,"title":"Instantly Servicify existing Systems!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/svg/servicify.svg","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"ServiceStack also reached maximum autonomy for a Services framework where in addition to **AutoQuery** automatically providing your Services implementations,\n**Studio** providing its instant UI, ServiceStack also gained the capability to **generate your entire API!** Including Typed API contracts,\ndata models, implementations & human-friendly pluralized HTTP API routes over an existing System RDBMS's tables!\n\nServiceStack's **AutoGen** enables a number of exciting possibilities, predominantly it's the fastest way to ServiceStack-ify an\nexisting systems RDBMS where it will serve as an invaluable tool for anyone wanting to quickly migrate to ServiceStack and access its\nfunctionality ecosystem around ServiceStack Services:","url":"https://docs.servicestack.net/releases/v5.9#instantly-servicify-existing-systems","wordCount":106,"lineCount":13,"group":"v5.9"},{"slug":"feature3","draft":false,"title":"Generate Types for RDBMS Tables","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/autodto-youtube.png","tags":[],"date":"\/Date(1594252800000-0000)\/","content":"generate-types-for-rdbms-tables\nimage: https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/release-notes/v5.9/autodto-youtube.png\n---\n\nAn unintended consequence of **AutoGen** that's potentially universally appealing to even non .NET developers is that it's also a way to instantly\ngenerate Types for all RDBMS tables in all of ServiceStack [supported client languages](https://docs.servicestack.net/add-servicestack-reference),\nwhich thanks to being configurable in a [Sharp App](https://sharpscript.net/docs/sharp-apps) can be executed from the command-line using\nthe [dotnet tools](https://docs.servicestack.net/dotnet-tool)","url":"https://docs.servicestack.net/releases/v5.9#autodtogenerate-types-for-rdbms-tables","wordCount":75,"lineCount":10,"group":"v5.9"},{"slug":"feature1","draft":false,"title":"Simple Code-First DB MigrationsServiceStack gRPC support","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/grpc/grpc-horizontal-color.svg","tags":[],"date":"\/Date(1578960000000-0000)\/","content":"We're super excited to open the year with the premier feature in this release **ServiceStack gRPC**, our highly-productive entry into the\n[gRPC](https://grpc.io) universe with a number of value-added additions that makes developing and consuming gRPC Services a joy with USPs\nthat leverages and preserves your existing knowledge and investments and maximizes the utility of your Services offering unprecedented value\nfor your development efforts.","url":"https://docs.servicestack.net/grpc","wordCount":77,"lineCount":10,"group":"v5.8"},{"slug":"feature2","draft":false,"title":"Updated Templates .NET Core 3.1","image":"https://raw.githubusercontent.com/ServiceStack/Assets/master/csharp-templates/vue-nuxt.png","tags":[],"date":"\/Date(1578960000000-0000)\/","content":"With the release of [.NET Core 3.1 LTS](https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/) we've standardized our Project Templates\nand tools to **.NET Core 3.1 LTS** whilst continuing to support existing **.NET Core 2.1+** and **.NET Framework** projects including\n[ASP.NET Core Apps on the .NET Framework](https://docs.servicestack.net/templates-corefx).","url":"https://docs.servicestack.net/releases/v5.8#net-core-31-lts-project-templates","wordCount":67,"lineCount":9,"group":"v5.8"},{"slug":"feature1","draft":false,"title":".NET Core 3 Updates","image":"https://raw.githubusercontent.com/ServiceStack/Assets/master/img/release-notes/netcore-banner.png?t","tags":[],"date":"\/Date(1569888000000-0000)\/","content":"Ordinarily we'd have a longer release cadence in between releases with more features, but with the recent release of .NET Core 3\nwe've cut this release cycle short so we can release a version of ServiceStack compatible with .NET Core 3+. Other than that the major focus\non this release was `#Script` with [many new features](https://docs.servicestack.net/releases/v5.7#script) we're excited to share after covering the ServiceStack changes.","url":"https://docs.servicestack.net/releases/v5.7#net-core-3","wordCount":81,"lineCount":9,"group":"v5.7"},{"slug":"feature2","draft":false,"title":"New #Script Updates","image":"https://sharpscript.net/assets/img/sandbox.svg","tags":[],"date":"\/Date(1569888000000-0000)\/","content":"We've seen great reception of [Gist Desktop Apps](https://docs.servicestack.net/releases/v5.6#gist-desktop-apps) from the last v5.6 release with a\nnice shoutout from [Jon Galloway](https://twitter.com/jongalloway) in the\n[ASP.NET Community August Stand up](https://www.youtube.com/watch?v=a2lq4yEfJpk&feature=youtu.be&t=1529),\na featured [blog post](https://www.hanselman.com/blog/SharpScriptFromServiceStackLetsYouRunNETAppsDirectlyFromAGitHubGist.aspx)\nfrom [Scott Hanselman](https://twitter.com/shanselman) as well features in Hacker News and Reddit.\n\nWe've since further enhanced `#Script` capabilities in this release making it more functional then ever, broadening its appeal\nin its growing list of use-cases.","url":"https://docs.servicestack.net/releases/v5.7#1st-class-script-code-and-lisp-language-support","wordCount":94,"lineCount":14,"group":"v5.7"},{"slug":"feature1","draft":false,"title":"Modular Startup","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/mix/feature-authrepo.png","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"We want to dramatically simplify and improve the experience for configuring ASP.NET Core Apps and make them truly composable,\nwhere we can drop-in files that auto configures itself with both ASP.NET Core and ServiceStack's AppHost so they can\nencapsulate an entire feature and provide instant utility without needing to wade through different steps of how they\nshould be manually configured at different places in your Startup configuration class.","url":"https://docs.servicestack.net/releases/v5.6#modular-startup","wordCount":78,"lineCount":10,"group":"v5.6"},{"slug":"feature2","draft":false,"title":"Mix'n'Match .NET Core Apps","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/mix/example-validation-900.gif","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"To complete the picture of making it easy as possible to compose ASP.NET Core Apps we've created the `mix` dotnet tool to easily\ninstall features which can be installed with:\n\n```bash\n$ dotnet tool install --global mix\n```\n\nThe `mix` tool is designed around applying ASP.NET Core features captured in GitHub gists to your local .NET Core projects.\n\nThen choosing which features you want to add to your project with `mix `, e.g:\n\n```bash\n$ mix redis\n```","url":"https://docs.servicestack.net/releases/v5.6#mix-n-match-net-core-apps","wordCount":85,"lineCount":20,"group":"v5.6"},{"slug":"feature3","draft":false,"title":"Single Page App Component Libraries","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/ssvs/spa-templates-overview.png","tags":[],"date":"\/Date(1565568000000-0000)\/","content":"To lay the foundation for richer and more tightly integrated UI controls, we've created UI and common component libraries for the\n3 most popular JS frameworks:\n\n\n- [@servicestack/vue](https://github.com/ServiceStack/servicestack-vue)\n- [@servicestack/react](https://github.com/ServiceStack/servicestack-react)\n- [@servicestack/angular](https://github.com/ServiceStack/servicestack-angular)\n\n\nAll new [Single Page App Project Templates](https://docs.servicestack.net/templates-single-page-apps) have been pre-configured to use these libraries which will make it\na lot easier to deliver new UI components and updates to existing SPA Apps with just an npm upgrade.","url":"https://docs.servicestack.net/releases/v5.6#spa-component-libraries","wordCount":89,"lineCount":17,"group":"v5.6"},{"slug":"feature1","draft":false,"title":"ServiceStack turns 10 🥳","image":"https://servicestack.net/img/whatsnew/v5.5/anniversary-10.png","tags":[],"date":"\/Date(1553990400000-0000)\/","content":"Before we get into unpacking this release we're happy to announce that we've now eclipsed **10 years** since our\n[first commit](https://github.com/ServiceStack/ServiceStack/commit/2a9cd0d10247ae1a679ac011d7bdef593937dba4)!\n\nI'd like to take this milestone to thank our thousands of Customers we've had the pleasure to serve and see our Software used which has amassed\nmore than **27,000,000+ total downloads** on NuGet and to see the uptick in adoption of some of our unique features like\n[Add ServiceStack Reference](https://docs.servicestack.net/add-servicestack-reference) which has been used more than **88,000 times**\nto generate native Typed DTOs amongst its [8 supported languages](https://docs.servicestack.net/add-servicestack-reference#supported-languages).","url":"https://docs.servicestack.net/releases/v5.5#servicestack-turns-10","wordCount":107,"lineCount":13,"group":"v5.5"},{"slug":"feature2","draft":false,"title":"Templates upgrades to #Script","image":"https://servicestack.net/img/whatsnew/v5.5/sharpscript.png","tags":[],"date":"\/Date(1553990400000-0000)\/","content":"As we continue enhancing ServiceStack's scripting support with exciting new features, it no longer made sense to call our dynamic scripting language\n\"Templates\" which is just one of the many use-cases `#Script` enables.\n\n[#Script](https://sharpscript.net) is typical of a popular dynamic template language you'd find in other platforms, using the ubiquitously familiar mix of\n[JavaScript Expressions](https://sharpscript.net/docs/expression-viewer) which for increased wrist-friendly readability can be easily composed\ntogether using the Unix `|` operator as embraced by [Vue.js filters](https://vuejs.org/v2/guide/syntax.html#header) and\n[Angular's Template Expressions](https://angular.io/guide/template-syntax#template-expression-operators)\nwhist the [Script Statement Blocks](https://sharpscript.net/docs/blocks) adopt the universally adopted Handlebars-like syntax that's ideal for\nrendering dynamic pages.","url":"https://docs.servicestack.net/releases/v5.5#script-fka-servicestack-templates","wordCount":118,"lineCount":15,"group":"v5.5"},{"slug":"feature1","draft":false,"title":".NET Core Windows Desktop Apps!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/app/netcore-chromium-splash.png","tags":[],"date":"\/Date(1537315200000-0000)\/","content":"Our new [app](https://www.nuget.org/packages/app) build tool is packed with features for \"Chromitizing\" any\n.NET Core Web App into a **.NET Core Windows Desktop App** that's as easy as installing the `app` tool:\n\n```bash\n$ dotnet tool install -g app\n```\n\nand using it to run your .NET Core Web App's `.dll`, e.g:\n\n```bash\n$ app MyApp.dll\n```\n\nWhere it will run your .NET Core App and host it inside an Chromium Embedded Framework (CEF) browser.\n\nThis provides instant utility for being able to deploy .NET Core Apps end users can run locally using Chrome's leading and consistent rendering engine\nwithin a Windows Desktop Application.","url":"https://docs.servicestack.net/releases/v5.4#net-core-windows-desktop-apps","wordCount":116,"lineCount":23,"group":"v5.4"},{"slug":"feature1","draft":false,"title":"Spanified ServiceStack","image":"https://servicestack.net/img/logo-text.svg","tags":[],"date":"\/Date(1535414400000-0000)\/","content":"Major rework was performed across the ServiceStack.Text and ServiceStack.Common foundational libraries to replace its internal usage of `StringSegment`\nwith .NET's new high-performance\n[Span and Memory Types](https://www.codemag.com/article/1807051/Introducing-.NET-Core-2.1-Flagship-Types-Span-T-and-Memory-T) primitives\nwhich are now used for all JSON/JSV deserialization and many other String utilities.\n\nThe new `Span` and `ReadOnlyMemory` Types is the successor to `StringSegment` which are both allocation-free, but Span also enjoys additional runtime support as a JIT intrinsic for improved performance.\n\nThis change was primarily an internal refactor so there shouldn't be any user visible differences except for the addition of the\n[System.Memory](https://www.nuget.org/packages/System.Memory) dependency which contains the new Memory types. As a general rule we're averse to adopting\nnew dependencies but the added performance of these new primitives makes it a required dependency for maintaining high-performance libraries.","url":"https://docs.servicestack.net/releases/v5.2#spanified-servicestack","wordCount":142,"lineCount":15,"group":"v5.2"},{"slug":"feature1","draft":false,"title":"Dart and Flutter!","image":"https://raw.githubusercontent.com/ServiceStack/docs/master/docs/images/dart/dart.png","tags":[],"date":"\/Date(1524528000000-0000)\/","content":"We're super excited to announce first-class support for [Dart](https://www.dartlang.org) and [Flutter](https://flutter.io)! - Google’s premier new mobile UI framework for crafting high-quality native interfaces for iOS and Android from a single code-base in record time with a Reactive development model simplifying the effort for building Complex UIs in similar vein to development models pioneered in popular JavaScript frameworks like React, React Native, Vue and Angular. It's offers a beautiful blend of rapid development cycles with its built-in Hot Reloading giving you instant iterative feedback of changes to your Mobile App in milliseconds, whilst still offering high-performance native experiences at runtime where Dart code is AOT compiled into native ARM in iOS and Android.","url":"https://docs.servicestack.net/releases/v5.1.0#dart-and-flutter","wordCount":131,"lineCount":7,"group":"v5.1"},{"slug":"feature1","draft":false,"title":"Future Versioning Scheme","image":"https://servicestack.net/img/logo-text.svg","tags":[],"date":"\/Date(1514937600000-0000)\/","content":"Historically ServiceStack releases are focused around \"Major release schedules\" published along with detailed Release Notes describing new features and changes added in each release. All packages are published together in \"lockstep\" with the same version number so the effort to upgrade ServiceStack projects can be done all at same time, with low frequency.\n\nWhilst we want to minimize the effort for Customers to upgrade we also want to make any fixes or enhancements to the previous release available sooner as there are often fixes reported and resolved immediately after each release and made available in our [pre-release packages on MyGet](https://docs.servicestack.net/myget) that most Customers wont get until the next major Release on NuGet.","url":"https://docs.servicestack.net/releases/v5.0.0#future-versioning-scheme","wordCount":126,"lineCount":9,"group":"v5.0"},{"slug":"feature2","draft":false,"title":"ServiceStack Mobile and Desktop Apps","image":"https://raw.githubusercontent.com/ServiceStackApps/HelloMobile/master/screenshots/splash-900.png","tags":[],"date":"\/Date(1514937600000-0000)\/","content":"The [HelloMobile](https://github.com/ServiceStackApps/HelloMobile) project has been rewritten to use the latest v5 .NET Standard 2.0 and .NET Framework clients and contains multiple versions of the same App demonstrating a number of different calling conventions, service integrations and reuse possibilities for each of the following platforms:\n\n- WPF\n- UWP\n- Xamarin.Android\n- Xamarin.iOS\n- Xamarin.OSX\n- Xamarin.Forms\n - iOS\n - Android\n - UWP","url":"https://docs.servicestack.net/releases/v5.0.0#servicestack-mobile-and-desktop-apps","wordCount":77,"lineCount":17,"group":"v5.0"}],"videos":[{"slug":"video1","draft":false,"title":"Self Hosted gateway for proxying LLM APIs, Ollama, ComfyUI & FFmpeg servers","tags":["servicestack","ai","gpt"],"date":"\/Date(1732665600000+0000)\/","content":"Introducing AI Server, a self-hosted Docker gateway managing API access to various AI services like LLMs and ComfyUI. \nIt offers centralized management, load balancing across multiple providers, and native typed integrations for \nnumerous languages. \n\nKey features include live monitoring, protected access with API keys, and built-in UIs as well as \nsimplified access of OpenAI Chat compatible APIs across multiple languages.","url":"https://youtu.be/Ojo80oFQte8","wordCount":78,"lineCount":13,"group":"ai-server"},{"slug":"kamal-deployments","draft":false,"title":"Use Kamal to deploy .NET Apps to any Linux server","tags":["kamal","deployment","hosting"],"date":"\/Date(1732665600000+0000)\/","content":"Kamal is a CLI utility by the BaseCamp team that makes self hosting containers on any Linux host a lot easier to manage. \nWe've incorporated the use of Kamal into some of the most populate templates to give developers the ability to \nmanage their deployed containers using various Kamal commands, and use GitHub Actions as the CI for central deployment.","url":"https://youtu.be/-mDJfRG8mLQ","wordCount":76,"lineCount":10,"group":"actions","order":1},{"slug":"video2","draft":false,"title":"Schedule your Reoccurring Tasks with Background Jobs","tags":["jobs","ui","api"],"date":"\/Date(1726444800000+0000)\/","content":"In addition to queueing jobs, Background Jobs also supports scheduling recurring tasks \nto execute APIs or Commands at regular fixed intervals.\n\nDefine recurring tasks with flexible unix cron expressions or simple TimeSpan intervals and\nmonitor their progress in real-time from the Admins Jobs UI.","url":"https://youtu.be/DtB8KaXXMCM","wordCount":54,"lineCount":11,"group":"ui-jobs"},{"slug":"video1","draft":false,"title":"Background Jobs and Recurring Tasks","tags":["jobs","ui","api"],"date":"\/Date(1726099200000+0000)\/","content":"Background Jobs is our solution for managing background jobs and scheduled tasks \nin any .NET 8 App, implemented in true ServiceStack fashion where it seamlessly integrates \ninto existing ServiceStack Apps with a built-in Management UI to provide real-time monitoring, \ninspection and management of background jobs.","url":"https://youtu.be/2Cza_a_rrjA","wordCount":54,"lineCount":10,"group":"ui-jobs"},{"slug":"apikeys-admin","draft":false,"title":"API Keys with Built-In Admin and Identity User UIs","tags":["db","auth","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Building on our experience with API Keys in previous versions of ServiceStack, we've taken the opportunity to redesign\nhow API Keys work to provide a more flexible and powerful way to manage access control for your APIs which includes\ncustomizable built-in Admin UIs to manage both machine-to-machine API Keys and User API Keys, in addition all Identity Auth\nTailwind Templates includes a Identity User UIs for Users to create their own API Keys.","url":"https://youtu.be/U4vqOIHOs_Q","wordCount":85,"lineCount":11,"group":"ui-admin","order":1},{"slug":"commands-admin","draft":false,"title":"Build robust and observable systems with Commands","tags":["logic","admin","ui"],"date":"\/Date(1718668800000+0000)\/","content":"How code-bases are structured is largely a matter of preference, however we've been able to add value \nin this area by introducing an appealing option with our new managed Commands Feature.\n\nIn addition to auto wiring all commands by default, it supports opt-in Auto Retry as well as an Admin UI \nto add observability around commands including timings, exceptions and a rolling list of latest commands executed.","url":"https://youtu.be/SXPdBHbncPc","wordCount":81,"lineCount":13,"group":"ui-admin","order":2},{"slug":"simple-auth","draft":false,"title":"Simple Auth Story with API Keys for .NET 8 Microservices","tags":["auth","admin","api","ui"],"date":"\/Date(1718668800000+0000)\/","content":"Admin Auth with API Keys benefits the class of Apps which don’t need Identity User Auth and the additional complexity \nit brings inc. Identity & Passwords, EF Migrations, Token Expirations, OAuth, etc.\n\nWith the introduction of API Keys we’re able to provide a simpler Auth Story for .NET 8 Microservices that’s easy for \nAdmin Users to manage and control which trusted clients and B2B Integrations can access its functionality.","url":"https://youtu.be/0ceU91ZBhTQ","wordCount":85,"lineCount":12,"group":"apis","order":3},{"slug":"press-vue","draft":false,"title":"Vite Vue Markdown Websites with Vite Press Plugin","tags":["vue","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we dive deep into the Vite Press Plugin, an alternative to VitePress for adding Markdown features to \nexisting Vite Vue projects. We explore the templates productive components including Tailwind CSS, Vue Router, \ndynamic Layouts, Iconify and Auto Component Imports, that work together with Vite Press Plugin universal Markdown \npowered features to create beautiful Website Blogs, Product Releases and Video Gallery Pages that can be reused across \nVue, React, and even .NET Razor and Blazor projects.","url":"https://youtu.be/u3FcgWlack4","wordCount":92,"lineCount":12,"group":"node","order":6},{"slug":"press-react","draft":false,"title":"Create static Websites with Vite React & Markdown, Host Free on GitHub Pages","tags":["react","vite","markdown"],"date":"\/Date(1711238400000+0000)\/","content":"In this video, we will show how you can use the `press-react` template to create a beautiful React and Markdown \nstatic blog or content centric Websites that's easy to manage and add content. It utilizes the vite-plugin-press \nlibrary whose Markdown feature folders give you a consistent way of using markdown pages to create blogging, \nmarketing landing pages and other content heavy websites.","url":"https://youtu.be/S6O8QCaXDG0","wordCount":81,"lineCount":11,"group":"node","order":7},{"slug":"compose","draft":false,"title":"Mobile & Desktop Apps with Compose Multiplatform","tags":["compose","kotlin","android"],"date":"\/Date(1710115200000+0000)\/","content":"[JetBrains Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) builds on [Jetpack Compose](https://developer.android.com/jetpack/compose) - Google's modern toolkit for building\nnative Android UIs bringing it to more platforms, including Windows, macOS and Linux Desktops.\n\nIt offers a modern alternative for creating native Mobile, Desktop & Web Apps which can also leverage \n[Kotlin ServiceStack Reference](https://docs.servicestack.net/kotlin-add-servicestack-reference) for end-to-end typed APIs. We'll look at the latest [v1.6 Release](https://blog.jetbrains.com/kotlin/2024/02/compose-multiplatform-1-6-0-release/)\nand use it to build a cross-platform Desktop App integrated with a .NET API backend utilizing and end-to-end typed API\nintegration.","url":"https://youtu.be/r6T3B7o1GYE","wordCount":105,"lineCount":14,"group":"mobile"},{"slug":"vue-spa","draft":false,"title":"Productive ASP.NET Core Vite Vue SPA Tailwind Template with Identity Auth","tags":["vue","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `vue-spa` template which has incorporated changes from Microsoft's own \nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building \nweb applications with Vue.js, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/JlUjWlVslRg","wordCount":62,"lineCount":10,"group":"vue-projects","order":1},{"slug":"react-spa","draft":false,"title":"Productive ASP.NET Core Vite React SPA Tailwind Template with Identity Auth","tags":["react","autoquery","identity-auth"],"date":"\/Date(1709596800000+0000)\/","content":"In this video we explore the newly updated `react-spa` template which has incorporated changes from Microsoft's own\nSPA templates for .NET 8. We've then enhanced these templates to provide a great developer experience for building\nweb applications with React, Vite, TypeScript and ServiceStack.","url":"https://youtu.be/WXLF0piz6G0","wordCount":59,"lineCount":10,"group":"projects","order":2},{"slug":"net8-docker","draft":false,"title":".NET 8's built-in streamlined containerization","tags":["dotnet","deployment","hosting"],"date":"\/Date(1701302400000+0000)\/","content":"Explore the enhanced Docker integration in .NET 8 simplifying the containerization of your C# projects. \nWe cover how ServiceStack templates align seamlessly with these improvements for a more efficient development experience. \n\nDive deeper into .NET's Docker tooling and learn to streamline your application deployment with ease.","url":"https://youtu.be/y57c-9jeIww","wordCount":57,"lineCount":11,"group":"actions","order":2},{"slug":"blazor-vue","draft":false,"title":"Fast, SEO-friendly, Blazor Static Rendered Apps with Vue","tags":["blazor","vue","tailwind"],"date":"\/Date(1700611200000+0000)\/","content":"The new [Blazor Vue](/posts/net8-best-blazor) template is ideal for building Fast, SEO-friendly, 100% statically rendered Blazor Web Apps where \nall its dynamic functionally uses Vue.js to progressively enhance Blazor's statically rendered content - eliminating Blazor's \ncurrent limitations of being able to use Blazor SSR to develop an entire App without any of Blazor Interactivity downsides.\n\nThe [blazor-vue](/posts/net8-best-blazor) template reimplements all features of the [blazor](/posts/net8-blazor-template) \ntemplate with all its interactive features created with **Vue.js** and the \n[Vue Components library](https://docs.servicestack.net/vue/), with both templates combining the latest advancements in \nBlazor .NET 8 with **Tailwind CSS** styling for creating beautiful Responsive Websites with support for Dark Mode.","url":"https://youtu.be/ujbTGn4IwFs","wordCount":129,"lineCount":16,"group":"blazor","order":2},{"slug":"blazor-vue","draft":false,"title":"Fast, SEO-friendly, Blazor Static Rendered Apps with Vue","tags":["blazor","tailwind","vue"],"date":"\/Date(1700611200000+0000)\/","content":"The new **Blazor Vue** template is ideal for building Fast, SEO-friendly, 100% statically rendered Blazor Web Apps where \nall its dynamic functionally uses Vue.js to progressively enhance Blazor's statically rendered content - eliminating Blazor's \ncurrent limitations of being able to use Blazor SSR to develop an entire App without any of Blazor Interactivity downsides.\n\nThe new [blazor-vue](/posts/net8-best-blazor) template implements all the features of the [blazor](/posts/net8-blazor-template) \ntemplate but reimplements all its interactive features with **Vue.js** to and the \n[Vue Components library](https://docs.servicestack.net/vue/), with both templates combining the latest advancements in \nBlazor .NET 8 with **Tailwind CSS** styling for creating beautiful Responsive Websites with support for Dark Mode.","url":"https://youtu.be/ujbTGn4IwFs","wordCount":131,"lineCount":16,"group":"vue-projects","order":2},{"slug":"blazor","draft":false,"title":"Blazor Tailwind App for .NET 8","tags":["blazor","server","tailwind"],"date":"\/Date(1700524800000+0000)\/","content":"ServiceStack's new [Blazor project template](/posts/net8-blazor-template) takes advantage of .NET 8 Blazor's new features \nthat redefines modern Web Development in C# which we explore in this video overview, covering how the template adopts Blazor's \nfamiliar ASP.NET Core Identity and Entity Framework for its authentication, utilizes the modern Tailwind CSS framework for beautiful\nresponsive design and adopts .NET's best-practice Docker Containerization support for its built-in GitHub Action\nDeployments - enabling a simple ready-made CI solution for deployment to any Linux Host via SSH and Docker compose.","url":"https://youtu.be/hqyozHSL0Nk","wordCount":98,"lineCount":12,"group":"blazor","order":1},{"slug":"blazor-wasm","draft":false,"title":"Blazor WASM Tailwind App for .NET 8","tags":["blazor","wasm","tailwind"],"date":"\/Date(1700524800000+0000)\/","content":"This video walks through the **Blazor Web Assembly** Tailwind template - a powerful framework that allows developers to create \nhigh-performance web applications using C# and .NET end-to-end in both Server and Client, running directly in the browser via WebAssembly. \nIntegration with [ServiceStack.Blazor's Tailwind](https://blazor-gallery.servicestack.net/gallery) Components provides a \ncomprehensive set of pre-defined components and CSS styles, enabling developers to create modern and responsive designs with ease.","url":"https://youtu.be/U_LflAxz1z0","wordCount":84,"lineCount":12,"group":"blazor","order":3},{"slug":"video2","draft":false,"title":"Creating TypeChat's Voice Activated CoffeeShop in .NET","tags":["servicestack","autoquery","ai","gpt"],"date":"\/Date(1695168000000+0000)\/","content":"Part two in the series where we walk through a recreation of the TypeChat example build in .NET. \n\nWe show how you can utilize various different Speech-to-Text services with the `ServiceStack.AI` and \n`ServiceStack.GoogleCloud` libraries, and pass that text to be processed by Microsoft's TypeChat. \n\nWe demonstrate how TypeChat validates the output from OpenAI's APIs to ensure the JSON returned matches a specified \nTypeScript schema that is dynamically generated.","url":"https://youtu.be/OtgrIdkvw-4","wordCount":81,"lineCount":13,"group":"ai"},{"slug":"video1","draft":false,"title":"Building TypeScript's TypeChat CoffeeShop in .NET","tags":["servicestack","autoquery","ai","gpt"],"date":"\/Date(1694649600000+0000)\/","content":"In this video, we'll cover how to effectively model your data to capture all customer-orderable products. \nWe’ll walk you through the steps to dynamically generate a TypeScript schema and make use of AutoQuery for a quick and robust implementation. \n\nPlus, discover how TypeChat integrates seamlessly with OpenAI APIs for advanced natural language processing capabilities.","url":"https://youtu.be/MjNqPAXLH5w","wordCount":64,"lineCount":10,"group":"ai"},{"slug":"switch-to-arm","draft":false,"title":"How much can .NET Apps save by switching to ARM?","tags":["ormlite","db","hosting"],"date":"\/Date(1693353600000+0000)\/","content":"In this video we go through some benchmark results from comparing running 3 different types of workloads on x86 and \nARM running on Azure, AWS and Hetzner Cloud where you could half your monthly cloud costs just by switching from x86 to ARM.\n\nCompatibility of ARM for different production workloads has been improving over the last few years, \nso now is the perfect time to see if you can switch.","url":"https://youtu.be/yeGEI3n5pnQ","wordCount":87,"lineCount":12,"group":"actions","order":8},{"slug":"jsonl-stream","draft":false,"title":"Stream processing of data with JSON Lines","tags":["serialization","jsonl","apis"],"date":"\/Date(1692057600000+0000)\/","content":"In this video, we explore the efficient JSON Lines (JSONL) data format, a favorite among developers and the AI community\nfor handling large datasets. We walk through working with JSON Lines data, including examples for streaming parsers,\nasynchronous parsing with ServiceStack, and integration with Typesense.","url":"https://youtu.be/m0tAfjvJaZg","wordCount":56,"lineCount":10,"group":"apis","order":6},{"slug":"kubernetes-not-required","draft":false,"title":"GitHub for Auto Deployments - Kubernetes Not Required","tags":["github-actions","deployment","hosting"],"date":"\/Date(1691452800000+0000)\/","content":"Step by step walkthrough for deploying your App via GitHub Actions and plain old SSH. \nCheap hardware is getting fast enough that a lot of Web Apps don't need sophisticated orchestration tools like Kubernetes, \nso we show how you can use fundamental tools like SSH, Docker Compose and GitHub Actions to do it yourself! \n\nLow traffic Apps & proof of concepts can easily share cost effective server running Linux, \nNginx Reverse Proxy with LetsEncrypt.","url":"https://youtu.be/7dardvqBFbE","wordCount":89,"lineCount":14,"group":"actions","order":3},{"slug":"video4","draft":false,"title":"Load data fast with ADO.NET RDBMS Bulk Insert APIs","tags":["ormlite","db","performance"],"date":"\/Date(1690848000000+0000)\/","content":"OrmLite includes a Bulk Inserts API that encapsulates the most efficient ways for inserting large amounts of data \nin each supported RDBMS. We ran benchmarks across macOS on Apple M2 ARM, Intel Linux VM and Intel Windows 10 to measure \nhow fast they run across popular Operating System platforms.","url":"https://youtu.be/3gO_OEWIyPo","wordCount":64,"lineCount":10,"group":"features","order":4},{"slug":"video5","draft":false,"title":"GPT Agent Feature Plugin Updated with Semantic Kernel","tags":["gpt"],"date":"\/Date(1690848000000+0000)\/","content":"In this video, we delve into the integration of Microsoft's Semantic Kernel with our GPT Meeting Agent to simplify \nand enhance working with Large Language Models with a common abstraction library that allows for easy substitution\nand experimentation with different LLMs.","url":"https://youtu.be/smM-Bs7CxJ8","wordCount":54,"lineCount":11,"group":"features","order":5},{"slug":"video1","draft":false,"title":"Getting Started with OrmLite fast, code-first ORM for .NET","tags":["ormlite","db"],"date":"\/Date(1688428800000+0000)\/","content":"This video walks though getting started with OrmLite - a powerful, fast and easy to use ORM for .NET that \ncan be used in any .NET and .NET Framework App without the complexity of larger ORMs. \n\nIn this tutorial we'll demonstrate the best patterns to use to install, configure and use OrmLite in your Application, \ndefining code-first POCOs, using them to create RDBMS tables and explore how to Create, Query, Update and Delete them \nusing OrmLite's Typed APIs.","url":"https://youtu.be/vUbpwjfEYzg","wordCount":92,"lineCount":13,"group":"features","order":1},{"slug":"video2","draft":false,"title":"Getting Started with ServiceStack.Redis in .NET","tags":["redis"],"date":"\/Date(1687824000000+0000)\/","content":"In this tutorial we explore the basics of Redis, an in-memory database, and its integration in .NET using the ServiceStack.Redis library. \nThe video covers topics such as setting up a Redis server with Docker, understanding the ServiceStack.Redis library, and making \nthe most of Redis data structures in a .NET context. \n\nFurthermore, it also delves into utilizing the async capabilities of ServiceStack, all demonstrated through clear, practical examples.","url":"https://youtu.be/jBdOvTvjyqY","wordCount":82,"lineCount":13,"group":"features","order":2},{"slug":"custom-admin-uis","draft":false,"title":"Build beautiful custom .NET Admin UIs in minutes","tags":["vue","autoquery"],"date":"\/Date(1686700800000+0000)\/","content":"In this video we explore the Server Multi Razor Page and Client rendered Admin UI Pages in the latest .NET\n[vue-mjs](https://vue-mjs.web-templates.io) project template to see how to use the new SidebarLayout and AutoQueryGrid\nVue Tailwind components to build beautiful Admin UI Pages within minutes.","url":"https://youtu.be/wlRA4_owEsc","wordCount":61,"lineCount":10,"group":"vue-projects","order":6},{"slug":"video2","draft":false,"title":"New Disqus OSS self-host alternative for .NET Websites","tags":["creatorkit","posts","tailwind"],"date":"\/Date(1686268800000+0000)\/","content":"In this video we explore how we can use CreatorKit - a self-hosting alternative to Disqus to add comments, voting\nand moderation to any existing page or blog post.\n\nCreatorKit is especially useful for adding dynamic post comment and voting features to Jamstack and other\nstatically generated websites which can continually be statically pre-rendered and hosted on CDN's whilst its \ndynamic features are powered by an external CreatorKit instance.","url":"https://youtu.be/lgpl-VjxtdU","wordCount":79,"lineCount":12,"group":"creatorkit"},{"slug":"video1","draft":false,"title":"New Mailchimp self-host mail management alternative","tags":["creatorkit","mail","tailwind"],"date":"\/Date(1686182400000+0000)\/","content":"In this video we introduce CreatorKit an OSS self-hosting alternative to Mailchimp for managing mailing lists,\nnewsletter subscriptions, email templating, marketing campaigns & more whose tailwind components can be easily \nintegrated into any existing website.\n\nIt's an ideal companion for .NET Apps looking to manage their mailinglist and newsletter subscribers in an\nisolated customizable .NET App with support for creating custom email layouts, templates and mail campaigns.","url":"https://youtu.be/_qDVtfcHf14","wordCount":75,"lineCount":12,"group":"creatorkit"},{"slug":"video1","draft":false,"title":"Bring static Xkcd dataset to life with AutoQuery","tags":["autoquery","razor-pages","ssg","tailwind"],"date":"\/Date(1683763200000+0000)\/","content":"In this video, we demonstrate how to use AutoQuery to turn a static XKCD comic dataset from Hugging Face into a Web API, \naddressing common issues of siloed data.\n\nBy creating well-defined AutoQuery APIs, we make the data more accessible and enable efficient data integrations \nfor rapid creation of production Web Apps which we demonstrate in new lightweight a Razor SSG Vue App.","url":"https://youtu.be/CrKtXVrPj8Q","wordCount":78,"lineCount":11,"group":"autoquery"},{"slug":"razor-ssg","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":89,"lineCount":13,"group":"projects","order":3},{"slug":"razor-ssg","draft":false,"title":"Using Razor SSG to Create Websites in GitHub Codespaces","tags":["razor-pages","ssg","markdown","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":86,"lineCount":13,"group":"vue-projects","order":5},{"slug":"video1","draft":false,"title":"Flutter Todo App with .NET API, from Scratch in Minutes","tags":["flutter","android","api"],"date":"\/Date(1679875200000+0000)\/","content":"This video starts from scratch, walking through installing Flutter SDK, \nbefore adding a new native Flutter App to a new .NET Blazor Server project -\ngiving our existing TODO Blazor Web App new native iOS & Android native UIs\n\nNext, we'll demonstrate the iterative development workflow of making changes \nto backend .NET APIs that's easily kept in-sync with our clients Dart DTOs\nfrom within Android Studio or command-line","url":"https://youtu.be/t4WcXo4Vnio","wordCount":79,"lineCount":13,"group":"flutter"},{"slug":"video2","draft":false,"title":"Use Flutter to build a Bookings App Fast","tags":["flutter","android","api"],"date":"\/Date(1679875200000+0000)\/","content":"In this video, we'll show how we can rapidly develop a new Flutter Android Bookings App\nadded to a new [blazor](https://blazor.web-templates.io) .NET Project using `x mix flutter`\n\nNext, we'll dive into the development process, where we'll demonstrate the productivity\nof calling typed .NET APIs using typed Dart DTOs for end-to-end typed integrations\nthat can be effortlessly updated from within Android Studio","url":"https://youtu.be/eMbwaMuIk84","wordCount":72,"lineCount":13,"group":"flutter"},{"slug":"video1","draft":false,"title":"Fastest way to a working gRPC Server and Flutter solution","tags":["grpc","flutter","android"],"date":"\/Date(1679875200000+0000)\/","content":"In this video we'll walk through configuring Flutter and gRPC .NET Services with the `flutter-grpc` mix template\nto add a new Flutter application using your locally installed **Flutter SDK** to an existing ServiceStack `grpc` project\nthat has been configured to support gRPC services","url":"https://youtu.be/fgts6sQ2Ags","wordCount":55,"lineCount":9,"group":"flutter-grpc"},{"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":"video1","draft":false,"title":"Preview APIs with the Auto Html API Page","tags":["ui","api"],"date":"\/Date(1678665600000+0000)\/","content":"The Auto HTML Page provides instant utility for API consumers in consuming your APIs with a built-in \nAPI Response Visualizer, JSON syntax highlighting, integrated Postman-like UI and API SDK integration all-in-one.\n\nPowered by Vue 3 and the ServiceStack [Vue library](https://docs.servicestack.net/vue/), it's also highly customizable.","url":"https://youtu.be/3gjisRVqhLo","wordCount":61,"lineCount":11,"group":"ui-autohtml"},{"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 \nwith the **vue-mjs** template. \n\nThe template illustrates building content-heavy or complex sites while avoiding the intricacies of Single Page Apps (SPAs) \nthrough the use of JavaScript Modules, Tailwind, Vue.js, Razor Pages, and ServiceStack.","url":"https://youtu.be/YIa0w6whe2U","wordCount":62,"lineCount":11,"group":"vue"},{"slug":"video3","draft":false,"title":"Create testable code-first RDBMS migrations in C#","tags":["ormlite","db","migrations"],"date":"\/Date(1665619200000+0000)\/","content":"In this video, we guide you through creating OrmLite DB Migrations, which enhance OrmLite's lightweight code-first development approach by offering a simple change-based migration solution. This solution supports the code-first development workflow of OrmLite, streamlining the process. \n\nBy following the video, you'll learn how to effectively manage database schema changes while leveraging OrmLite's capabilities.","url":"https://youtu.be/NIVFqute7JQ","wordCount":66,"lineCount":10,"group":"features","order":3},{"slug":"db-admin","draft":false,"title":"Using Database Admin UI to browse your App's databases","tags":["db","admin","ui"],"date":"\/Date(1662076800000+0000)\/","content":"Database Admin UI lets Admin Users quickly browse and navigate your App's configured RDBMS schemas and tables,\nwith support for browsing, querying, ordering and filtering data directly from your database without needing to create any APIs \n\nConfiguration is imported from your AppHost which can be easily added in shared development or testing environments \nfor developers and non-developers alike to troubleshoot data issues","url":"https://youtu.be/NZkeyuc_prg","wordCount":76,"lineCount":12,"group":"ui-admin","order":3},{"slug":"redis-admin","draft":false,"title":"Use Redis Admin UI to inspect your App's Redis usage","tags":["redis","admin","ui"],"date":"\/Date(1661904000000+0000)\/","content":"Redis Admin UI lets you manage your App's configured Redis Server with a UX-friendly UI for managing core Redis data types, \nsimple search to quickly find Redis values, quick navigation between related values, \nfirst class support for JSON values and a flexible command interface and command history to inspect all previously run redis \ncommands that's easily editable & rerun","url":"https://youtu.be/AACZtTOcQbg","wordCount":75,"lineCount":12,"group":"ui-admin","order":5},{"slug":"video2","draft":false,"title":"Build a Bookings API with Auto Admin UI in minutes","tags":["autoquery"],"date":"\/Date(1660608000000+0000)\/","content":"From an empty web project, this video shows how to:\n- Add SQLite & Authentication support\n- Define code-first Data Model with Validation\n- Add User Management support\n- Enable Audit History support\n- Add Excel integration","url":"https://youtu.be/rSFiikDjGos","wordCount":46,"lineCount":12,"group":"autoquery"},{"slug":"autoquery-bookings","draft":false,"title":"Build a Bookings API with Auto Admin UI in minutes","tags":["razor-pages","mvc","tailwind","vue"],"date":"\/Date(1660608000000+0000)\/","content":"In this video tutorial, we demonstrate the steps required to create a bookings API that is designed to be easy to use for non-developers. \n\nTo achieve this, we make use of the ServiceStack Locode and Admin UI features.\nWith [Locode](/auto-ui#locode), developers can easily generate a fully functional APIs with CRUD functionality \nwhilst many App features like User Access, Logging, Profiling & DB Validation can be managed from the built-in [Admin UI](/auto-ui#admin).","url":"https://youtu.be/rSFiikDjGos","wordCount":91,"lineCount":13,"group":"apis","order":2},{"slug":"file-uploads-easy","draft":false,"title":"File Upload services the Easy way","tags":["autoquery","files","locode"],"date":"\/Date(1660608000000+0000)\/","content":"The `FileUploadFeature` plugin in ServiceStack enables developers to add managed file uploads to their applications, \nproviding integration with any ServiceStack service, including AutoQuery services, as well as the Locode App UI. \n\nThe modular JavaScript used in this example provides a structured & organized way to write JavaScript code that \ncan be reused in multiple components, further simplifying the development process.","url":"https://youtu.be/xSUqAB0HQB4","wordCount":72,"lineCount":12,"group":"apis","order":4},{"slug":"profiling","draft":false,"title":"Real-time insights with Request Logging & Profiling UIs","tags":["logging","profiling","api","ui"],"date":"\/Date(1658707200000+0000)\/","content":"The new Request Logging & Profiling UIs bring an invaluable new level of observability into your App, \nfrom being able to quickly inspect and browse incoming requests, to tracing their behavior from their generated events \nin the new Diagnostic Source capabilities added all throughout ServiceStack, which both power the new UIs and \nenables new introspectability from code where you can tap in to inspect & debug when diagnostic events occurs","url":"https://youtu.be/LgQHTSHSk1g","wordCount":84,"lineCount":11,"group":"ui-admin","order":4},{"slug":"validation-admin","draft":false,"title":"Create API validation rules from the Validation Admin UI","tags":["db","validation","admin","ui"],"date":"\/Date(1658707200000+0000)\/","content":"With very little code, we walk through the steps required to setup AutoQuery APIs with dynamic validation in .NET. \nThis enables non-developers to manage data, user access and validation rules all from a friendly admin UI \n\nRules can be applied at runtime taking immediate effect, with custom messages, status codes and notes about each rule \nmaking them easy to manage in a team setting","url":"https://youtu.be/W5OJAlOxH98","wordCount":79,"lineCount":12,"group":"ui-admin","order":6},{"slug":"litestream","draft":false,"title":"Create Simple, Fast, Reliable Apps with Litestream","tags":["ormlite","db","litestream","hosting"],"date":"\/Date(1658448000000+0000)\/","content":"This guide introduces [Litestream](https://litestream.io) for SQLite and demonstrates using ServiceStack Litestream mix templates for efficient setup. \nThe tutorial focuses on SQLite backup and restore procedures during deployment via SSH and docker-compose, utilizing GitHub Actions. \n\nBy following these steps, you can streamline your SQLite management tasks and enhance your overall deployment process.","url":"https://youtu.be/WXRwT7ayc1Y","wordCount":66,"lineCount":11,"group":"actions","order":7},{"slug":"file-uploads-cloud","draft":false,"title":"Managed File Uploads","tags":["files","blazor"],"date":"\/Date(1654560000000+0000)\/","content":"In this walkthrough, we explore the `FilesUploadFeature` plugin and a demo FileBlazor App's \n[Managed Files Uploads](https://docs.servicestack.net/locode/files) solution. \n\nThe plugin is a powerful tool that adds managed file uploads to your ServiceStack App, seamlessly integrating \nwith any ServiceStack service, including AutoQuery services and [Locode](/auto-ui#locode) built-in UI \nand [Vue AutoQueryGrid](https://docs.servicestack.net/vue/autoquerygrid) and \n[Blazor Component Library](https://blazor-gallery.servicestack.net/gallery).","url":"https://youtu.be/5sd00MzHpaU","wordCount":74,"lineCount":15,"group":"apis","order":5},{"slug":"video1","draft":false,"title":"Rapidly develop apps with Locode","tags":["ui","api"],"date":"\/Date(1652659200000+0000)\/","content":"Learn how to easily create customizable feature-rich UX-friendly RDBMS Web Apps with Locode's\ninstant CRUD UI driven by your AutoQuery APIs that can be further extended with custom UIs\n\nIn this video we show 3 examples from generating everything from an existing database, making customizations to the Locode App, \nand finally reusing all your services in a custom Blazor WASM App","url":"https://youtu.be/hkuO_DMFXmc","wordCount":68,"lineCount":12,"group":"ui-locode"},{"slug":"video2","draft":false,"title":"Database-first development with Locode","tags":["ui","api"],"date":"\/Date(1652659200000+0000)\/","content":"To demonstrate a database-first development workflow we've enabled\n[AutoGen](https://docs.servicestack.net/autoquery-autogen)\non the **Northwind** sample database to generate \n[AutoQuery](https://docs.servicestack.net/autoquery-rdbms) & \n[CRUD](https://docs.servicestack.net/autoquery-crud) \nAPIs whose capabilities are used to power the custom Northwind Locode App","url":"https://youtu.be/NiTp5Z_5U2Y","wordCount":50,"lineCount":13,"group":"ui-locode"},{"slug":"video3","draft":false,"title":"Quickly create a code-first API and CRUD App with Locode","tags":["autoquery","crud","ui"],"date":"\/Date(1652659200000+0000)\/","content":"To showcase greater customizability options, we've exported AutoGen APIs of the **Chinook** sample database into typed AutoQuery APIs \n& Data Models to unlock more flexible code-first declarative & programmatic dev models that includes Custom UI components \nto showcase potential enhancements in Locode Apps","url":"https://youtu.be/mFyMgg7c3vg","wordCount":57,"lineCount":9,"group":"ui-locode"},{"slug":"video3","draft":false,"title":"Rapidly develop apps with Locode","tags":["autoquery","locode"],"date":"\/Date(1652659200000+0000)\/","content":"ServiceStack Locode App is a generated API driven by your service metadata. When combined with AutoQuery, \nit becomes a way to rapidly develop web applications with robust service APIs that can be later extended with custom UIs. \n\nIn this video we show 3 examples from generating everything from an existing database, making customizations to the Locode \nApp, and finally reusing all your services in a custom Blazor WASM App","url":"https://youtu.be/hkuO_DMFXmc","wordCount":78,"lineCount":12,"group":"autoquery"},{"slug":"video1","draft":false,"title":"Database first development with Locode","tags":["autoquery","autogen","locode"],"date":"\/Date(1652659200000+0000)\/","content":"In this video we show a step by step process for start with an existing database and customizations without the need for code first models.\n\n[Locode](https://docs.servicestack.net/locode/) is a generated API driven by your APIs metadata. \nCombined with other high-level ServiceStack features, it becomes a way to rapidly develop web applications with robust service APIs \nthat can be later extended with custom UIs.","url":"https://youtu.be/NiTp5Z_5U2Y","wordCount":76,"lineCount":12,"group":"autogen"},{"slug":"video1","draft":false,"title":"Fastest way to a working gRPC Server and Flutter solution","tags":["flutter","dart","grpc"],"date":"\/Date(1648771200000+0000)\/","content":"The video guides viewers through configuring a Flutter application with gRPC .NET services using the `flutter-grpc` mix template, starting with Flutter and gRPC services introduction and installation of the required SDK and template. \n\nIt demonstrates creating typed Dart DTOs for gRPC services, making typed requests, and keeping the Flutter app in sync with the .NET backend through automatic updates.","url":"https://youtu.be/fgts6sQ2Ags","wordCount":73,"lineCount":9,"group":"grpc"},{"slug":"nextjs","draft":false,"title":"Rapidly develop C# .NET Next.js JamStack Apps with Rider","tags":["nextjs","react","jamstack"],"date":"\/Date(1644278400000+0000)\/","content":"In this comprehensive walkthrough, we will guide you through the ServiceStack Next.js template, which offers an \nexceptional rapid development cycle when used with JetBrains Rider. \n\nThis template is specifically designed for Microsoft .NET developers seeking a seamless and efficient Next.js React \nsetup while employing the better performing Jamstack architecture.","url":"https://youtu.be/3pPLRyPsO5A","wordCount":67,"lineCount":13,"group":"projects","order":5},{"slug":"ultimate-vue-spa-ssg","draft":false,"title":"Ultimate Vue SPA & SSG Jamstack templates for .NET","tags":["vue","vite","jamstack"],"date":"\/Date(1643673600000+0000)\/","content":"In this video tutorial, we introduce the `vue-ssg` template, a powerful combination of Vite, Vue3, and ServiceStack \nthat offers an unparalleled developer experience\n\nThis template is specifically designed for .NET developers seeking a seamless and efficient Vue.js setup \nwhile employing the Jamstack architecture leveraging capabilities of Vite, Vue & ServiceStack","url":"https://youtu.be/D-rU0lU_B4I","wordCount":64,"lineCount":13,"group":"vue-projects","order":6},{"slug":"vue-ssg","draft":false,"title":"Ultimate Vue SPA & SSG Jamstack templates for .NET","tags":["vue","vite","jamstack"],"date":"\/Date(1643673600000+0000)\/","content":"In this video tutorial, we introduce the `vue-ssg` template, a powerful combination of Vite, Vue3, and ServiceStack \nthat offers an unparalleled developer experience\n\nThis template is specifically designed for .NET developers seeking a seamless and efficient Vue.js setup \nwhile employing the Jamstack architecture leveraging capabilities of Vite, Vue & ServiceStack","url":"https://youtu.be/D-rU0lU_B4I","wordCount":67,"lineCount":13,"group":"projects","order":6},{"slug":"video1","draft":false,"title":"API Explorer - a better Postman & Swagger UI","tags":["ui","api"],"date":"\/Date(1643068800000+0000)\/","content":"The entire API Explorer UI is driven by the rich metadata around your APIs typed Service Contracts and AppHost's registered plugins\n\nIt's built from the ground up with multiple levels of customizations, supporting both declarative & programmatic models\nwhilst also enabling rich interactive HTML Components to document each of your APIs & their Types","url":"https://youtu.be/lUDlTMq9DHU","wordCount":65,"lineCount":10,"group":"ui-explorer"},{"slug":"csharp-fsharp-vb","draft":false,"title":"Add Typed C#, TypeScript, F# and VB.NET ServiceStack References from JetBrains Rider","tags":["rider","c#","f#","vb"],"date":"\/Date(1629936000000+0000)\/","content":"The ServiceStack plugin for Jetbrains Rider simplifies managing your C#, F# and VB.NET client integrations by automating the generation of typed DTOs, request and response models, and client libraries.\n\nIn this video, we demonstrate the process of installing and utilizing the JetBrains Rider plugin to manage your client integrations for your ServiceStack .NET clients.","url":"https://youtu.be/JKsgrstNnYY","wordCount":77,"lineCount":10,"group":"ss-ref","order":2},{"slug":"post-command","draft":false,"title":"Post Command line HTTP API tools","tags":["inspect","tool"],"date":"\/Date(1629676800000+0000)\/","content":"[Post Command](https://docs.servicestack.net/post-command) is a collection of command line utils that lets you easily discover,\ninspect and invoke ServiceStack endpoints from a single command.\n\nUse [inspect](https://docs.servicestack.net/post-command#inspect-command) to discover features and APIs available on a remote\nServiceStack endpoint including the version of ServiceStack running, the App’s registered Content Types, Plugins and Auth Providers\nas well as its public APIs, their routes and Response Types.","url":"https://youtu.be/FcXG4RnlVQk","wordCount":78,"lineCount":13,"group":"apis","order":7},{"slug":"video1","draft":false,"title":"Create Python Jupyter Notebooks for .NET APIs","tags":["jupyter","python"],"date":"\/Date(1629158400000+0000)\/","content":"The video demonstrates generating Jupyter Notebooks using ServiceStack **x** tool and [Instant Client Apps](https://apps.servicestack.net), which together provide an efficient and portable development experience. \n\nThis enables developers to use Jupyter Notebooks for tasks like data analysis, visualization, and machine learning in a transferable manner across environments.","url":"https://youtu.be/h6UwDuXt8MA","wordCount":61,"lineCount":10,"group":"jupyter"},{"slug":"video2","draft":false,"title":"Create C# Jupyter Notebooks to Inspect & Chart .NET APIs","tags":["jupyter","c#"],"date":"\/Date(1629158400000+0000)\/","content":"This video demonstrates integrating .NET Interactive and JupyterLab to enhance the development experience, creating a seamless workflow when working with ServiceStack services. \n\nIt guides viewers through generating working C# notebooks for any ServiceStack service, highlighting improved productivity through these tools which are FREE on [mybinder.org](https://mybinder.org).","url":"https://youtu.be/vt92pbet5bY","wordCount":64,"lineCount":11,"group":"jupyter"},{"slug":"video3","draft":false,"title":"Create F# Jupyter Notebooks to inspect .NET APIs & run FREE on Binder","tags":["jupyter","f#"],"date":"\/Date(1629158400000+0000)\/","content":"This video demonstrates integrating .NET Interactive and JupyterLab to enhance the development experience, creating a seamless workflow when working with ServiceStack services.\n\nIt guides viewers through generating working F# notebooks for any ServiceStack service, highlighting improved productivity through these tools which are FREE on [mybinder.org](https://mybinder.org).","url":"https://youtu.be/PxH3K5WIDx8","wordCount":66,"lineCount":10,"group":"jupyter"},{"slug":"python","draft":false,"title":"Call typed .NET APIs from Python","tags":["python","vscode","jupyter"],"date":"\/Date(1629158400000+0000)\/","content":"The video tutorial walks through how to leverage Add ServiceStack Reference for Python in different Python IDEs \nsuch as PyCharm, VSCode, and Jupyter Notebooks \n\nAdd ServiceStack Reference is a powerful tool that automatically generates typed Python DTOs for your \nServiceStack APIs, saving you time and effort. With this tool, you can access your web services with \nease and benefit from the productivity boost it provides.","url":"https://youtu.be/WjbhfH45i5k","wordCount":80,"lineCount":14,"group":"ss-ref","order":1},{"slug":"php","draft":false,"title":"Call typed .NET APIs from PHP","tags":["php","phpstorm","drupal"],"date":"\/Date(1629158400000+0000)\/","content":"Learn about how to maximize the developer experience for calling ServiceStack .NET APIs within PHP's popular \nWordpress, Drupal or Laravel Apps with Add ServiceStack Reference first class support for PHP, giving \ndevelopers an end-to-end typed API for consuming ServiceStack APIs, complete with IDE integration in PhpStorm as well \nas built-in support in `x` dotnet tool to generate Typed and annotated PHP DTOs for a remote ServiceStack instance \nfrom a single command-line.","url":"https://youtu.be/ZLVdaJ38vwc","wordCount":85,"lineCount":12,"group":"ss-ref","order":2},{"slug":"razor-press","draft":false,"title":"VitePress and Jekyll alternative for SSG Docs","tags":["razor-pages","ssg","tailwind","markdown"],"date":"\/Date(1626134400000+0000)\/","content":"Introducing Razor Press, a powerful ServiceStack project template for creating documentation and content-centric websites \nusing .NET's Razor Pages, Markdown, Tailwind CSS, and Vue. \n\nLearn how Razor Press aids in the easy creation, and deployment of your statically generated sites that can be hosted for \nFREE on GitHub Pages CDN","url":"https://youtu.be/uqEa_DfFFDQ","wordCount":61,"lineCount":12,"group":"vue-projects","order":4},{"slug":"intro","draft":false,"title":"Intro to ServiceStack","tags":["apis"],"date":"\/Date(1625529600000+0000)\/","content":"In this introduction to ServiceStack, we will guide you through the framework's message-based design and its numerous benefits, \nwhich include promoting simplicity and enabling maximum reuse. \n\nBy utilizing a message-based design, ServiceStack encourages developers to focus on the core functionality of their services while \nabstracting away complexities, resulting in a more streamlined and efficient development process.","url":"https://youtu.be/Vae0ALalIP0","wordCount":66,"lineCount":13,"group":"apis","order":1},{"slug":"modern-razor-tailwind","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","url":"https://youtu.be/SyppvQB7IPs","wordCount":57,"lineCount":12,"group":"vue-projects","order":3},{"slug":"modern-vue-js","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://blazor-vue.web-templates.io\n- https://razor.web-templates.io\n- https://mvc.web-templates.io\n- https://web-tailwind.web-templates.io","url":"https://youtu.be/SyppvQB7IPs","wordCount":75,"lineCount":18,"group":"projects","order":4},{"slug":"video2","draft":false,"title":"Enabling Dart gRPC support to ServiceStack .NET Apps","tags":["dart","grpc"],"date":"\/Date(1620864000000+0000)\/","content":"In this video we walk through how to enable gRPC endpoints for your existing ServiceStack services\nand how the [x dotnet tool](https://docs.servicestack.net/dotnet-tool) greatly\nsimplifies the development workflow of maintaining in-sync client integrations in a simple and consistent\nway across all gRPC languages","url":"https://youtu.be/UQlYodNS1xc","wordCount":54,"lineCount":10,"group":"flutter-grpc"},{"slug":"video2","draft":false,"title":"Enabling Dart gRPC support to ServiceStack .NET Apps","tags":["dart","grpc"],"date":"\/Date(1620864000000+0000)\/","content":"This video tutorial explains how to easily transform ServiceStack services into gRPC services by generating the `.proto` file automatically from your service definitions.\n\nIt also showcases the [ServiceStack x tool](https://docs.servicestack.net/dotnet-tool)'s powerful features streamline integration, automate repetitive tasks, and support various languages, enabling the development of faster, more efficient, and scalable applications.","url":"https://youtu.be/UQlYodNS1xc","wordCount":68,"lineCount":9,"group":"grpc"},{"slug":"video3","draft":false,"title":"Call .NET APIs from a Flutter Android App with native Dart","tags":["flutter","android","apis"],"date":"\/Date(1619654400000+0000)\/","content":"In this video we should how you can quickly get up and running using ServiceStack's \nDart client library with your Flutter Android or iOS Apps \nto generate native typed Dart DTOs with [Add ServiceStack Reference](https://docs.servicestack.net/dart-add-servicestack-reference)\nenabling end-to-end typed integrations to call .NET APIs from Flutter Mobile, Desktop and Dart Web Apps","url":"https://youtu.be/ocH5L-CikQ0","wordCount":69,"lineCount":11,"group":"flutter"},{"slug":"flutter","draft":false,"title":"Call typed .NET APIs from Flutter Android Apps using Dart","tags":["flutter","dart","android"],"date":"\/Date(1619654400000+0000)\/","content":"In this video, we will demonstrate how you can swiftly set up and begin utilizing ServiceStack's Dart client library with your Flutter Android or iOS applications.\n\nThis also enables you to automate the generation native typed Dart Data Transfer Objects (DTOs) using the Add ServiceStack Reference feature, which simplifies the integration process and typed end-to-end communication between your Flutter Mobile Apps.","url":"https://youtu.be/ocH5L-CikQ0","wordCount":76,"lineCount":10,"group":"mobile"},{"slug":"ssh-deployments","draft":false,"title":"Using GitHub Actions for CI & .NET App Deployments","tags":["github-actions","deployment"],"date":"\/Date(1619049600000+0000)\/","content":"This tutorial demonstrates enabling continuous integration, deployment, hosting, and Let's Encrypt HTTPS configuration \nfor an existing ServiceStack Project using the new mix support for GitHub Actions. \n\nWe'll guide you through the process of integrating these powerful features into your project. By following the tutorial, \nyou'll streamline your workflow of your ServiceStack Project.","url":"https://youtu.be/0PvzcnxlBvc","wordCount":67,"lineCount":12,"group":"actions","order":4},{"slug":"video2","draft":false,"title":"Servicify an existing RDBMS with AutoQuery","tags":["autoquery","autogen"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack’s AutoGen enables a number of exciting possibilities, predominantly it’s the fastest way to ServiceStack-ify an existing systems \nRDBMS where it will serve as an invaluable tool for anyone wanting to quickly migrate to ServiceStack and access its functionality \necosystem around ServiceStack Services","url":"https://youtu.be/NaJ7TW-Q_pU","wordCount":53,"lineCount":11,"group":"autogen"},{"slug":"xamarin","draft":false,"title":"Call typed .NET APIs from Xamarin.Android in C#","tags":["xamarin","android","c#"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack framework and Add ServiceStack Reference tool can be utilized in mobile applications built with Xamarin.Android, enabling developers to create native Android applications using C# and .NET framework. \n\nAdd ServiceStack Reference simplifies the consumption of web services by generating your Request DTOs for easy API access. This saves time and effort, promoting faster mobile app development.","url":"https://youtu.be/cbYuem1b2tg","wordCount":70,"lineCount":9,"group":"mobile"},{"slug":"instant-client-apps","draft":false,"title":"Create Instant Client Apps from C# .NET Web APIs","tags":["c#","f#","node.js","dart"],"date":"\/Date(1618963200000+0000)\/","content":"Generate working native client apps for your live ServiceStack services, in a variety of languages, instantly with our free managed service.\n\nThis tool enables your developers, and even your customers, to open a working example native application straight from the web to their favorite IDE.","url":"https://youtu.be/GTnuMhvUayg","wordCount":65,"lineCount":11,"group":"ss-ref","order":3},{"slug":"aws-ecs","draft":false,"title":"Deploy Docker .NET Apps to AWS ECS with GitHub Actions","tags":["github-actions","deployment","aws","ecs"],"date":"\/Date(1618963200000+0000)\/","content":"ServiceStack projects, enabling the configuration for building, testing, and deploying to a cost-efficient AWS ECS setup. \nBy utilizing this approach, Docker Apps can be deployed on a single instance, automatically configured behind an NGINX \nproxy with Let's Encrypt SSL support. \n\nFollowing this tutorial will streamline your workflow of your ServiceStack projects.","url":"https://youtu.be/Eh4tvLN8i8g","wordCount":68,"lineCount":13,"group":"actions","order":5},{"slug":"aws-lambda","draft":false,"title":"Run ServiceStack .NET Apps in AWS Lambda Containers","tags":["github-actions","deployment","aws","lambda"],"date":"\/Date(1612224000000+0000)\/","content":"This walkthrough demonstrates deploying a ServiceStack application to AWS Lambda using Docker containers through GitHub Actions. \nBy following the guide, you'll learn the process of automating deployment and leveraging the advantages of containerization. \n\nThis approach simplifies the deployment process of your ServiceStack applications.\n\n - [Learn More](https://docs.servicestack.net/templates-aws)","url":"https://youtu.be/8mpGNTsSlvE","wordCount":64,"lineCount":13,"group":"actions","order":6}],"posts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","image":"https://images.unsplash.com/photo-1639262498805-17c7dc422d37?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://servicestack.net/posts/npx-get-dtos","wordCount":690,"lineCount":125},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://servicestack.net/posts/swift6-upgrade","wordCount":479,"lineCount":123},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1593486544625-13ef2368e43a?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://servicestack.net/posts/typed-openai-chat-ollama-apis","wordCount":1070,"lineCount":409},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1496368077930-c1e31b4e5b44?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://servicestack.net/posts/apikey-credentials-auth","wordCount":731,"lineCount":143},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","image":"https://images.unsplash.com/photo-1494961104209-3c223057bd26?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://servicestack.net/posts/kamal-deployments","wordCount":1119,"lineCount":133},{"slug":"ai-server","draft":false,"title":"Self Hosted AI Server for LLMs, Ollama, Comfy UI & FFmpeg","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","image":"https://images.unsplash.com/photo-1642516303080-431f6681f864?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://servicestack.net/posts/ai-server","wordCount":1728,"lineCount":361},{"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":"Demis Bellot","tags":["razor","ssg","markdown"],"date":"\/Date(1727827200000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-podcasts","wordCount":1021,"lineCount":167},{"slug":"scalable-sqlite","draft":false,"title":"Scalable Server SQLite Apps","summary":"Learn how to build concurrent, safe scalable SQLite .NET Apps in C#","image":"https://images.unsplash.com/photo-1558494949-ef010cbdcc31?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727308800000-0000)\/","url":"https://servicestack.net/posts/scalable-sqlite","wordCount":2187,"lineCount":363},{"slug":"sqlite-request-logs","draft":false,"title":"SQLite C# Request Logs","summary":"Maintain C# Request Log History in rolling Monthly SQLite databases","image":"https://images.unsplash.com/photo-1535350356005-fd52b3b524fb?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["sqlite",".net8"],"date":"\/Date(1727136000000-0000)\/","url":"https://servicestack.net/posts/sqlite-request-logs","wordCount":494,"lineCount":104},{"slug":"background-jobs","draft":false,"title":"Simple C# Background Jobs & Recurring Tasks for .NET 8","summary":"Introducing C# Background Jobs for managing background jobs and scheduled tasks","image":"https://images.unsplash.com/photo-1716191300020-b52dec5b70a8?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["workers","commands",".net8"],"date":"\/Date(1726012800000-0000)\/","url":"https://servicestack.net/posts/background-jobs","wordCount":4365,"lineCount":917},{"slug":"commands-feature","draft":false,"title":"Utilize C# Commands to build more robust and observable systems","summary":"Learn how to build testable, robust observable systems with the new Commands Feature","image":"https://images.unsplash.com/photo-1524741978410-350ba91a70d7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["commands",".net8"],"date":"\/Date(1719964800000-0000)\/","url":"https://servicestack.net/posts/commands-feature","wordCount":2422,"lineCount":507},{"slug":"simple-auth-microservices","draft":false,"title":"Simple Auth Story for .NET 8 C# Microservices","summary":"A Simple Auth configuration using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","image":"https://images.unsplash.com/photo-1529265895721-65945a176cff?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://servicestack.net/posts/simple-auth-microservices","wordCount":1154,"lineCount":270},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 C# APIs","summary":"Using C# API Keys for simplified fine-grained access control in ServiceStack .NET 8 APIs","image":"https://images.unsplash.com/photo-1693251952958-0f0f40882fe7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["apikeys",".net8","identity-auth","rdbms"],"date":"\/Date(1719792000000-0000)\/","url":"https://servicestack.net/posts/apikeys","wordCount":1998,"lineCount":394},{"slug":"rhel9-cryptography","draft":false,"title":"Support for RHEL 9's hardened cryptography policy","summary":"Regenerate your License Key to support RedHat Enterprise Linux 9 Default Cryptography Policy","image":"https://images.unsplash.com/photo-1564296787121-726de5b37bf1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":[".net8","servicestack","licensing"],"date":"\/Date(1719705600000-0000)\/","url":"https://servicestack.net/posts/rhel9-cryptography","wordCount":481,"lineCount":58},{"slug":"redis-outputcache","draft":false,"title":"Using ASP.NET Core Output Caching","summary":"How to use ASP.NET Core Output Caching to cache the response of a ServiceStack Service using ServiceStack.Redis","image":"https://images.unsplash.com/photo-1590247813693-5541d1c609fd?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["caching",".net8","redis"],"date":"\/Date(1717545600000-0000)\/","url":"https://servicestack.net/posts/redis-outputcache","wordCount":1089,"lineCount":233},{"slug":"asp-rate-limiter-middleware","draft":false,"title":"Using ASP.NET Core Rate Limiter Middleware","summary":"Learn how to use the new Rate Limiter Middleware in ServiceStack to protect your APIs from abuse.","image":"https://images.unsplash.com/photo-1527710200112-665192dc1c22?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":[".net8","auth","middleware"],"date":"\/Date(1712534400000-0000)\/","url":"https://servicestack.net/posts/asp-rate-limiter-middleware","wordCount":1348,"lineCount":218},{"slug":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Explore the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","image":"https://servicestack.net/img/posts/kotlin-compose-multiplatform/compose-multiplatform.webp","author":"Demis Bellot","tags":["kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://servicestack.net/posts/kotlin-compose-multiplatform","wordCount":1026,"lineCount":176},{"slug":"net8-react-spa-template","draft":false,"title":"New React SPA Template","summary":"Explore the new enhanced Vite TypeScript React SPA template for .NET 8","image":"https://images.unsplash.com/photo-1534972195531-d756b9bfa9f2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["react",".net8","autoquery","admin"],"date":"\/Date(1709683200000-0000)\/","url":"https://servicestack.net/posts/net8-react-spa-template","wordCount":2337,"lineCount":313},{"slug":"net8-vue-spa-template","draft":false,"title":"New Vue SPA Template","summary":"Introducing the enhanced Vite TypeScript Vue SPA template for .NET 8","image":"https://images.unsplash.com/photo-1590212151175-e58edd96185b?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue",".net8","autoquery","admin"],"date":"\/Date(1709596800000-0000)\/","url":"https://servicestack.net/posts/net8-vue-spa-template","wordCount":1874,"lineCount":333},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Vite Press Plugin for Vite Vue & React Apps","image":"https://images.unsplash.com/photo-1524668951403-d44b28200ce0?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://servicestack.net/posts/vite-press-plugin","wordCount":2093,"lineCount":538},{"slug":"blazor-8-admin","draft":false,"title":"New Blazor Interactive Auto Template with Custom Admin UIs","summary":"Discover how to use ServiceStack.Blazor components to quickly create customizable and professional-looking admin pages in a Blazor application","image":"https://images.unsplash.com/photo-1535478044878-3ed83d5456ef?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["blazor",".net8","admin"],"date":"\/Date(1708905600000-0000)\/","url":"https://servicestack.net/posts/blazor-8-admin","wordCount":1429,"lineCount":218},{"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":"Demis Bellot","tags":[".net8","auth","jwt"],"date":"\/Date(1708560000000-0000)\/","url":"https://servicestack.net/posts/jwt-identity-auth","wordCount":1084,"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":"Demis Bellot","tags":[".net8","identity-auth","admin-ui"],"date":"\/Date(1708473600000-0000)\/","url":"https://servicestack.net/posts/identity-auth-admin-ui","wordCount":647,"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":"Demis Bellot","tags":[".net8","json","api"],"date":"\/Date(1708387200000-0000)\/","url":"https://servicestack.net/posts/system-text-json-apis","wordCount":943,"lineCount":212},{"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":"Darren Reid","tags":["openapi",".net8"],"date":"\/Date(1708300800000-0000)\/","url":"https://servicestack.net/posts/openapi-v3","wordCount":1195,"lineCount":199},{"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":"Demis Bellot","tags":[".net8","api"],"date":"\/Date(1707264000000-0000)\/","url":"https://servicestack.net/posts/servicestack-endpoint-routing","wordCount":3178,"lineCount":619},{"slug":"identity-migration","draft":false,"title":"Migrating to ASP.NET Core Identity for Authentication","summary":"A walkthrough of migrating our BlazorDiffusion example application over to ASP.NET Core Identity for authentication","image":"https://images.unsplash.com/photo-1596563910641-86f6aebaab9a?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["auth","identity-auth"],"date":"\/Date(1707177600000-0000)\/","url":"https://servicestack.net/posts/identity-migration","wordCount":3575,"lineCount":534},{"slug":"net8-docker-containers","draft":false,"title":"Docker Containerization in .NET 8","summary":".NET 8 Docker Containers and GitHub Actions Deployments in new Project Templates","image":"https://images.unsplash.com/photo-1609884557151-1e356d32900c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["dotnet","github-actions","hosting","devops"],"date":"\/Date(1702339200000-0000)\/","url":"https://servicestack.net/posts/net8-docker-containers","wordCount":2595,"lineCount":352},{"slug":"php-typed-apis","draft":false,"title":"PHP typed client DTOs for .NET APIs","summary":"Announcing 1st class end-to-end typed support for calling .NET APIs with PHP","image":"https://images.unsplash.com/photo-1599507593548-0187ac4043c6?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["php","servicestack","service-reference"],"date":"\/Date(1701216000000-0000)\/","url":"https://servicestack.net/posts/php-typed-apis","wordCount":1455,"lineCount":239},{"slug":"net8-identity-auth","draft":false,"title":"ASP.NET Core Identity Auth in .NET 8","summary":"ServiceStack has switched to ASP.NET Core Identity Auth in new .NET 8 Blazor, Razor and MVC Project Templates","image":"https://images.unsplash.com/photo-1635602739175-bab409a6e94c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","identity-auth","templates"],"date":"\/Date(1701129600000-0000)\/","url":"https://servicestack.net/posts/net8-identity-auth","wordCount":3717,"lineCount":707},{"slug":"net8-best-blazor","draft":false,"title":".NET 8's Best Blazor is not Blazor as we know it","summary":"We explore the exciting new potential of Blazor in .NET 8 to develop fast, interactive Web Apps without compromise","image":"https://images.unsplash.com/photo-1482686115713-0fbcaced6e28?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","blazor","servicestack"],"date":"\/Date(1700611200000-0000)\/","url":"https://servicestack.net/posts/net8-best-blazor","wordCount":3748,"lineCount":507},{"slug":"net8-blazor-template","draft":false,"title":"New .NET 8 Blazor Tailwind Template","summary":"The new Blazor for .NET 8 template streamlines web UI development in C#.","image":"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","blazor","templates"],"date":"\/Date(1700438400000-0000)\/","url":"https://servicestack.net/posts/net8-blazor-template","wordCount":1167,"lineCount":97},{"slug":"servicestack-ai","draft":false,"title":"ServiceStack.AI - Chat GPT and Managed Cloud Providers","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1655393001768-d946c97d6fd1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695859200000-0000)\/","url":"https://servicestack.net/posts/servicestack-ai","wordCount":4037,"lineCount":886},{"slug":"typescript-typechat-examples","draft":false,"title":"All of TypeScript's TypeChat Examples in .NET","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1522542550221-31fd19575a2d?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695686400000-0000)\/","url":"https://servicestack.net/posts/typescript-typechat-examples","wordCount":933,"lineCount":161},{"slug":"voice-activated-typechat-coffeeshop","draft":false,"title":"Creating a Voice Activated CoffeeShop in .NET","summary":"Guide to implementing Voice Transcriptions and TypeChat GPT in .NET","image":"https://images.unsplash.com/photo-1678483789107-0029c61fdcca?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1695168000000-0000)\/","url":"https://servicestack.net/posts/voice-activated-typechat-coffeeshop","wordCount":5927,"lineCount":1212},{"slug":"building-typechat-coffeeshop-modelling","draft":false,"title":"Modelling TypeChat's CoffeeShop in .NET","summary":"We look at Modelling TypeChat's CoffeeShop App","image":"https://images.unsplash.com/photo-1501516069922-a9982bd6f3bd?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["autoquery","c#","dev","servicestack"],"date":"\/Date(1694476800000-0000)\/","url":"https://servicestack.net/posts/building-typechat-coffeeshop-modelling","wordCount":7146,"lineCount":1356},{"slug":"cloud-value-between-architectures","draft":false,"title":"Should .NET Apps switch to ARM?","summary":"Evaluating the cost and performance of ARM vs x86 in AWS, Azure, and Hetzner","image":"https://images.unsplash.com/photo-1587845323226-bad89242c735?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","hosting","arm","performance"],"date":"\/Date(1693180800000-0000)\/","url":"https://servicestack.net/posts/cloud-value-between-architectures","wordCount":3263,"lineCount":394},{"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":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1692748800000-0000)\/","url":"https://servicestack.net/posts/razor-ssg-new-blog-features","wordCount":1288,"lineCount":337},{"slug":"jsonl-format","draft":false,"title":"Exploring the new streamable JSON Lines Format","summary":"A dive into the JSON Lines format and how to use it in ServiceStack","image":"https://images.unsplash.com/photo-1687042268541-5cc60ad9d3de?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["serialization","servicestack","jsonl"],"date":"\/Date(1692057600000-0000)\/","url":"https://servicestack.net/posts/jsonl-format","wordCount":1656,"lineCount":217},{"slug":"kubernetes_not_required","draft":false,"title":"Using GitHub for Auto Deployments - Kubernetes Not Required","summary":"A cost-effective and straightforward web app deployment pattern using GitHub and a single Linux server","image":"https://images.unsplash.com/photo-1667372459510-55b5e2087cd0?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["github-actions","devops","hosting"],"date":"\/Date(1691452800000-0000)\/","url":"https://servicestack.net/posts/kubernetes_not_required","wordCount":5290,"lineCount":693},{"slug":"bulk-insert-performance","draft":false,"title":"Which RDBMS has the fastest .NET Bulk Insert implementation?","summary":"Measuring the different performance of RDBMS Bulk Insert implementations","image":"https://images.unsplash.com/photo-1517026575980-3e1e2dedeab4?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["db","dev","dotnet"],"date":"\/Date(1690761600000-0000)\/","url":"https://servicestack.net/posts/bulk-insert-performance","wordCount":6965,"lineCount":1070},{"slug":"postgres-mysql-sqlserver-on-apple-silicon","draft":false,"title":"Install PostgreSQL, MySql and SQL Server on Apple Silicon","summary":"Easiest way to install PostgreSQL, MySql and SQL Server on macOS running Apple Silicon's M2","image":"https://images.unsplash.com/photo-1517663404855-6f96c7aa20e2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["db","dev"],"date":"\/Date(1690243200000-0000)\/","url":"https://servicestack.net/posts/postgres-mysql-sqlserver-on-apple-silicon","wordCount":1671,"lineCount":328},{"slug":"semantic-kernel-gptmeetngs","draft":false,"title":"Trying Microsoft's Semantic Kernel","summary":"Incorporating the Semantic Kernel into our GPT Meeting Agent gives developers more flexibility when working with LLMs","image":"https://images.unsplash.com/photo-1579548122080-c35fd6820ecb?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["dotnet","ai","semantic-kernel","gpt"],"date":"\/Date(1689638400000-0000)\/","url":"https://servicestack.net/posts/semantic-kernel-gptmeetngs","wordCount":833,"lineCount":54},{"slug":"razor-press","draft":false,"title":"Introducing Razor Press","summary":"Markdown & Razor Pages Static Site Generator for beautiful fast Content & Documentation","image":"https://images.unsplash.com/photo-1681301968680-fe46a0cd51be?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1689552000000-0000)\/","url":"https://servicestack.net/posts/razor-press","wordCount":957,"lineCount":164},{"slug":"using-json-patch","draft":false,"title":"JSON Patch secrets into appsettings.json","summary":"Simplify managing App secrets by JSON patching them into your appsettings.json with during deployments","image":"https://images.unsplash.com/photo-1563089145-599997674d42?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["devops","github-actions"],"date":"\/Date(1689033600000-0000)\/","url":"https://servicestack.net/posts/using-json-patch","wordCount":670,"lineCount":135},{"slug":"new-razor-ssg-docs","draft":false,"title":"New Razor SSG generated docs.servicestack.net","summary":"The new docs.servicestack.net website is now generated with Razor SSG - now with Dark Mode!","image":"https://images.unsplash.com/photo-1526243741027-444d633d7365?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","ssg","docs"],"date":"\/Date(1688947200000-0000)\/","url":"https://servicestack.net/posts/new-razor-ssg-docs","wordCount":1046,"lineCount":130},{"slug":"vue-stable-diffusion","draft":false,"title":"Vue Stable Diffusion","summary":"Rewriting Blazor Diffusion image generation & album catalog in Vue & Razor SSG","image":"https://images.unsplash.com/photo-1573490647695-2892d0bf89e7?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue","tailwind"],"date":"\/Date(1686787200000-0000)\/","url":"https://servicestack.net/posts/vue-stable-diffusion","wordCount":1057,"lineCount":209},{"slug":"admin-uis","draft":false,"title":"Build Beautiful Admin UIs, Fast","summary":"Taking a look at the new features in Vue Razor Pages template to build Admin UIs, Fast","image":"https://images.unsplash.com/photo-1667906962043-a3e82dea23a3?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["vue","tailwind","admin"],"date":"\/Date(1686614400000-0000)\/","url":"https://servicestack.net/posts/admin-uis","wordCount":1854,"lineCount":352},{"slug":"creatorkit","draft":false,"title":"Introducing CreatorKit","summary":"Exploring CreatorKit - an OSS Self-Hosting alternative to Mailchimp and Disqus","image":"https://images.unsplash.com/photo-1493723843671-1d655e66ac1c?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["creatorkit","marketing","publishing"],"date":"\/Date(1686182400000-0000)\/","url":"https://servicestack.net/posts/creatorkit","wordCount":1348,"lineCount":209},{"slug":"chat-gpt-agents","draft":false,"title":"Creating ChatGPT Agents to call System APIs","summary":"A walkthrough of how to enable Large Language Model 'Agents' with access to your own ServiceStack APIs","image":"https://images.unsplash.com/photo-1675271591211-126ad94e495d?crop=entropy&fit=crop&h=1000&w=2000","author":"Darren Reid","tags":["servicestack","gpt","ai"],"date":"\/Date(1683849600000-0000)\/","url":"https://servicestack.net/posts/chat-gpt-agents","wordCount":1951,"lineCount":273},{"slug":"autoquery-xkcd","draft":false,"title":"Bringing xkcd static dataset to life with AutoQuery","summary":"Unsiloing data quickly with AutoQuery to make your datasets available from queryable Web APIs","image":"./img/posts/autoquery-xkcd/drawing-xkcd-upscaled.jpg","author":"Darren Reid","tags":["autoquery","db","dev","vue"],"date":"\/Date(1681516800000-0000)\/","url":"https://servicestack.net/posts/autoquery-xkcd","wordCount":3308,"lineCount":551},{"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":"Demis Bellot","tags":["razor","markdown","blog","dev"],"date":"\/Date(1680134400000-0000)\/","url":"https://servicestack.net/posts/razor-ssg","wordCount":3035,"lineCount":607},{"slug":"new_razor_ssg_website","draft":false,"title":"New Razor SSG generated servicestack.net","summary":"Celebrating 150M Downloads with a new Razor SSG generated Website","image":"https://images.unsplash.com/photo-1475669698648-2f144fcaaeb1?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["razor","ssg","website"],"date":"\/Date(1680048000000-0000)\/","url":"https://servicestack.net/posts/new_razor_ssg_website","wordCount":561,"lineCount":77},{"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":"Demis Bellot","tags":["js","dev"],"date":"\/Date(1675209600000-0000)\/","url":"https://servicestack.net/posts/javascript","wordCount":3348,"lineCount":676},{"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":"Demis Bellot","tags":["c#","dev"],"date":"\/Date(1673395200000-0000)\/","url":"https://servicestack.net/posts/rider","wordCount":472,"lineCount":77},{"slug":"prerendering","draft":false,"title":"Prerendering Razor Pages","summary":"Improving Blog Performance with Prerendering","image":"https://images.unsplash.com/photo-1522526886914-6e8d4fd91399?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["c#","dev","markdown"],"date":"\/Date(1673395200000-0000)\/","url":"https://servicestack.net/posts/prerendering","wordCount":1160,"lineCount":235},{"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":"Demis Bellot","tags":["c#","dev"],"date":"\/Date(1673308800000-0000)\/","url":"https://servicestack.net/posts/vs","wordCount":1325,"lineCount":76},{"slug":"jamstacks_hosting","draft":false,"title":"Jamstack Hosting Costs @ $.40 /mo","summary":"Exploring cost & scalability benefits of hybrid CDN & .NET Apps","image":"https://images.unsplash.com/photo-1506399309177-3b43e99fead2?crop=entropy&fit=crop&h=1000&w=2000","author":"Demis Bellot","tags":["dev","hosting","devops"],"date":"\/Date(1672617600000-0000)\/","url":"https://servicestack.net/posts/jamstacks_hosting","wordCount":3054,"lineCount":83},{"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":"Darren Reid","tags":["github-actions","devops","hosting"],"date":"\/Date(1672531200000-0000)\/","url":"https://servicestack.net/posts/deploy","wordCount":724,"lineCount":107},{"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":"Darren Reid","tags":["dev","hosting","devops"],"date":"\/Date(1662422400000-0000)\/","url":"https://servicestack.net/posts/hetzner-cloud","wordCount":2699,"lineCount":229},{"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":"Darren Reid","tags":["dev","docs"],"date":"\/Date(1636329600000-0000)\/","url":"https://servicestack.net/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":"Darren Reid","tags":["docs","markdown"],"date":"\/Date(1635724800000-0000)\/","url":"https://servicestack.net/posts/jekyll-to-vitepress","wordCount":2478,"lineCount":355}],"podcasts":[{"slug":"npx-get-dtos","draft":false,"title":"DTOs in all languages downloadable without .NET","summary":"ServiceStack Typed DTOs for all languages can now be downloaded and uploaded without .NET installed","tags":["api","service-reference","js"],"date":"\/Date(1733270400000-0000)\/","url":"https://media.servicestack.com/podcasts/npx-get-dtos.mp3","wordCount":130,"lineCount":21},{"slug":"swift6-upgrade","draft":false,"title":"ServiceStack.Swift client library rewritten for Swift 6","summary":"ServiceStack.Swift has been rewritten to take advantage of Swift 6 features, now dependency-free.","tags":["api","service-reference","swift"],"date":"\/Date(1733184000000-0000)\/","url":"https://media.servicestack.com/podcasts/swift6-upgrade.mp3","wordCount":105,"lineCount":20},{"slug":"typed-openai-chat-ollama-apis","draft":false,"title":"Typed Open AI Chat & Ollama APIs in 11 Languages","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1733097600000-0000)\/","url":"https://media.servicestack.com/podcasts/typed-openai-chat-ollama-apis.mp3","wordCount":127,"lineCount":20},{"slug":"apikey-credentials-auth","draft":false,"title":"Simple API Keys Credentials Provider for .NET 8 C# Microservices","summary":"Improved Simple Auth using API Keys and Admin UI that's ideal for .NET 8 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1732752000000-0000)\/","url":"https://media.servicestack.com/podcasts/apikey-credentials-auth.mp3","wordCount":123,"lineCount":21},{"slug":"kamal-deployments","draft":false,"title":".NET 8 Templates migrated to use Kamal for deployments","summary":"All Identity Auth templates now use Kamal for deployments, simplifying the process of deploying .NET Apps to any Linux server.","tags":["github-actions","docker","devops"],"date":"\/Date(1732665600000-0000)\/","url":"https://media.servicestack.com/podcasts/kamal-deployments.mp3","wordCount":134,"lineCount":25},{"slug":"ai-server","draft":false,"title":"Introducing AI Server","summary":"Introducing AI Server - an OSS Self Hosted Gateway for running LLM, Ollama, Media and Comfy UI APIs","tags":["ai-server","ai","gpt","service-reference","c#","js"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/ai-server.mp3","wordCount":123,"lineCount":27},{"slug":"v8-5-release","draft":false,"title":"ServiceStack v8.5 Release","summary":"The latest features in ServiceStack v8.5 covering release of AI Server and Kamal Deployments and more!","tags":["release","ai-server","jobs","api"],"date":"\/Date(1732579200000-0000)\/","url":"https://media.servicestack.com/podcasts/v8-5-release.mp3","wordCount":350,"lineCount":87},{"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 C# 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":163,"lineCount":29},{"slug":"background-jobs","draft":false,"title":"C# Background Jobs","summary":"Taking a deep dive into C# 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":200,"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":226,"lineCount":52},{"slug":"commands-feature","draft":false,"title":"Commands Feature","summary":"Looking into how to utilize C# 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":155,"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 C# Microservices","tags":[".net8","auth","apikeys"],"date":"\/Date(1719878400000-0000)\/","url":"https://media.servicestack.com/podcasts/simple-auth-microservices.mp3","wordCount":172,"lineCount":36},{"slug":"apikeys","draft":false,"title":"Using API Keys to secure .NET 8 APIs","summary":"Exploring the new C# 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":182,"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":"kotlin-compose-multiplatform","draft":false,"title":"Kotlin Compose Multiplatform with end-to-end typed Kotlin & C# APIs","summary":"Talking about the exciting new JetBrains Technology for creating native Mobile, Desktop and Web Apps","tags":["template","kotlin","ios","android"],"date":"\/Date(1710288000000-0000)\/","url":"https://media.servicestack.com/podcasts/kotlin-compose-multiplatform.mp3","wordCount":179,"lineCount":44},{"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":164,"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":179,"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":238,"lineCount":54},{"slug":"vite-press-plugin","draft":false,"title":"Vite Press Plugin","summary":"Introducing the Universal Vite Press Plugin for Vite Vue & React Apps and its unique compatibility with .NET 8 Apps utilizing Markdig","tags":["template","docs","markdown"],"date":"\/Date(1709510400000-0000)\/","url":"https://media.servicestack.com/podcasts/vite-press-plugin.mp3","wordCount":212,"lineCount":53},{"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":256,"lineCount":63}]} \ No newline at end of file diff --git a/mjs/dtos.mjs b/mjs/dtos.mjs index c1619291..03ad0f85 100644 --- a/mjs/dtos.mjs +++ b/mjs/dtos.mjs @@ -577,7 +577,7 @@ export class Hello { /** @type {string} */ name; getTypeName() { return 'Hello' } - getMethod() { return 'POST' } + getMethod() { return 'GET' } createResponse() { return new Hello() } } export class PaymentsResponse { diff --git a/podcasts.html b/podcasts.html index 0b9c51bc..28d2f1a7 100644 --- a/podcasts.html +++ b/podcasts.html @@ -183,425 +183,425 @@

diff --git a/podcasts/ai-server.html b/podcasts/ai-server.html index 5d2b1564..c80288d3 100644 --- a/podcasts/ai-server.html +++ b/podcasts/ai-server.html @@ -183,425 +183,425 @@

diff --git a/podcasts/apikey-credentials-auth.html b/podcasts/apikey-credentials-auth.html index 3b71938b..583ec151 100644 --- a/podcasts/apikey-credentials-auth.html +++ b/podcasts/apikey-credentials-auth.html @@ -183,425 +183,425 @@

diff --git a/podcasts/apikeys.html b/podcasts/apikeys.html index 067d9fbf..6f0625e6 100644 --- a/podcasts/apikeys.html +++ b/podcasts/apikeys.html @@ -183,425 +183,425 @@

diff --git a/podcasts/asp-rate-limiter-middleware.html b/podcasts/asp-rate-limiter-middleware.html index a48d90e6..74b970f6 100644 --- a/podcasts/asp-rate-limiter-middleware.html +++ b/podcasts/asp-rate-limiter-middleware.html @@ -183,425 +183,425 @@

diff --git a/podcasts/background-jobs.html b/podcasts/background-jobs.html index e4fb8828..cde084b2 100644 --- a/podcasts/background-jobs.html +++ b/podcasts/background-jobs.html @@ -183,425 +183,425 @@

diff --git a/podcasts/commands-feature.html b/podcasts/commands-feature.html index b6743cb1..dd69a4d3 100644 --- a/podcasts/commands-feature.html +++ b/podcasts/commands-feature.html @@ -183,425 +183,425 @@

diff --git a/podcasts/feed.xml b/podcasts/feed.xml index 451e4f66..f5ccfdb7 100644 --- a/podcasts/feed.xml +++ b/podcasts/feed.xml @@ -10,7 +10,7 @@ razor-ssg ServiceStack - Tue, 10 Dec 2024 10:45:27 GMT + Tue, 10 Dec 2024 11:09:40 GMT team@servicestack.net (Team ServiceStack) team@servicestack.net (Team ServiceStack) diff --git a/podcasts/kamal-deployments.html b/podcasts/kamal-deployments.html index cafe1af8..fda4afa9 100644 --- a/podcasts/kamal-deployments.html +++ b/podcasts/kamal-deployments.html @@ -183,425 +183,425 @@

diff --git a/podcasts/kotlin-compose-multiplatform.html b/podcasts/kotlin-compose-multiplatform.html index b979ee27..1484f337 100644 --- a/podcasts/kotlin-compose-multiplatform.html +++ b/podcasts/kotlin-compose-multiplatform.html @@ -183,425 +183,425 @@

diff --git a/podcasts/net8-react-spa-template.html b/podcasts/net8-react-spa-template.html index d7deb933..8dfeb0bf 100644 --- a/podcasts/net8-react-spa-template.html +++ b/podcasts/net8-react-spa-template.html @@ -183,425 +183,425 @@

diff --git a/podcasts/net8-vue-spa-template.html b/podcasts/net8-vue-spa-template.html index 52d7a113..78fe2f84 100644 --- a/podcasts/net8-vue-spa-template.html +++ b/podcasts/net8-vue-spa-template.html @@ -183,425 +183,425 @@

diff --git a/podcasts/npx-get-dtos.html b/podcasts/npx-get-dtos.html index 30495a42..8954ee6d 100644 --- a/podcasts/npx-get-dtos.html +++ b/podcasts/npx-get-dtos.html @@ -183,425 +183,425 @@

diff --git a/podcasts/razor-ssg-podcasts.html b/podcasts/razor-ssg-podcasts.html index edd03aa3..488c7f6a 100644 --- a/podcasts/razor-ssg-podcasts.html +++ b/podcasts/razor-ssg-podcasts.html @@ -183,425 +183,425 @@

diff --git a/podcasts/redis-outputcache.html b/podcasts/redis-outputcache.html index c445c366..d619c0a7 100644 --- a/podcasts/redis-outputcache.html +++ b/podcasts/redis-outputcache.html @@ -183,425 +183,425 @@

diff --git a/podcasts/scalable-sqlite.html b/podcasts/scalable-sqlite.html index 5bd6bf8c..9801a9e3 100644 --- a/podcasts/scalable-sqlite.html +++ b/podcasts/scalable-sqlite.html @@ -183,425 +183,425 @@

diff --git a/podcasts/simple-auth-microservices.html b/podcasts/simple-auth-microservices.html index f7927e89..2c5af3c7 100644 --- a/podcasts/simple-auth-microservices.html +++ b/podcasts/simple-auth-microservices.html @@ -183,425 +183,425 @@

diff --git a/podcasts/sqlite-request-logs.html b/podcasts/sqlite-request-logs.html index ba4e0557..7bb20c6e 100644 --- a/podcasts/sqlite-request-logs.html +++ b/podcasts/sqlite-request-logs.html @@ -183,425 +183,425 @@

diff --git a/podcasts/swift6-upgrade.html b/podcasts/swift6-upgrade.html index 7b13b3f4..628e06ad 100644 --- a/podcasts/swift6-upgrade.html +++ b/podcasts/swift6-upgrade.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/admin-ui.html b/podcasts/tagged/admin-ui.html index f4b824e3..31bfd00f 100644 --- a/podcasts/tagged/admin-ui.html +++ b/podcasts/tagged/admin-ui.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/admin.html b/podcasts/tagged/admin.html index 1ed40f29..9f8728dc 100644 --- a/podcasts/tagged/admin.html +++ b/podcasts/tagged/admin.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/ai-server.html b/podcasts/tagged/ai-server.html index 0adec0d1..5d560433 100644 --- a/podcasts/tagged/ai-server.html +++ b/podcasts/tagged/ai-server.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/ai.html b/podcasts/tagged/ai.html index dea5cc7f..f80d6721 100644 --- a/podcasts/tagged/ai.html +++ b/podcasts/tagged/ai.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/android.html b/podcasts/tagged/android.html index 9bec4a2b..0bb3ae3d 100644 --- a/podcasts/tagged/android.html +++ b/podcasts/tagged/android.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/api.html b/podcasts/tagged/api.html index 5b847817..19d5a91e 100644 --- a/podcasts/tagged/api.html +++ b/podcasts/tagged/api.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/apikeys.html b/podcasts/tagged/apikeys.html index c049173a..064b29b7 100644 --- a/podcasts/tagged/apikeys.html +++ b/podcasts/tagged/apikeys.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/app.html b/podcasts/tagged/app.html index 668e8674..138782ef 100644 --- a/podcasts/tagged/app.html +++ b/podcasts/tagged/app.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/arm.html b/podcasts/tagged/arm.html index 12a44970..01f032d4 100644 --- a/podcasts/tagged/arm.html +++ b/podcasts/tagged/arm.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/auth.html b/podcasts/tagged/auth.html index bb999a91..9812f7e8 100644 --- a/podcasts/tagged/auth.html +++ b/podcasts/tagged/auth.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/autoquery.html b/podcasts/tagged/autoquery.html index 1e804c17..20f5b0bf 100644 --- a/podcasts/tagged/autoquery.html +++ b/podcasts/tagged/autoquery.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/blazor.html b/podcasts/tagged/blazor.html index 76a71e6a..1dbce2a4 100644 --- a/podcasts/tagged/blazor.html +++ b/podcasts/tagged/blazor.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/caching.html b/podcasts/tagged/caching.html index 00d37eb4..8e390b6a 100644 --- a/podcasts/tagged/caching.html +++ b/podcasts/tagged/caching.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/commands.html b/podcasts/tagged/commands.html index b0966a9d..b9cb26e1 100644 --- a/podcasts/tagged/commands.html +++ b/podcasts/tagged/commands.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/creatorkit.html b/podcasts/tagged/creatorkit.html index 663e3dac..b09c8d11 100644 --- a/podcasts/tagged/creatorkit.html +++ b/podcasts/tagged/creatorkit.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/csharp.html b/podcasts/tagged/csharp.html index 50fdb749..177c7b73 100644 --- a/podcasts/tagged/csharp.html +++ b/podcasts/tagged/csharp.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/design.html b/podcasts/tagged/design.html index d7ece8bc..4fa9f40c 100644 --- a/podcasts/tagged/design.html +++ b/podcasts/tagged/design.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/dev.html b/podcasts/tagged/dev.html index e550ddb2..e5fb33f3 100644 --- a/podcasts/tagged/dev.html +++ b/podcasts/tagged/dev.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/devops.html b/podcasts/tagged/devops.html index c3a76f5a..77f9dfbc 100644 --- a/podcasts/tagged/devops.html +++ b/podcasts/tagged/devops.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/docker.html b/podcasts/tagged/docker.html index ad9741f4..9fb2c1e1 100644 --- a/podcasts/tagged/docker.html +++ b/podcasts/tagged/docker.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/docs.html b/podcasts/tagged/docs.html index f86ea24a..961d8ec7 100644 --- a/podcasts/tagged/docs.html +++ b/podcasts/tagged/docs.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/github-actions.html b/podcasts/tagged/github-actions.html index f4b79114..e4b46b98 100644 --- a/podcasts/tagged/github-actions.html +++ b/podcasts/tagged/github-actions.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/gpt.html b/podcasts/tagged/gpt.html index 1e72fb42..52618593 100644 --- a/podcasts/tagged/gpt.html +++ b/podcasts/tagged/gpt.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/hosting.html b/podcasts/tagged/hosting.html index a9958929..3f87992b 100644 --- a/podcasts/tagged/hosting.html +++ b/podcasts/tagged/hosting.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/identity-auth.html b/podcasts/tagged/identity-auth.html index 1317391e..513d2716 100644 --- a/podcasts/tagged/identity-auth.html +++ b/podcasts/tagged/identity-auth.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/ioc.html b/podcasts/tagged/ioc.html index 44f71e3e..c6337949 100644 --- a/podcasts/tagged/ioc.html +++ b/podcasts/tagged/ioc.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/ios.html b/podcasts/tagged/ios.html index 43aa98fd..ecb26184 100644 --- a/podcasts/tagged/ios.html +++ b/podcasts/tagged/ios.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/jobs.html b/podcasts/tagged/jobs.html index f96aa917..70f2413e 100644 --- a/podcasts/tagged/jobs.html +++ b/podcasts/tagged/jobs.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/js.html b/podcasts/tagged/js.html index 6256336c..f28cacb1 100644 --- a/podcasts/tagged/js.html +++ b/podcasts/tagged/js.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/json.html b/podcasts/tagged/json.html index 93547467..9e6a2d83 100644 --- a/podcasts/tagged/json.html +++ b/podcasts/tagged/json.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/jsonl.html b/podcasts/tagged/jsonl.html index 2fa6e110..a83a0c70 100644 --- a/podcasts/tagged/jsonl.html +++ b/podcasts/tagged/jsonl.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/jwt.html b/podcasts/tagged/jwt.html index e90f54b8..f6ddeb25 100644 --- a/podcasts/tagged/jwt.html +++ b/podcasts/tagged/jwt.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/kotlin.html b/podcasts/tagged/kotlin.html index 43df8397..27aff9a2 100644 --- a/podcasts/tagged/kotlin.html +++ b/podcasts/tagged/kotlin.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/logging.html b/podcasts/tagged/logging.html index 3f1753e8..2908d220 100644 --- a/podcasts/tagged/logging.html +++ b/podcasts/tagged/logging.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/macos.html b/podcasts/tagged/macos.html index 7bd1b319..b413848c 100644 --- a/podcasts/tagged/macos.html +++ b/podcasts/tagged/macos.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/markdown.html b/podcasts/tagged/markdown.html index b69bc6f4..40f0414c 100644 --- a/podcasts/tagged/markdown.html +++ b/podcasts/tagged/markdown.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/middleware.html b/podcasts/tagged/middleware.html index 741ab0d9..51c440ec 100644 --- a/podcasts/tagged/middleware.html +++ b/podcasts/tagged/middleware.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/mvc.html b/podcasts/tagged/mvc.html index 1f6af994..d6f3f5e3 100644 --- a/podcasts/tagged/mvc.html +++ b/podcasts/tagged/mvc.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/net.html b/podcasts/tagged/net.html index 83fcf564..95dc6017 100644 --- a/podcasts/tagged/net.html +++ b/podcasts/tagged/net.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/net8.html b/podcasts/tagged/net8.html index a597d66a..18c571e6 100644 --- a/podcasts/tagged/net8.html +++ b/podcasts/tagged/net8.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/openapi.html b/podcasts/tagged/openapi.html index 542fed36..91893d9f 100644 --- a/podcasts/tagged/openapi.html +++ b/podcasts/tagged/openapi.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/performance.html b/podcasts/tagged/performance.html index 922c060e..040048e4 100644 --- a/podcasts/tagged/performance.html +++ b/podcasts/tagged/performance.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/php.html b/podcasts/tagged/php.html index 72d71853..a9f60cbc 100644 --- a/podcasts/tagged/php.html +++ b/podcasts/tagged/php.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/razor.html b/podcasts/tagged/razor.html index d77c2395..3bfc63c8 100644 --- a/podcasts/tagged/razor.html +++ b/podcasts/tagged/razor.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/rdbms.html b/podcasts/tagged/rdbms.html index 2b69810b..739804e0 100644 --- a/podcasts/tagged/rdbms.html +++ b/podcasts/tagged/rdbms.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/react.html b/podcasts/tagged/react.html index f5a360e6..83d5cccf 100644 --- a/podcasts/tagged/react.html +++ b/podcasts/tagged/react.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/redis.html b/podcasts/tagged/redis.html index f2690e7d..fd77ff17 100644 --- a/podcasts/tagged/redis.html +++ b/podcasts/tagged/redis.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/release.html b/podcasts/tagged/release.html index e9ea07f9..705ca42e 100644 --- a/podcasts/tagged/release.html +++ b/podcasts/tagged/release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/scalability.html b/podcasts/tagged/scalability.html index ce2982a3..ce7ad064 100644 --- a/podcasts/tagged/scalability.html +++ b/podcasts/tagged/scalability.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/service-reference.html b/podcasts/tagged/service-reference.html index 76ce57db..76188615 100644 --- a/podcasts/tagged/service-reference.html +++ b/podcasts/tagged/service-reference.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/sqlite.html b/podcasts/tagged/sqlite.html index 59f79c3a..d8e55969 100644 --- a/podcasts/tagged/sqlite.html +++ b/podcasts/tagged/sqlite.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/ssg.html b/podcasts/tagged/ssg.html index c2f0fb0e..bbf8d0fc 100644 --- a/podcasts/tagged/ssg.html +++ b/podcasts/tagged/ssg.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/swagger.html b/podcasts/tagged/swagger.html index c14c8383..d1422957 100644 --- a/podcasts/tagged/swagger.html +++ b/podcasts/tagged/swagger.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/swift.html b/podcasts/tagged/swift.html index f767ae91..5fb2d704 100644 --- a/podcasts/tagged/swift.html +++ b/podcasts/tagged/swift.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/tailwind.html b/podcasts/tagged/tailwind.html index ba2fdc8a..452c7765 100644 --- a/podcasts/tagged/tailwind.html +++ b/podcasts/tagged/tailwind.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/template.html b/podcasts/tagged/template.html index 09639ab1..0785c61c 100644 --- a/podcasts/tagged/template.html +++ b/podcasts/tagged/template.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/typescript.html b/podcasts/tagged/typescript.html index 04751621..d7d937b9 100644 --- a/podcasts/tagged/typescript.html +++ b/podcasts/tagged/typescript.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/vite.html b/podcasts/tagged/vite.html index e86fd867..408b6302 100644 --- a/podcasts/tagged/vite.html +++ b/podcasts/tagged/vite.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/vue.html b/podcasts/tagged/vue.html index 7e5f52de..483b12b8 100644 --- a/podcasts/tagged/vue.html +++ b/podcasts/tagged/vue.html @@ -183,425 +183,425 @@

diff --git a/podcasts/tagged/x.html b/podcasts/tagged/x.html index 2f5915e7..92acfe15 100644 --- a/podcasts/tagged/x.html +++ b/podcasts/tagged/x.html @@ -183,425 +183,425 @@

diff --git a/podcasts/typed-openai-chat-ollama-apis.html b/podcasts/typed-openai-chat-ollama-apis.html index de48aafc..eb017fe9 100644 --- a/podcasts/typed-openai-chat-ollama-apis.html +++ b/podcasts/typed-openai-chat-ollama-apis.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-0-release.html b/podcasts/v8-0-release.html index b101beff..adeb654d 100644 --- a/podcasts/v8-0-release.html +++ b/podcasts/v8-0-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-1-release.html b/podcasts/v8-1-release.html index 36449937..e8d446b8 100644 --- a/podcasts/v8-1-release.html +++ b/podcasts/v8-1-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-2-release.html b/podcasts/v8-2-release.html index 6ecc1041..55cb8c04 100644 --- a/podcasts/v8-2-release.html +++ b/podcasts/v8-2-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-3-release.html b/podcasts/v8-3-release.html index e773728d..574b676b 100644 --- a/podcasts/v8-3-release.html +++ b/podcasts/v8-3-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-4-release.html b/podcasts/v8-4-release.html index 7bd2fadf..0e4762d2 100644 --- a/podcasts/v8-4-release.html +++ b/podcasts/v8-4-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/v8-5-release.html b/podcasts/v8-5-release.html index b5b6c558..052f0cf2 100644 --- a/podcasts/v8-5-release.html +++ b/podcasts/v8-5-release.html @@ -183,425 +183,425 @@

diff --git a/podcasts/vite-press-plugin.html b/podcasts/vite-press-plugin.html index 9f2ab482..dbb0908d 100644 --- a/podcasts/vite-press-plugin.html +++ b/podcasts/vite-press-plugin.html @@ -183,425 +183,425 @@

diff --git a/podcasts/year/2023.html b/podcasts/year/2023.html index 31a3e000..7ea29dcf 100644 --- a/podcasts/year/2023.html +++ b/podcasts/year/2023.html @@ -183,425 +183,425 @@

diff --git a/podcasts/year/2024.html b/podcasts/year/2024.html index 75155eec..945d13f8 100644 --- a/podcasts/year/2024.html +++ b/podcasts/year/2024.html @@ -183,425 +183,425 @@