diff --git a/VigilCareRecordsAPI/Data/AppDbContextFactory.cs b/VigilCareRecordsAPI/Data/AppDbContextFactory.cs
new file mode 100644
index 0000000..1384edc
--- /dev/null
+++ b/VigilCareRecordsAPI/Data/AppDbContextFactory.cs
@@ -0,0 +1,39 @@
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Design;
+
+///
+/// Design-time factory for EF tools and the CD migrations bundle.
+/// Without this, the bundle tries to bootstrap Program.cs (JWT/MinIO/etc.) and fails
+/// when those settings are absent next to ./migrate-api; --connection then never applies.
+///
+public class AppDbContextFactory : IDesignTimeDbContextFactory
+{
+ public AppDbContext CreateDbContext(string[] args)
+ {
+ var optionsBuilder = new DbContextOptionsBuilder();
+ optionsBuilder.UseNpgsql(ResolveConnectionString());
+ return new AppDbContext(optionsBuilder.Options);
+ }
+
+ private static string ResolveConnectionString()
+ {
+ var fromEnv = Environment.GetEnvironmentVariable("ConnectionStrings__DefaultConnection");
+ if (!string.IsNullOrWhiteSpace(fromEnv))
+ return fromEnv;
+
+ var config = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("appsettings.json", optional: true)
+ .AddJsonFile("appsettings.Development.json", optional: true)
+ .AddEnvironmentVariables()
+ .Build();
+
+ var fromConfig = config.GetConnectionString("DefaultConnection");
+ if (!string.IsNullOrWhiteSpace(fromConfig))
+ return fromConfig;
+
+ // Placeholder so the factory can construct a context; migrate-api --connection
+ // replaces this when applying migrations in CD.
+ return "Host=127.0.0.1;Database=ef_design;Username=ef;Password=ef";
+ }
+}