WILLIAM REID NEUHOFF
SOFTWARE DEVELOPMENT PORTFOLIO

Practical tools.
Creative possibilities.

I’m William Reid Neuhoff. I build software for business operations, server management, and play.

Explore my work

Selected work

01 — 09 / PROJECT INDEX
01

C# / INVENTORY API

Independent portfolio project

StockLedger

Warehouse inventory with transactional controls.

What I built

A warehouse inventory application with searchable stock positions, replenishment alerts, case-cost valuation, and a transfer register. Transfers protect reserved inventory and atomically update both locations with concurrency and duplicate-request checks.

Project context

An independent application for Alder Supply, a fictional regional distributor. Business records are generated and internally consistent.

Focus

Atomic transfersReserved-stock protectionCSV exports

Languages & their roles

C#
ASP.NET Core endpoints, transfer validation, concurrency checks, and transaction handling.
SQL / EF Core
SQLite persistence, schema constraints, and version-aware database updates.
JavaScript
Live dashboard data, search, filtering, detail dialogs, and CSV interactions.
Python
Reproducible business fixtures and HTTP integration tests.
YAML
GitHub Actions build, test, container delivery, and optional deployment workflows.

Engines & platformsASP.NET Core · .NET 10 · EF Core · SQLite · Docker · GitHub Actions

Screenshots use synthetic operating data. The APIs run locally; public API hosting and GitHub publication are not configured.

Technical challenge

A client can retry a successful request after a timeout, or two operators can submit transfers using the same stock snapshot.

Implemented solution

A database transaction encloses the request-ID lookup, both stock updates, and the audit insert. Unique request IDs prevent duplicate transfers, while EF Core version tokens reject stale writes with HTTP 409; stock quantities are also constrained to remain nonnegative.

How it is built

  1. A deterministic generator creates 48 catalog products across four warehouses, with costs, suppliers, bins, reserves, and reorder points.
  2. EF Core persists 192 stock positions and 356 transfer records; opening balances reconcile to the transfer ledger.
  3. The ASP.NET Core transfer endpoint validates available stock and row versions inside a SQL transaction.
  4. A responsive operations UI derives metrics from live API data, with search, warehouse filters, sorting, pagination, detail dialogs, and filtered CSV export.

What comes next

Add receiving, purchase orders, stock adjustments, product administration, database migrations, and named-user authentication.

Source package includes all three applications, run instructions, and test suites. 18 API integration tests passed locally; browser checks covered transfers, imports, retries, and release approvals.

02

C# / AUTOMATION API

Independent portfolio project

RunQueue

Background work, with a clear recovery path.

What I built

A customer-contact processing workspace with batch history, exception queues, CSV imports, and row-level validation results. Persisted job leases support crash recovery and failed-batch retries while preserving the original input.

Project context

An independent application for Alder Supply, a fictional regional distributor. Business records are generated and internally consistent.

Focus

CSV importsJob recoveryRecord-level results

Languages & their roles

C#
ASP.NET Core batch API, BackgroundService worker, persisted leases, and retries.
SQL / EF Core
SQLite persistence, schema constraints, and version-aware database updates.
JavaScript
Live dashboard data, search, filtering, detail dialogs, and CSV interactions.
Python
Reproducible business fixtures and HTTP integration tests.
YAML
GitHub Actions build, test, container delivery, and optional deployment workflows.

Engines & platformsASP.NET Core · .NET 10 · EF Core · SQLite · Docker · GitHub Actions

Screenshots use synthetic operating data. The APIs run locally; public API hosting and GitHub publication are not configured.

Technical challenge

An API process can crash after claiming a job but before completing it, leaving work stuck in Running.

Implemented solution

The worker persists a timed lease and increments an optimistic concurrency token when claiming work. After a crash, an expired lease makes the batch eligible for recovery; final counts replace prior counts rather than incrementing them, so replaying the pure validation operation does not double-count results.

