diff --git a/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj b/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj
new file mode 100644
index 0000000..b4b33b9
--- /dev/null
+++ b/AS1024.GeoFeed.Core.GeoFeedLocalCache/AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj
@@ -0,0 +1,23 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheDbContext.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheDbContext.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheDbContext.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheDbContext.cs
diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheEntry.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheEntry.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheEntry.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheEntry.cs
diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheService.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheService.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedCacheService.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedCacheService.cs
diff --git a/AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedLocalCache/GeoFeedDesignTimeMigration.cs
diff --git a/AS1024.GeoFeed.Core/GeoFeedPreloader/PreloadGeoFeed.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedPreloader/PreloadGeoFeed.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/GeoFeedPreloader/PreloadGeoFeed.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/GeoFeedPreloader/PreloadGeoFeed.cs
diff --git a/AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.Designer.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.Designer.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.Designer.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.Designer.cs
diff --git a/AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/Migrations/20240113204143_InitialMigration.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/20240113204143_InitialMigration.cs
diff --git a/AS1024.GeoFeed.Core/Migrations/GeoFeedCacheDbContextModelSnapshot.cs b/AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/GeoFeedCacheDbContextModelSnapshot.cs
similarity index 100%
rename from AS1024.GeoFeed.Core/Migrations/GeoFeedCacheDbContextModelSnapshot.cs
rename to AS1024.GeoFeed.Core.GeoFeedLocalCache/Migrations/GeoFeedCacheDbContextModelSnapshot.cs
diff --git a/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj b/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj
new file mode 100644
index 0000000..e2a9130
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj
@@ -0,0 +1,16 @@
+
+
+
+ net8.0
+ enable
+ enable
+ true
+ true
+ Linux
+
+
+
+
+
+
+
diff --git a/AS1024.GeoFeed.MinimalAPI/Dockerfile b/AS1024.GeoFeed.MinimalAPI/Dockerfile
new file mode 100644
index 0000000..53ab0b5
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/Dockerfile
@@ -0,0 +1,29 @@
+#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
+USER app
+WORKDIR /app
+EXPOSE 8080
+
+FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
+# Install clang/zlib1g-dev dependencies for publishing to native
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+ clang zlib1g-dev
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /src
+COPY ["AS1024.GeoFeed.MinimalAPI/AS1024.GeoFeed.MinimalAPI.csproj", "AS1024.GeoFeed.MinimalAPI/"]
+RUN dotnet restore "./AS1024.GeoFeed.MinimalAPI/./AS1024.GeoFeed.MinimalAPI.csproj"
+COPY . .
+WORKDIR "/src/AS1024.GeoFeed.MinimalAPI"
+RUN dotnet build "./AS1024.GeoFeed.MinimalAPI.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./AS1024.GeoFeed.MinimalAPI.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=true
+
+FROM mcr.microsoft.com/dotnet/runtime-deps:8.0 AS final
+WORKDIR /app
+EXPOSE 8080
+COPY --from=publish /app/publish .
+ENTRYPOINT ["./AS1024.GeoFeed.MinimalAPI"]
\ No newline at end of file
diff --git a/AS1024.GeoFeed.MinimalAPI/Program.cs b/AS1024.GeoFeed.MinimalAPI/Program.cs
new file mode 100644
index 0000000..7f35304
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/Program.cs
@@ -0,0 +1,18 @@
+using System.Text.Json.Serialization;
+
+namespace AS1024.GeoFeed.MinimalAPI
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ var builder = WebApplication.CreateSlimBuilder(args);
+
+ var app = builder.Build();
+ var geoFeed = app.MapGroup("/geofeed.csv");
+
+ app.Run();
+ }
+ }
+
+}
diff --git a/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json b/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json
new file mode 100644
index 0000000..6fce47b
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/Properties/launchSettings.json
@@ -0,0 +1,24 @@
+{
+ "profiles": {
+ "http": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "launchUrl": "todos",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "dotnetRunMessages": true,
+ "applicationUrl": "http://localhost:5127"
+ },
+ "Docker": {
+ "commandName": "Docker",
+ "launchBrowser": true,
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/todos",
+ "environmentVariables": {
+ "ASPNETCORE_HTTP_PORTS": "8080"
+ },
+ "publishAllPorts": true
+ }
+ },
+ "$schema": "http://json.schemastore.org/launchsettings.json"
+}
\ No newline at end of file
diff --git a/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json b/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json
new file mode 100644
index 0000000..0c208ae
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/appsettings.Development.json
@@ -0,0 +1,8 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ }
+}
diff --git a/AS1024.GeoFeed.MinimalAPI/appsettings.json b/AS1024.GeoFeed.MinimalAPI/appsettings.json
new file mode 100644
index 0000000..10f68b8
--- /dev/null
+++ b/AS1024.GeoFeed.MinimalAPI/appsettings.json
@@ -0,0 +1,9 @@
+{
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/AS1024.GeoFeed.sln b/AS1024.GeoFeed.sln
index dd95a8e..cf44d7b 100644
--- a/AS1024.GeoFeed.sln
+++ b/AS1024.GeoFeed.sln
@@ -8,9 +8,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed", "AS1024.Ge
{8BA82A53-29E7-44A2-91BA-57C15BB4B0F5} = {8BA82A53-29E7-44A2-91BA-57C15BB4B0F5}
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Models", "AS1024.GeoFeed.Models\AS1024.GeoFeed.Models.csproj", "{8BA82A53-29E7-44A2-91BA-57C15BB4B0F5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.Models", "AS1024.GeoFeed.Models\AS1024.GeoFeed.Models.csproj", "{8BA82A53-29E7-44A2-91BA-57C15BB4B0F5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Core", "AS1024.GeoFeed.Core\AS1024.GeoFeed.Core.csproj", "{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.Core", "AS1024.GeoFeed.Core\AS1024.GeoFeed.Core.csproj", "{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AS1024.GeoFeed.MinimalAPI", "AS1024.GeoFeed.MinimalAPI\AS1024.GeoFeed.MinimalAPI.csproj", "{36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AS1024.GeoFeed.Core.GeoFeedLocalCache", "AS1024.GeoFeed.Core.GeoFeedLocalCache\AS1024.GeoFeed.Core.GeoFeedLocalCache.csproj", "{C474F55D-AE8E-4DF3-A241-FB017551C74A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -30,6 +34,14 @@ Global
{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE6D6C87-29C4-42A1-8251-7D2BF20F1797}.Release|Any CPU.Build.0 = Release|Any CPU
+ {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {36F2958C-8D0E-463B-9BF3-D6E55E6FC0B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C474F55D-AE8E-4DF3-A241-FB017551C74A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/AS1024.GeoFeed/AS1024.GeoFeed.csproj b/AS1024.GeoFeed/AS1024.GeoFeed.csproj
index 34ca58a..e739f05 100644
--- a/AS1024.GeoFeed/AS1024.GeoFeed.csproj
+++ b/AS1024.GeoFeed/AS1024.GeoFeed.csproj
@@ -22,6 +22,7 @@
+