TECHIS.EndApps.Games 0.1.13

Prefix Reserved
dotnet add package TECHIS.EndApps.Games --version 0.1.13
                    
NuGet\Install-Package TECHIS.EndApps.Games -Version 0.1.13
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TECHIS.EndApps.Games" Version="0.1.13" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TECHIS.EndApps.Games" Version="0.1.13" />
                    
Directory.Packages.props
<PackageReference Include="TECHIS.EndApps.Games" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TECHIS.EndApps.Games --version 0.1.13
                    
#r "nuget: TECHIS.EndApps.Games, 0.1.13"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TECHIS.EndApps.Games@0.1.13
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TECHIS.EndApps.Games&version=0.1.13
                    
Install as a Cake Addin
#tool nuget:?package=TECHIS.EndApps.Games&version=0.1.13
                    
Install as a Cake Tool

Naija 99

Naija 99 is an independently owned EndApps game feature. This repository contains the reusable game catalog contract, the server-authoritative Naija 99 Razor Class Library, a standalone host, and the complete test suite.

See the project review and prioritized recommendations for the September 2026 assessment, verification evidence, and proposed improvement backlog.

Projects

Project Purpose Package
TECHIS.EndApps.Games Host-neutral game registry, player-identity contract, MVC catalog, and catalog assets TECHIS.EndApps.Games
TECHIS.EndApps.Games.Naija99 Gameplay, provider/service flow, Azure Table stores, controllers, Razor views, and static assets TECHIS.EndApps.Games.Naija99
TECHIS.EndApps.Games.Host Independently runnable development host Not packable
TECHIS.EndApps.Games.Naija99.Test Behavioral, security-boundary, definition, and Azurite integration tests Not packable

Quick start

The standalone host uses local project references for Games and Naija 99. Neither game package depends on TECHIS.EndApps.Web. Shared host contracts come from TECHIS.EndApps.Abstractions 13.3.4, so restoring requires access to the EndApps Core package feed:

dotnet run --project .\TECHIS.EndApps.Games.Host\TECHIS.EndApps.Games.Host.csproj

Open /games or /games/naija-99/play. The deterministic player identity is enabled only in the Development environment. The standalone host intentionally uses in-memory stores in every environment and is not the production EndApps host.

Start cities are shown from Easy through Expert. New Explore journeys start with 12 total cities, including the start. After 11 discoveries, choose End now for short-game results or Continue exploring to keep the same journey and discover all 99. The choice is saved on the server and restored after reload. There is no separate unlock profile. Compete still requires all 99 cities. Existing full Explore journeys and API requests without a target remain full-length. An unfinished journey can be ended from the decision, question, pause, or recovery screen after confirmation. Ending early saves its progress and releases the active slot, but does not produce a completion or leaderboard result; a consumed Compete attempt remains used. Compete ranks completed journeys by question time plus wrong-answer penalties. Short and full Explore have separate leaderboards ranked by elapsed calendar time, including breaks; Explore has no wrong-answer penalty. The host records authoritative starts and city discoveries through an outbox, with delivery retried on later player requests. A host-owned background dispatcher is still needed for eventual delivery when a player does not return. The header's View leaderboard button works during a journey on mobile and desktop. It shows only completed journeys with compatible mode, start city, and rules; the current journey is eligible only if completed. Back to game returns to the prior screen.

EndApps storage configuration

An EndApps composition using Azure Tables supplies one storage-account connection string for both Naija 99 tables. The campaign and leaderboard table names remain independently configurable:

{
  "Naija99": {
    "StorageConnectionString": "",
    "Storage": {
      "TableName": "EndAppsNaija99Campaigns",
      "MaximumContentionAttempts": 6
    },
    "LeaderboardStorage": {
      "TableName": "EndAppsNaija99Leaderboards"
    }
  }
}

Keep the connection string outside source control. Reads do not create tables; controlled writes create the relevant table when it does not already exist.

Build and test

dotnet build .\TECHIS.EndApps.Games.Naija99.sln
dotnet test .\TECHIS.EndApps.Games.Naija99.Test\TECHIS.EndApps.Games.Naija99.Test.csproj
node --test .\tests\naija99-client.test.mjs

To run the four Azure Table integration tests, start local Azurite and set:

$env:NAIJA99_AZURITE_CONNECTION_STRING = 'UseDevelopmentStorage=true'
dotnet test .\TECHIS.EndApps.Games.Naija99.Test\TECHIS.EndApps.Games.Naija99.Test.csproj

For a local Release gate, run ./scripts/verify-release.ps1 with Azurite running and that environment variable set. It runs the Release build, .NET and client suites, and fails if any .NET test is skipped. HTTP middleware, browser, and published-host checks remain separate release work; see the project review.

Reference modes

Within this repository, EndAppsGamesReferenceMode selects Project or Package references for package-only validation. Invalid values and missing local projects fail during restore/build/pack.

EndApps.AspNet follows the existing App and News convention: deploy configuration uses the public NuGet packages, while a developer explicitly comments those references and enables the adjacent project references when stepping through source. There is no cross-repository MSBuild mode API.

The repository's ordinary local build needs no mode properties:

dotnet build .\TECHIS.EndApps.Games.Naija99.sln

Package-only mode uses exact package versions:

dotnet build .\TECHIS.EndApps.Games.Host\TECHIS.EndApps.Games.Host.csproj `
  -p:EndAppsReferenceMode=Package

Package mode restores TECHIS.EndApps.Games and TECHIS.EndApps.Games.Naija99 from NuGet.org and Core Abstractions from the EndApps feed. For pre-publication validation, pack Games first, pack Naija 99 against that temporary feed, then build a disposable copy of the host against the same feed.

The package-mode defaults are TECHIS.EndApps.Games 0.1.13 and TECHIS.EndApps.Games.Naija99 0.1.13, which share one synchronized version, with TECHIS.EndApps.Abstractions 13.3.4 and Azure.Data.Tables 12.12.0. Package-mode restore requires those exact versions on the configured feeds. Override the corresponding version properties only when validating a coordinated release.

Architecture

EndApps.AspNet directly composes the game packages; TECHIS.EndApps.App and TECHIS.EndApps.Web do not own or depend on Naija 99. If the game later consumes shared Web functionality, it can add the same explicit Web project/package alternatives used by News. The standalone host composes the same feature surface. The frozen graph and question definitions remain embedded server-only resources and are never static web assets.

See the architecture and delivery plan for dependency, persistence, security, and release details.

No package-publishing or cloud-resource operation is performed by the repository build.

See short Explore and release readiness for acceptance criteria, compatibility, test evidence, and deployment boundaries. Deploying the new packages also requires the composition host's static-asset publish fix; package contents alone do not correct the production catalog CSS 404.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on TECHIS.EndApps.Games:

Package Downloads
TECHIS.EndApps.Games.Naija99

Server-authoritative Naija 99 game module with MVC controllers, Razor views, static assets, and Azure Table persistence.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.13 47 9/28/2026
0.1.12 69 9/28/2026
0.1.11 62 9/28/2026
0.1.10 67 9/28/2026
0.1.9 78 9/28/2026
0.1.8 106 9/18/2026
0.1.2 96 9/15/2026
0.1.1 98 9/14/2026
0.1.0 107 9/10/2026

Synchronizes with Naija 99 0.1.13. The shared Games catalog and game rules are unchanged.