§01
Overview
- What it is: an extension plugin for the proprietary iikoFront POS system (restaurant register). The unpacked folder is a *built artifact* (DLL + dependencies + NuGet package), not source. The main class is
Resto.Front.Api.CustomWebserver.CustomWebserver, API version V8, license module19011701(seemanifest.xml). The plugin spins up a self-hosted Web API inside the POS and integrates the register with external services of the pizzeria/delivery chain. - Type / status / role: library (POS plugin) / status unknown (no git and no sources to evaluate "aliveness") / role unknown — authorship not confirmed (no .git). The folder sits in the user's personal dev environment and is tied to his Restaurant chain (UZ)/Restaurant chain (UZ) project ecosystem, but there is no direct evidence of contribution in the code.
- Active period: git dates unavailable. The artifact was built 2025-04-12 (timestamp of the main DLL and .nupkg); package version
1.0.0. The PDB points to the build pathC:\projects\front.api.sdk\sample\new_webserver\Resto.Front.Api.SamplePlugin\— the plugin was derived from the official iikonew_webserverexample (SamplePlugin) and extended.
§02
Stack
- Languages: C# (.NET Framework 4.7.2), XAML (WPF — OTP input window on the POS screen).
- Frameworks/libraries (from actual DLLs in the package and strings in the assembly):
Resto.Front.Api.V8v8.7.6032 — iikoFront SDK (the only declared dependency in.nuspec).- ASP.NET Web API self-host (
System.Web.Http.SelfHost,HttpSelfHostServer,HttpSelfHostConfiguration,MapHttpRoute) — own HTTP server inside the POS process. System.Reactive(Rx) +System.Interactive— subscription to POS events (OrderChanged,BeforeOrderBill).Newtonsoft.Json(+ Bson) — serialization (JsonConvert.SerializeObject,JToken).System.Data.SQLite(EF6/Linq + nativeSQLite.Interop.dllfor x86/x64) — local storage.DuckDB.NET(Bindings + Data) — embedded analytical store (stringDuckOrderData).EntityFramework6 (+EntityFramework.SqlServer,System.Data.SqlServerCe).- NuGet.* (Packaging/Configuration/Versioning) — apparently used for plugin packaging/updates.
- Infra/deploy: distributed as a NuGet package
Resto.Front.Api.CustomWebserver.V8.1.0.0.nupkg(iiko plugin format,target net472). Installed into iikoFront. No CI/Docker. - Data: local SQLite (scanned-orders table —
UpdateOrInsertScannedOrder,selectLastScannedOrders,ScannedDatefield); DuckDB optional. External data pulled over HTTP from the delivery backends. - Notable tooling: localization (
ru-RU/...resources.dll), WPF UI, token authentication.
§03
What was shipped
There is no git history — the chronology is reconstructed from the contents of the compiled assembly (type/method symbols) and the *.dll.config configuration.
- Self-hosted Web API inside the POS.
OrdersController : ApiControllerwith routes viaMapHttpRoute; endpoints:GetKitchenOrders,GetOrderById,ReturnTabloOrders. - Token authentication for requests. Custom
Helpers.AuthenticationHandler : DelegatingHandler(SendAsync),ValidateToken, token sourced from theApiTokensetting (6bbbcb4e-...in the config). - OTP window on the POS screen. WPF
OtpWindow(CheckCode/CheckCodeClick, asyncCheckCodewithCancellationToken) — entering and validating a one-time code against the backend. - Hook on bill issuance.
OnBeforeOrderBill(subscription toBeforeOrderBillvia Rx) — extending/duplicating receipt logic:ExtendBillCheque,DuplicatedCheque,RoundChequeNumber,RoundNumberCongratulation("congratulation" for a round receipt number). - Kitchen "display".
TabloOrder/TabloSplittedOrders,ReturnTabloOrders; sending a new order to a local display athttp://127.0.0.1:12123/new_order; cooking status handling (Cooking/Cooked,ChangeKitchenOrderItemsProcessingStatus, intervalsDefaultCookedInterval/CookingTimePeriod). - Integrations with delivery/payment backends. Strings in the DLL:
https://api.choparpizza.uz,https://api.restaurant-chain.uz; settingsYandexPaymentId,EatsApiToken(Yandex Eats payments/orders). - Volume: cannot be estimated — no git. The main DLL is ~45 KB (a compact glue plugin around the SDK).
§04
Technical challenges
Only what is confirmed by the assembly/config.
- HTTP server inside the POS process →
System.Web.Http.SelfHost(HttpSelfHostServer+HttpSelfHostConfiguration,MapHttpRoute). Demonstrates: ability to embed a web API into someone else's host process (a desktop register), rather than classic ASP.NET hosting. - Authentication over the Web API pipeline → custom
DelegatingHandler.SendAsync+ValidateTokeninstead of off-the-shelf middleware. Pattern: extending the Web API pipeline at a low level. - POS event model via Rx → subscriptions to
OrderChanged/BeforeOrderBill(System.Reactive), reaction inOnBeforeOrderBill. Demonstrates working with reactive event streams of a proprietary SDK. - Custom receipt logic → intercepting
BeforeOrderBillto extend/duplicate the receipt and round the number (RoundChequeNumber). A domain integration into the fiscal flow of the register — a non-trivial and "dangerous" area (printing/receipts). - Local order queue/journal → SQLite with upsert of "scanned" orders (
UpdateOrInsertScannedOrder/selectLastScannedOrders) for offline resilience between the register and the kitchen display. - Native interop → separate
SQLite.Interop.dllbuilds for x86/x64, indicating real deployment of native dependencies in the Windows POS environment.
§05
AI-assisted development
- Sessions found: 0. No directory matching
resto/CustomWebServerin the local Claude Code sessions directory. - What was done with AI: no data.
- AI-workflow patterns: none.
- No sessions.
§06
Achievements & metrics
From the artifact/config, with no speculation:
- Integration of the iikoFront POS with 3+ external systems: Restaurant chain (UZ) API, Restaurant chain (UZ) API, Yandex Eats (payments/orders) + local kitchen display.
- 3 public REST endpoints in the self-host Web API (
GetKitchenOrders,GetOrderById,ReturnTabloOrders). - Support for x86 and x64 native SQLite dependencies; ru-RU localization.
- Dependency on iiko SDK V8.7.6032, target .NET Framework 4.7.2.
- No exact scale metrics (order volume, load) — closed proprietary context.