All projects

Vendor Hub.

Vendor registration with conditional fields, consent capture, and an admin review workflow that records who decided what, and when.

Built
System architectureVendor Hub
Vendor Hub architectureRegistration and administrator interfaces call Next.js server routes, using Prisma, PostgreSQL, AWS SES email integration, and signed administrative sessions.Registration + admin UINext.js server routesPrismaPostgreSQLAWS SESSigned sessions
Application architectureNext.js server routes

Overview

A vendor registration portal with business profiles, vendor-type-specific fields, consent capture, document upload, and administrative review. Approval and rejection decisions retain who made them, when, and the latest rejection reason.

My role

Independent business workflow project. I designed the data model, the registration and review APIs, and the admin experience.

The problem

Vendor onboarding requires more than collecting an email address. Different business types have different requirements, and administrative decisions need context and traceability.

The solution

A Next.js application with server-side registration validation, Prisma and PostgreSQL persistence, AWS SES email, and signed administrative sessions. Approval and rejection attribution are stored independently.

Engineering decisions

Validate on the server

The registration API checks required business and contact fields, participation, consent, and conditional food-truck details. The review API enforces its own rejection-reason limit.

Keep decisions attributable

Separate approvedBy/approvedAt and rejectedBy/rejectedAt fields preserve the latest decision of each type instead of overwriting history on status change.

Make partial email failure visible

The registration route can return a saved registration with a warning when the confirmation email fails, so persistence and notification are reported separately.

Key capabilities

Conditional registration

Business details, contact information, vendor-specific fields, participation, and consent.

Admin review

Authenticated administrators approve or reject; rejection requires a reason of at most 200 characters.

Decision attribution

Approval and rejection each retain their administrator identity and timestamp, even after a later status change.

Documents and communication

Registration documents, CSV export, and approval and rejection emails.

The hard parts

  • Conditional business fields need consistent validation between the form and the API.
  • Administrative identity must be trustworthy when an approval or rejection is recorded.
  • A saved registration and a delivered email are separate outcomes and are reported that way.

Outcomes and links

  • A complete registration-to-review workflow with persistent decision attribution.
  • Render deployment configuration included; not yet launched publicly.

The source repository is private. Happy to walk through the code in an interview.

Let’s build something
meaningful.

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