Front-end
React 19, TypeScript and Vite — responsive interface supporting desktop and tablet workflows for operators and customers. shadcn/ui component library with Tailwind CSS.
Custom software / Healthcare operations
A multi-company medical distribution platform connecting onboarding, agreements, tier pricing and order workflows.
The problem
Medical distributors needed to manage company-specific customers, pricing and agreements through shared infrastructure. The previous workflow relied on spreadsheets, email threads and manual approvals.
My contribution
I designed and developed the application architecture, database schema, authentication, front-end, API, PDF engine and deployment configuration. Company isolation and role-based access shaped the customer journey from onboarding through order review.
Explore onboarding, agreements, pricing, orders and administration.
CUSTOMER SETUP / EXAMPLE STEP 3 OF 9
Illustrative workflows using fictional data.
Nine-step onboarding: account details, company selection and setup.
Solution / Engineering decisions
React 19, TypeScript and Vite — responsive interface supporting desktop and tablet workflows for operators and customers. shadcn/ui component library with Tailwind CSS.
Express API with structured route handlers, input validation, role-based middleware and company-context enforcement on every protected endpoint.
PostgreSQL with Drizzle ORM — relational schema supporting multi-company data isolation, tiered pricing tables, document storage and full audit logging.
BetterAuth with two-factor authentication for agreement signing, forced password change enforcement and session management.
Custom server-side PDF generation for agreements, order confirmations and compliance documents — no third-party document service dependency.
Transactional email for onboarding, agreement delivery, order status and account notifications.
Required for agreement signing — customers must complete 2FA before executing any binding document.
Administrators can require password resets on next login — enforced at the session layer before any protected route is accessible.
Operators, administrators and customers have distinct permission sets enforced at the API middleware layer — not just the UI.
Every data query and mutation is scoped to the authenticated user's company context — cross-company data access is structurally prevented.
Every significant action is logged with timestamp, user identity, company context and relevant record reference.
A fully isolated test environment mirrors production configuration — no test data can reach or affect production records.
Schema migrations run through Drizzle ORM with explicit version control — no ad-hoc schema changes in production.
Application startup validates environment configuration and required secrets before accepting connections — misconfigured deployments fail fast rather than silently.
Platform delivery
Explore the deployed features, work in development and future plans.
Historical project checkpoint: 119 tests passing — 79 unit/integration and 40 database tests.
What this delivers
I brought onboarding, agreement signing, pricing and order tracking into one platform. Operators can follow each customer’s progress in one place, while separate company contexts and role-based access keep each team’s work organized.