Skip to content
kc@kumarChandrachooda.com:~$ cd /blog/series/an-attendance-platform-in-asp-net-core && read --section="top" 0%
Series

An Attendance Platform in ASP.NET Core

In reading order.

  • 15 parts
  • ≈ 92 min total
  • 15 published
Part 1 01 Apr 2025 7 min read

An Attendance Platform in ASP.NET Core

Badge gates, WFH timers and shift allowances - the shape of a seven-project intranet attendance platform, the onion it almost is, and the roadmap for fourteen more parts.

Part 2 02 Apr 2025 6 min read

Logging In with CAS When Everyone Uses OAuth

A 2004-vintage SSO protocol wired into ASP.NET Core - ticket validation, roles derived from the database at login time, and single sign-out through a WordPress front door.

Part 4 03 Apr 2025 5 min read

Resurrecting Html.Action in ASP.NET Core

MVC5 child actions were removed from ASP.NET Core, so this codebase re-implemented them - an ActionContext conjured mid-request, a MemoryStream response swap, and a .Result at the heart of 118 call sites.

Part 5 04 Apr 2025 5 min read

A DB-First Model in Code-First Clothing

A decimal surrogate key beside the natural key that does the work, scaffolded index cruft with a placeholder name, a DbSet of List of string, and lazy proxies in a projection minefield.

Part 6 04 Apr 2025 6 min read

Three Ways to Call a Stored Procedure

Reflection that builds EXEC statements, a table-valued function called by string interpolation, and a raw ADO.NET runner returning lists of lists - one codebase, three coexisting answers to the same question.

Part 7 05 Apr 2025 6 min read

The Multi-Result-Set Dream EF Core Wouldn't Grant

An entire stored-procedure framework built on an EF6 extension library, shipped inside an EF Core app, in a folder named Future - the anatomy of an abandoned migration and how to recognise one.

Part 8 06 Apr 2025 6 min read

A Report Builder Users Drag and Drop

Templates, columns, filters and group-bys stored in tables, a fluent WHERE/HAVING/ORDER builder that parameterises values but concatenates identifiers - self-service BI, second-order injection, and a handful of copy-paste bugs.

Part 9 06 Apr 2025 6 min read

Every Intranet App Ends Up Exporting Excel

EPPlus export by reflection, attribute-ordered columns, six near-identical branches, a ten-byte corrupt-file catch, a ghost OpenXml reference, formula injection, and the licence change that caught a lot of teams off guard.

Part 10 07 Apr 2025 6 min read

Sticky Sessions, Wrong Cache

In-memory session behind three App Service instances with affinity disabled, two distributed caches configured at once, a 1000-second easy-testing timeout, and a Redis expiry that throws every December.

Part 11 08 Apr 2025 7 min read

A Timer You Can Stop from an Email

A work-from-home swipe modelled as a state machine, a stop-from-email deep link, the estate's one deliberate IDOR guard that compares instead of overwrites, and a DbContext constructed by hand inside the action.

Part 12 09 Apr 2025 6 min read

Email Templates Live in the Database

HTML templates seeded in OnModelCreating, a reflection mini-language that resolves hash-brace tokens against a model, a Gmail-versus-SMTP environment branch, Cc quietly added into To, and string.Format run over raw HTML.

Part 13 09 Apr 2025 6 min read

Two Key Vault SDKs, One Password in Plain Sight

One class bridging the legacy ADAL KeyVaultClient and the modern SecretClient, three coexisting secret postures - managed identity, a service-principal password in config, a committed key file - and a migration frozen mid-flight.

Part 14 10 Apr 2025 7 min read

The Dependency Graveyard

AutoMapper referenced and never mapped, a ghost OpenXml import, a full-framework MVC5 reference in a Core app, Hangfire packages with no jobs, unconfigured Serilog sinks, and an unregistered middleware - what unused packages cost even when nothing calls them.

Part 15 11 Apr 2025 7 min read

What a Hand-Rolled Intranet App Taught Me

The honest retrospective - copy-paste as a pattern, zero tests, PII in telemetry and what employee-monitoring data demands, destructive error handling, and the handful of decisions that genuinely earned their keep.

Which CV would you like?

Pick the one closest to the role. Each is two pages and carries the same facts.

Applied AI

Agentic AI & Cloud Engineer · multi-agent systems, RAG and MCP on AWS

Cloud & .NET

C#, .NET 10 and ASP.NET Core microservices on AWS and Azure · Terraform & AWS CDK

Data Engineering

AWS lakehouse · Kinesis, Glue (PySpark), Apache Iceberg, Lake Formation

Everything

All three domains, with the standout project from each