Customer engagement / loyalty

Rewards Engagement Platform

PerkUP—ASP.NET Core 6 JWT API over SQL Server, React admin, and Flutter apps for customers, vendors, and admins.

Rewards Engagement Platform project preview

Background & Context

perkup is a multi-platform loyalty system: one ASP.NET Core 6 Web API (adminAPI) over SQL Server database perkup, a React 18 Vite admin dashboard, and Flutter apps for admin, customer, and vendor. Customers browse offers/discounts/vouchers (by perk type ids 3/4/5), list vendor “restaurants,” view menus, and display QR codes. Vendors manage perks/menus and scan QR codes. Admins manage users, geography (country→city→area→address), perks, and menus.

Honesty vs CV fluff: Dapper, Hangfire, Serilog, FluentValidation, AutoMapper, and xUnit appear as packages but are not wired. Runtime data access is SqlClient + stored procedures (SP definitions not in repo). JWT authenticates; fine-grained RBAC is not enforced on endpoints ([Authorize] only where present; some user endpoints are public). No redemption/points wallet persistence—QR UX only. Maps/push packages on customer are unused in lib/.

The Challenge

Growth and vendor networks needed structured perk catalogs and multi-role clients—not ad-hoc coupon spreadsheets—while staying honest about what loyalty ledger features are still missing. Without a coherent customer engagement / loyalty foundation, Rewards Engagement Platform stakeholders faced fragmented tools, slow handoffs, and limited visibility—classic failure modes Tekvers designs against.

The Solution

Rewards Engagement Platform: PerkUP—ASP.NET Core 6 JWT API over SQL Server, React admin, and Flutter apps for customers, vendors, and admins. Multi-client loyalty catalog operable from one API. Tekvers delivered a maintainable customer engagement / loyalty system for Rewards Engagement Platform using ASP.NET Core 6, EF Core, SQL Server, ADO.NET/SqlClient, with phased rollout, operator workflows, and documentation suited to long-term ownership.

Our Approach

  1. Shared API, multiple clients

    Twelve controllers covering auth, users, roles/permissions/modules CRUD APIs, perks/perk types, menus, geography.

  2. Role strings + metadata tables

    UserType strings (Admin/Customer/Vendor) drive UX; Roles/Permissions/Modules tables exist; junction controllers and admin UIs for RBAC metadata are absent; no runtime permission checks beyond JWT presence.

  3. Engagement UX without ledger overclaim

    Customer QR display + vendor scanner/confirmation screens; no redemption transaction API.

What We Delivered

  • ASP.NET Core 6 JWT API + Swagger in Development
  • React admin CRUD for users, perks, perk types, menus, geography
  • Flutter admin, customer, and vendor apps (primary paths)
  • Domain: Perks, PerkTypes, Menus/MenuItems, Countries/Cities/Areas/Addresses, Users
  • Roles/Permissions/Modules CRUD APIs (metadata)
  • Explicit non-features: points wallet, redemption history, Hangfire jobs, maps/push shipping features, microservices

Outcomes & Impact

  • Multi-client loyalty catalog operable from one API
  • Vendor menu + customer offer browsing with QR handoff UX
  • Clear roadmap items (RBAC enforcement, redemption ledger) called out in docs

Operators configure perks and menus across web and mobile—without Tekvers inventing wallet balances or background-job architecture the running code does not include.

Technology Stack

  • ASP.NET Core 6
  • EF Core
  • SQL Server
  • ADO.NET/SqlClient
  • JWT
  • React
  • TypeScript
  • Vite
  • Tailwind
  • Flutter

Services Delivered

Guides & articles from this niche

Planning a similar platform? Share your scope and we will map architecture, delivery phases, and a realistic timeline.