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
<PackageReference Include="TECHIS.EndApps.Games" Version="0.1.13" />
<PackageVersion Include="TECHIS.EndApps.Games" Version="0.1.13" />
<PackageReference Include="TECHIS.EndApps.Games" />
paket add TECHIS.EndApps.Games --version 0.1.13
#r "nuget: TECHIS.EndApps.Games, 0.1.13"
#:package TECHIS.EndApps.Games@0.1.13
#addin nuget:?package=TECHIS.EndApps.Games&version=0.1.13
#tool nuget:?package=TECHIS.EndApps.Games&version=0.1.13
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 | Versions 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. |
-
net10.0
- TECHIS.EndApps.Abstractions (= 13.3.4)
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.
Synchronizes with Naija 99 0.1.13. The shared Games catalog and game rules are unchanged.