Separate merchant and member experiences
Two web applications share one API. Each audience gets an interface built around its tasks while the platform keeps a single domain boundary.
Local business discovery
A local business discovery and offers platform with separate member and merchant experiences on one API.
BizLink helps people find nearby businesses and offers, and gives merchants a portal to manage profiles, locations, and promotions. Built as two Next.js applications over a shared .NET 8 API with PostgreSQL, Redis caching, and Hangfire background processing.
Independent product. I designed and built the member web app, the merchant portal, and the shared API, and documented a Docker Compose and Caddy deployment.
Consumers need to find relevant local businesses and offers nearby, while merchants need a practical way to manage profiles, locations, and promotional content without a separate sales process.
Separate member and vendor web experiences share a .NET API and PostgreSQL data model. The API provides location-aware offer discovery and authenticated vendor management, with Redis and Hangfire handling caching and recurring work.
Two web applications share one API. Each audience gets an interface built around its tasks while the platform keeps a single domain boundary.
Vendor-location endpoints resolve the vendor from the authenticated identity and check access before returning or changing a location.
Hangfire with PostgreSQL storage, Redis caching, and health checks are wired in so promotional expiry and recurring jobs run outside the request path.
Authenticated vendor endpoints manage business locations and merchant-owned data.
Offer search, active offers, and nearby discovery driven by location.
A dedicated Next.js portal for the merchant side of the platform.
Redemption endpoints and services connect promotions with consumer actions.
The source repository is private. Happy to walk through the code in an interview.
Let’s connect
I’m looking for an Engineering Manager role where I can grow a team, own delivery, and keep a platform reliable while it changes.
Calgary, Alberta · Remote across Canada