How it is built

  1. The business fixture includes 180 named contact batches, departments, source files, timestamps, and consistent input/result counts.
  2. The browser imports CSV files with an Email column; a provided 750-row file contains 710 valid-format and 40 invalid-format addresses.
  3. The API persists batch metadata and up to 1,000 records, then returns HTTP 202.
  4. A C# BackgroundService claims jobs with optimistic concurrency and a ten-second lease, validates email syntax, and stores final counts.
  5. The UI polls live state, filters failures, retries eligible batches, displays rejected records, and exports complete validation results.

What comes next

Add duplicate contact detection, schema mapping, automatic backoff, a dead-letter queue, worker observability, and longer-job lease renewal.

Source package includes all three applications, run instructions, and test suites. 18 API integration tests passed locally; browser checks covered transfers, imports, retries, and release approvals.

03

C# / RELEASE WORKFLOW

Independent portfolio project

ReleaseGate

Release approvals with a persistent audit trail.

What I built

A release management workspace with application versions, target environments, owners, risk levels, approval queues, and audit history. Authenticated state transitions preserve the artifact identifier and require a separate approver role before a simulated deployment.

Project context

An independent application for Alder Supply, a fictional regional distributor. Business records are generated and internally consistent.

Focus

Approval rolesArtifact digestsAudit history

Languages & their roles

C#
ASP.NET Core endpoints, role checks, state transitions, and audit persistence.
SQL / EF Core
SQLite persistence, schema constraints, and version-aware database updates.
JavaScript
Live dashboard data, search, filtering, detail dialogs, and CSV interactions.
Python
Reproducible business fixtures and HTTP integration tests.
YAML
GitHub Actions build, test, container delivery, and optional deployment workflows.

Engines & platformsASP.NET Core · .NET 10 · EF Core · SQLite · Docker · GitHub Actions

Screenshots use synthetic operating data. The APIs run locally; public API hosting and GitHub publication are not configured.

Technical challenge

A release should not jump directly to deployment, and the submitting role should not approve its own release.

Implemented solution

A server-side transition table combines current state, requested action, and authenticated role. A version token rejects stale changes, while each permitted transition and its audit event are persisted atomically by EF Core.

How it is built

  1. The generator creates 54 release records and hashes an actual JSON manifest file for each artifact digest.
  2. The API stores version, environment, risk, responsible team, change summary, planned window, and audit events.
  3. An explicit state-and-role transition table controls submission, approval, simulated deployment, and simulated rollback.
  4. The UI offers a release register, approval queue, searchable audit trail, CSV export, detail review, and a manifest hashing/download utility.

What comes next

Connect a deployment provider, use named identities and self-approval checks, verify registry provenance, and implement rollback to a previous deployed artifact.

Source package includes all three applications, run instructions, and test suites. 18 API integration tests passed locally; browser checks covered transfers, imports, retries, and release approvals.

04

SERVER OPERATIONS

Greenville Utilities

Ryze

Oracle server operations, brought together.

What I built

Co-developed an internal Linux service for Greenville Utilities to start, stop, restart, and check Oracle application services. It coordinates WebLogic scripts, environment-specific commands, logging, and wait timers.

Project context

The project demo shows a 21-step manual restart reduced to one service command. The source README credits William R. Neuhoff and Kayleigh M. Leblanc.

Focus

Server lifecycle automationStatus checksDeployment configuration

Languages & their roles

Bash
Linux service orchestration, startup and shutdown sequencing, wait timers, and logs.
Python / WLST
WebLogic server lifecycle commands and domain status queries.
YAML
GitLab deployment configuration for test, staging, and production environments.
PHP
Prototype web handlers invoking shell scripts.
HTML, CSS & JavaScript
Web prototype layout, styling, server search, and action controls.

Engines & platformsOracle WebLogic · GitLab CI/CD · Linux · SSH

Source reviewed from the Ryze and AutoSOA archives. The web interface is a prototype; its colored indicators are presentation elements, not verified live monitoring.

