A custom ASP.NET web content management system (WCMS).
- Runtime and libraries target
.NET 10(net10.0). - Windows-only desktop utilities remain
net10.0-windows. - Legacy pre-migration source is preserved in
/legacyfor reference.
- .NET 10 SDK (
dotnet --list-sdksshould include a10.0.xSDK). - PostgreSQL (recommended for cross-platform setup), or SQL Server for Windows.
- On macOS/Linux: standard shell tooling (
bash/zsh). - Optional on Windows only: Visual Studio 2026 for
net10.0-windowsutilities.
- Restore runtime projects (recommended on macOS/Linux):
dotnet restore Portal/WebSystem/WebSystem/WCMS.WebSystem.WebApp.csproj
dotnet restore Tests/WCMS.Integration.Tests/WCMS.Integration.Tests.csprojIf you need to restore the full solution graph (including Windows-only projects metadata):
dotnet restore mPortal.slnx -p:EnableWindowsTargeting=true- Configure database settings (example for PostgreSQL):
export WCMS__DatabaseProvider=PostgreSql
export PG_PASSWORD='<set-a-strong-password>'
export ConnectionStrings__ConnectionString="Host=localhost;Port=5432;Database=mportal;Username=postgres;Password=${PG_PASSWORD}"
export ConnectionStrings__DefaultConnection="${ConnectionStrings__ConnectionString}"- Run the main CMS web app:
dotnet run --project Portal/WebSystem/WebSystem/WCMS.WebSystem.WebApp.csproj --urls http://localhost:5088- Open:
http://localhost:5088/http://localhost:5088/Central/
- Main app settings:
Portal/WebSystem/WebSystem/appsettings.json - WCMS provider switch:
WCMS:DatabaseProvider(SqlServerorPostgreSql) - Primary connection string key:
ConnectionStrings:ConnectionString - Health endpoint:
/health - Security keys should be provided from environment variables (see
.env.example):Security__PasswordSaltSecurity__LoginEncryptionKeySecurity__LoginEncryptionIV
- A blank database can result in limited/empty site rendering until seed or migrated data is loaded.
- SQL Server dumps can be processed and migrated to PostgreSQL as part of modernization execution.
- Application logs default under:
Content/Admin/Data/Logs/
- File-level source-of-truth inventory:
docs/plans/legacy-migration/inventory/legacy-source-tracking-all.csv
- Execution board for active migration batches:
docs/plans/legacy-migration/EXECUTION_BOARD.md
- Integration unit test project:
Portal/WebParts/Integration/WCMS.WebSystem.Apps.Integration.UnitTest
- Repo test projects:
Tests/WCMS.Framework.TestsTests/WCMS.Integration.Tests
- Create a feature branch for your work.
- Keep migration changes traceable in the legacy tracker CSV + execution board.
- Run local secret checks before commit:
git config core.hooksPath .githooks- Submit a pull request with scope, risks, validation notes, and confirmation that no plaintext secrets/PII were introduced.