diff --git a/MyApp/_pages/ormlite/install-postgres-mysql-sqlserver.md b/MyApp/_pages/ormlite/install-postgres-mysql-sqlserver.md
new file mode 100644
index 0000000000..7722dbf975
--- /dev/null
+++ b/MyApp/_pages/ormlite/install-postgres-mysql-sqlserver.md
@@ -0,0 +1,111 @@
+---
+title: Install PostgreSQL, MySql and SQL Server with Docker
+---
+
+Installing developer tools has become frictionless in today's world of ubiquitous Docker adoption. First thing you'll
+need to install is [Docker Desktop](https://www.docker.com/products/docker-desktop/) which will let you run each RDBMS
+in a containerized Docker App.
+
+After Docker is running, installing and running PostgreSQL and MySql can be done with a single command:
+
+## Install and run PostgreSQL
+
+:::copy
+docker run --name postgres -e POSTGRES_PASSWORD=p@55wOrd -p 127.0.0.1:5432:5432 -d postgres
+:::
+
+## Install and run MySql
+
+:::copy
+docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=p@55wOrd -d mysql:latest
+:::
+
+> Feel free to update commands to use your preferred strong password instead
+
+## Install and run SQL Server
+
+SQL Server requires more resources than the popular RDBMS's and as it doesn't have a native ARM Docker Image requires
+a bit more configuration.
+
+First you'll want to ensure you have at least **4GB RAM** available to containers from
+the **Resources** Tab in Docker Settings you can open with `⌘,`
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/docker-resources.png)
+
+## Apple Silicon
+
+Our MacBook Air's **24GB RAM** configuration defaulted to **7.9 GB**, but if you have a lower configuration you'll want
+to ensure **4GB** is available to SQL Server.
+
+If you're running on Apple Silicon you'll want to ensure **Use Virtualization Framework** and **VirtioFS** is checked
+in the **General** tab which will allow SQL Server **AMD64** Image will run on Apple's new
+[Virtualization framework](https://developer.apple.com/documentation/virtualization):
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/docker-general.png)
+
+After which you'll be able to install and run SQL Server with:
+
+:::copy
+docker run --platform=linux/amd64 --name mssql -e ACCEPT_EULA=1 -e MSSQL_SA_PASSWORD=p@55wOrd -p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latest
+:::
+
+You'll be able to check if all Docker containers are now running by clicking on the **Containers** tab in Docker Desktop:
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/docker-containers.png)
+
+## lazydocker
+
+Another great alternative to Docker Desktop for managing Docker Containers is [lazydocker](https://github.com/jesseduffield/lazydocker)
+which can be installed with:
+
+### macOS
+
+:::sh
+brew install lazydocker
+:::
+
+### Chocolatey (Windows)
+
+Using [Chocolatey](https://chocolatey.org) is an easy way to install on Windows:
+
+:::sh
+choco install lazydocker
+:::
+
+As lazydocker a Terminal UI it can be run everywhere where there's a Terminal, in local and remote terminals as well as
+Rider and VS Code's built-in Terminal UIs where you can quickly perform Docker tasks without breaking your development
+workflow:
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/lazydocker.png)](https://github.com/jesseduffield/lazydocker)
+
+## DataGrip
+
+Now we can see they're all running, lets connect to them. You could use the command line tools specific to each database
+but my preference is to use [JetBrains DataGrip](https://www.jetbrains.com/datagrip/) which lets you connect and manage
+any RDBMS from a single Desktop App, including many of the most popular NoSQL data stores.
+
+## Connect to all Database connections
+
+In **Database Explorer**, click on the `+` New Icon to add a new Data Source to **Microsoft SQL Server**, **MySql**
+and **PostgreSQL** using the passwords used to run the Docker commands (e.g.`p@55wOrd`) and the default user names
+for each RDBMS:
+
+- SQL Server: `sa`
+- MySQL: `root`
+- PostgreSQL: `postgres`
+
+After connecting to all databases you should end up with active connections to all empty databases:
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/datagrip-databases.png)](https://www.jetbrains.com/datagrip/)
+
+Which you can open a **New > Query Console** or `⇧⌘L` to start executing generic queries against like `SELECT @@VERSION`
+in SQL Server to display the version of SQL Server that's running:
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/datagrip-mssql-version.png)](https://www.jetbrains.com/datagrip/)
+
+## Creating new Databases with DataGrip
+
+To do anything interesting you'll need databases, which you can create with `New > Database` for SQL Server and
+PostgreSQL or `New > Schema` in MySQL:
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/datagrip-test.png)](https://www.jetbrains.com/datagrip/)
diff --git a/MyApp/_pages/ormlite/multi-database-app.md b/MyApp/_pages/ormlite/multi-database-app.md
new file mode 100644
index 0000000000..b386838de6
--- /dev/null
+++ b/MyApp/_pages/ormlite/multi-database-app.md
@@ -0,0 +1,237 @@
+---
+title: Multiple App Databases
+---
+
+ServiceStack Apps have great support for multiple App Databases, for all it's [supported RDBMS](/ormlite/installation)
+starting with the built-in [Database Admin UI](https://docs.servicestack.net/admin-ui-database) which lets you
+browse and query an App's configured databases:
+
+
+
+
+
+You can easily try this out from a new database-enabled [vue-mjs](https://vue-mjs.web-templates.io) project template,
+created with the `x` [dotnet tool](https://docs.servicestack.net/dotnet-tool):
+
+:::sh
+dotnet tool install --global x
+:::
+
+This will let you create any [ServiceStack Project Template](/start) with your preferred Project Name from the command-line, e.g:
+
+:::sh
+x new vue-mjs DatabaseTest
+:::
+
+Which creates a new .NET App that you can open with your preferred .NET IDE or text editor, e.g:
+
+:::sh
+code DatabaseTest/DatabaseTest
+:::
+
+By default the App is configured to use a local SQLite database, we can extend it to
+[connect to different RDBMS's](/ormlite/install-postgres-mysql-sqlserver)
+by adding the necessary **RDBMS** and `AdminDatabaseFeature` NuGet packages in `DatabaseTest.csproj`:
+
+```xml
+
+
+
+
+```
+
+::: info TIP
+New dependencies can be installed with VS Code's **Restore** popup or by explicitly running `dotnet restore`
+:::
+
+We can then register named connections for each of our databases by replacing the existing `Configure.Db.cs` with:
+
+```csharp
+public class ConfigureDb : IHostingStartup
+{
+ public void Configure(IWebHostBuilder builder) => builder
+ .ConfigureServices((context,services) => {
+ var dbFactory = new OrmLiteConnectionFactory(
+ context.Configuration.GetConnectionString("DefaultConnection") ?? "App_Data/db.sqlite",
+ SqliteDialect.Provider);
+
+ dbFactory.RegisterConnection("postgres",
+ "Server=localhost;User Id=postgres;Password=p@55wOrd;Database=test;Pooling=true;MinPoolSize=0;MaxPoolSize=200",
+ PostgreSqlDialect.Provider);
+
+ dbFactory.RegisterConnection("mysql",
+ "Server=localhost;User Id=root;Password=p@55wOrd;Database=test;Pooling=true;MinPoolSize=0;MaxPoolSize=200",
+ MySqlDialect.Provider);
+
+ dbFactory.RegisterConnection("mssql",
+ "Server=localhost;User Id=sa;Password=p@55wOrd;Database=test;MultipleActiveResultSets=True;Encrypt=False;",
+ SqlServer2012Dialect.Provider);
+
+ services.AddSingleton(dbFactory);
+ })
+ .ConfigureAppHost(appHost => {
+ // Enable built-in Database Admin UI at /admin-ui/database
+ appHost.Plugins.Add(new AdminDatabaseFeature());
+ });
+}
+```
+
+This will now let us access the [registered databases](https://docs.servicestack.net/ormlite/getting-started#multiple-database-connections)
+in our APIs, but first lets populate the databases with some data.
+
+When a new project is created it populates its default configured SQLite database with some test data, we can do the same
+for the other registered database by duplicating the App's initial [DB migration](https://docs.servicestack.net/ormlite/db-migrations)
+to a new DB `Migration1001.cs` with:
+
+:::sh
+sed "s/1000/1001/" ./Migrations/Migration1000.cs > ./Migrations/Migration1001.cs
+:::
+
+Then annotating it with a `[NamedConnection]` attribute for each of your registered database, e.g:
+
+```csharp
+[NamedConnection("mssql")]
+[NamedConnection("mysql")]
+[NamedConnection("postgres")]
+public class Migration1001 : MigrationBase
+{
+ //...
+}
+```
+
+That can then be executed with:
+
+:::sh
+npm run migrate
+:::
+
+Where it will execute all new DB Migrations, in this case apply the same Migration to each configured database.
+
+Now that our App's databases are all populated and ready to go, we can run it with:
+
+:::sh
+npm run dev
+:::
+
+Then view the built-in Admin Database UI at:
+
+:::sh
+https://localhost:5001/admin-ui/database
+:::
+
+and signing in with the Admin user created in `Configure.AuthRepository.cs`:
+
+- `admin@email.com`
+- `p@55wOrd`
+
+Where it displays all the App's configured database tables on its home page:
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/admin-db-home.png)
+
+Whose contents can be viewed by drilling down and clicking on each table:
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/admin-db-mssql-bookings.png)
+
+Which displays its rows using the [AutoQuery Grid Vue Component](https://docs.servicestack.net/vue/autoquerygrid) that
+can be sorted and filtered as needed:
+
+![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/admin-db-postgres-coupons.png)
+
+## Named database connections
+
+Named connections can be opened by its name from the registered `IDbConnectionFactory`:
+
+```csharp
+using var db = dbFactory.Open("postgres");
+```
+
+Inside a Service this can be resolved using `OpenDbConnection`:
+
+```csharp
+public class MyServices : Service
+{
+ public object Any(GetPostgresBookings request)
+ {
+ using var db = OpenDbConnection("postgres");
+ return db.Select();
+ }
+}
+```
+
+The `[NamedConnection]` attribute can be used to configure Services `base.Db` connection with the named connection RDBMS, e.g:
+
+```csharp
+[NamedConnection("mysql")]
+public class QueryMySqlBookings {}
+
+public class BookingServices : Service
+{
+ public object Any(QueryMySqlBookings request) => Db.Select();
+}
+```
+
+Or if using [AutoQuery](/autoquery/) it can be used to associate Data Models with the named connection:
+
+```csharp
+[NamedConnection("mssql")]
+public class QuerySqlServerBookings : QueryDb {}
+```
+
+Otherwise for other Services the `[ConnectionInfo]` attribute can be used to change the `base.Db` to use the registered
+named connection for all APIs in a Service class, e.g:
+
+```csharp
+[ConnectionInfo(NamedConnection = "postgres")]
+public class PostgresServices : Service
+{
+ public object Any(GetPostgresBookings request)
+ {
+ return db.Select();
+ }
+}
+```
+
+## Vue .mjs project template features
+
+Whilst you have the App running, check out its other high-productivity features:
+
+### Create a multi-user Booking system with AutoQuery
+
+The App's Bookings APIs are built using [AutoQuery CRUD](https://docs.servicestack.net/autoquery-crud), allowing for
+rapid development of typed CRUD Services using only declarative POCO DTOs:
+
+
+
+
+
+
+In addition, all AutoQuery APIs benefit from the built-in [Locode's](https://docs.servicestack.net/locode/) Auto Management UI:
+
+
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/db-test-locode.png)](https://docs.servicestack.net/locode/)
+
+
+
+
+
+As well as end-to-end typed integrations with the most [popular programming languages](/service-reference) accessible
+from the [code tab](https://docs.servicestack.net/api-explorer#code-tab) of the built-in
+[API Explorer](https://docs.servicestack.net/api-explorer):
+
+
+
+[![](https://servicestack.net/img/posts/postgres-mysql-sqlserver-on-apple-silicon/db-test-ui-code.png)](https://docs.servicestack.net/api-explorer)
+
+
+
+
+
+I hope this has been an informative post and highlighted some cool products and features, any questions or feedback
+is welcome by commenting below.
\ No newline at end of file
diff --git a/MyApp/_pages/ormlite/sidebar.json b/MyApp/_pages/ormlite/sidebar.json
index 5c2eaec0cc..59ae4458e4 100644
--- a/MyApp/_pages/ormlite/sidebar.json
+++ b/MyApp/_pages/ormlite/sidebar.json
@@ -26,6 +26,14 @@
{
"text": "Litestream",
"link": "/ormlite/litestream"
+ },
+ {
+ "text": "Install Postgres, MySql & MSSQL",
+ "link": "/ormlite/install-postgres-mysql-sqlserver"
+ },
+ {
+ "text": "Multiple App Databases",
+ "link": "/ormlite/multi-database-app"
}
]
},