05

BUSINESS SOFTWARE

Herringing and Rivenbark

Cost Estimator

A dedicated tool for estimating costs.

What I built

A cost estimation tool built for Herringing and Rivenbark.

Project context

Software built around a practical business need: preparing cost estimates.

Focus

Cost estimationBusiness tooling

Languages & their roles

Python
Cost estimation logic: evaluating project inputs and generating forecasts.

Engines & platformsPython application

Language documented in my cost-estimation project experience.

06

BUSINESS SOFTWARE

NeuSpice

Inventory Management

Software for keeping track of inventory.

What I built

An inventory management system built for NeuSpice.

Project context

A business application focused on managing inventory.

Focus

Inventory managementBusiness operations

Languages & their roles

SQL
Oracle database queries and inventory data operations.

Engines & platformsOracle Database · Red Hat Enterprise Linux

Technology details documented in my inventory application experience.

07

GAME DEVELOPMENT

Personal project

Cow Game

Tiny Dairy: a hands-on dairy farming game.

What I built

Built a farm gameplay loop around milking, storage, truck sales, and upgrades, with local saves and a day/night environment in the Godot edition.

Project context

The project spans a Godot farm simulation, a Unity rhythm-milking edition, and an original browser prototype.

Focus

Farm simulationRhythm gameplayLocal saves

Languages & their roles

GDScript
Godot edition: farm interaction, milk storage, truck sales, upgrades, and saving.
C#
Unity edition: rhythm gameplay, game state, timing, and audio integration.
JavaScript
Original browser prototype: gameplay and interaction logic.
HTML & CSS
Original browser prototype: page structure and interface styling.

Engines & platformsGodot · Unity · FMOD

08

GAME DEVELOPMENT

Personal project

Pixel Game

Tiny Tower // To the Sun: a living pixel colony.

What I built

Built a real-time incremental game where workers mine, carry materials, construct buildings, and grow a vertical city. The Windows edition includes an explorable home and Breakout mining expeditions.

Project context

A native Windows game with persistent progression, plus a separate earlier Android canvas prototype.

Focus

Worker simulationIncremental progressionIsometric interiors

Languages & their roles

Python
Windows game: simulation, worker behavior, progression, interface, and rendering integration.
GLSL
GPU shader effects used by the ModernGL presentation layer.
Java
Separate Android prototype with native canvas rendering.

Engines & platformsPygame · ModernGL · Android Canvas

09

SOFTWARE PROJECT

Personal project

Flicker Checker

A focused coding project.

What I built

Flicker Checker is part of my collection of software projects.

Project context

One of the tools in my coding portfolio.

Focus

Software development

Behind this portfolio

ARCHITECTURE / IMPLEMENTATION

A look at how the website serves its content, renders project breakdowns, and reaches the browser.

  1. 01 / REQUEST

    Browser

    A visitor requests the portfolio.

  2. 02 / BACKEND

    Cloudflare Worker

    The server handles the request and renders the React page through Vinext.

  3. 03 / RESPONSE

    Rendered page

    The browser receives the page and loads its styles and supporting assets.

Languages used in this website

TypeScript
Typed React components, project records, and server-rendered page structure.
CSS
Responsive layouts, grey surfaces, blue stencil accents, and typography.
HTML
Semantic page output, navigation, project sections, and accessible image descriptions.

Framework & runtimeReact · Vinext · Cloudflare Workers

Content & rendering

Project content is stored in a structured collection in the source. A server component turns each record into an index entry and a full project section.

Backend scope

The current site serves portfolio content. It does not use a project database or a content editing API; changes to project details are made in source and deployed.

EXCERPT / PROJECT RENDERING
{projects.map((project) => (
  <article
    id={project.id}
    key={project.id}
  >
    <h2>{project.name}</h2>
    <p>{project.description}</p>
  </article>
))}

Abbreviated from the project rendering pattern used on this page.