Web Development
Architecture
A small solution split into a portfolio web app and a focused API service.
Solution Shape
The repository contains the Blazor portfolio application and a separate DuckPortfolio.BibleApi project. The web project explicitly excludes the API folder from its compile and content items, keeping the deployed portfolio app separate from the API service while allowing both to live in one workspace.
This keeps the website simple while leaving room for backend services that can evolve independently, deploy separately, and expose their own Swagger documentation.
Deployment Model
Portfolio App
Blazor Server application hosted through ASP.NET Core with environment-specific configuration and Microsoft Identity integration.
Bible API
Containerized ASP.NET Core Minimal API packaged with a multi-stage Dockerfile and exposed on port 8080.
Azure Container Apps
The API README documents ACR builds, Container Apps image updates, secret configuration, environment variables, and log checks.
Configuration
Local development uses appsettings and environment variables; deployed secrets are referenced through Azure Container Apps secret refs.
Design Tradeoffs
- Blazor Server keeps frontend and backend work in C#, which fits the portfolio's .NET focus.
- A CDN icon dependency keeps the repo lighter, while text labels preserve usability if icons fail to load.
- The API service stays separate from the web project so it can be deployed and scaled on its own path.
- Swagger is enabled for the API because this is a small service where discoverability matters.