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.
Registration and onboarding
Vendor registration with conditional fields, consent capture, and an admin review workflow that records who decided what, and when.
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.
Independent business workflow project. I designed the data model, the registration and review APIs, and the admin experience.
Vendor onboarding requires more than collecting an email address. Different business types have different requirements, and administrative decisions need context and traceability.
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.
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.
Separate approvedBy/approvedAt and rejectedBy/rejectedAt fields preserve the latest decision of each type instead of overwriting history on status change.
The registration route can return a saved registration with a warning when the confirmation email fails, so persistence and notification are reported separately.
Business details, contact information, vendor-specific fields, participation, and consent.
Authenticated administrators approve or reject; rejection requires a reason of at most 200 characters.
Approval and rejection each retain their administrator identity and timestamp, even after a later status change.
Registration documents, CSV export, and approval and rejection emails.
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