SIMS — SMM Insurance Management System SIMS is an internal insurance management platform for Specialty Market Managers, LLC. It manages the full insurance workflow from submission through policy issuance, billing, accounting, and reporting. Documentation File Contents architecture.md System architecture, project structure, layer responsibilities infrastructure.md Azure services, secrets management, local dev setup backend.md API controllers, services, domain entities frontend.md Pages, components, API modules, tech stack integrations.md QBO, Azure AD, Graph API, Gemini, Syncfusion deployment.md Deployment guide and next steps Quick Start Prerequisites .NET 8 SDK Node.js 18+ PostgreSQL client tools Azure CLI ( az login required for local dev) Docker (optional) Backend cd backend/src/SIMS.API $env :ASPNETCORE_ENVIRONMENT = " Development " dotnet run
API available at http://localhost:5000
Swagger at http://localhost:5000/swagger Frontend cd frontend npm install npm run dev
App available at http://localhost:5173 Type Check cd frontend && npx tsc --noEmit Database Migrations
Add a migration (run from repo root) ~ /.dotnet/tools/dotnet-ef migrations add < Name
--project backend/src/SIMS.Infrastructure --startup-project backend/src/SIMS.API
Apply migrations
ASPNETCORE_ENVIRONMENT=Development
~
/.dotnet/tools/dotnet-ef database update
--project backend/src/SIMS.Infrastructure
--startup-project backend/src/SIMS.API
Note:
dotnet build
must be run from the
backend/
directory. Running from the repo root appears to succeed but does not rebuild the API DLL.
Known Gotchas
EF Core + Rating Tables — column name mismatch
All rating-related tables (
rating_plans
,
rating_plan_versions
,
factor_tables
,
factor_rows
,
eligibility_rules
,
carrier_rating_assignments
,
equipment_types
,
territories
,
quote_rating_snapshots
,
quote_rating_lines
,
rating_plan_version_impact_previews
) were created via raw SQL migrations using lowercase snake_case column names.
There is no global
UseSnakeCaseNamingConvention()
, so EF Core defaults to quoting PascalCase identifiers (
r."Id"
,
r."RatingPlanId"
). PostgreSQL rejects these against lowercase columns:
42703: column r.Id does not exist
Fix:
Every rating entity configuration in
SIMS.Infrastructure/Data/Configurations/Rating/
must include explicit
HasColumnName("snake_case_name")
for all properties, including base entity columns (
id
,
created_at
,
updated_at
,
is_deleted
,
deleted_at
).
Exception:
Columns added via
migrationBuilder.AddColumn(name: "PascalCase", ...)
(e.g.
CreatedById
,
LastEditedById
on
rating_plan_versions
) are PascalCase in the DB and do
not
need remapping.
Manually-created migrations must have a designer file
Migrations created by hand (not via
dotnet-ef migrations add
) are silently ignored unless they have a
.Designer.cs
file. Without it, the migration lacks the
[DbContext]
and
[Migration]
attributes EF needs —
migrations list
won't show them and
database update
will say "already up to date."
Minimal designer file:
//
using
Microsoft
.
EntityFrameworkCore
;
using
Microsoft
.
EntityFrameworkCore
.
Infrastructure
;
using
Microsoft
.
EntityFrameworkCore
.
Migrations
;
using
SIMS
.
Infrastructure
.
Data
;
#nullable disable
namespace
SIMS
.
Infrastructure
.
Migrations
{
[
DbContext
(
typeof
(
ApplicationDbContext
)
)
]
[
Migration
(
"20260503230000_Rating_IM_Seed"
)
]
partial
class
Rating_IM_Seed
{
}
}
Foreign keys referencing the
users
table
The Identity table is named
users
(lowercase) with an EF-managed PK column
"Id"
(PascalCase). In raw SQL migrations:
inside a C# verbatim string @"..." FOREIGN KEY (col) REFERENCES users ( " " Id " " )