Case study
VeroFund
Homeowners and contractors run projects through milestone payments held until work is approved.
- Client
- Dash Marketing
- Delivered by
- CupCoding team
- My role
- Frontend Developer (React/Vite)
- Live
- Visit live site


Stack
- React 19
- TypeScript
- Vite 7
- Tailwind CSS 4
- React Router 7
- TanStack Query
- Axios
- Zustand
- React Hook Form
- Zod
- Headless UI
- Stripe.js
- react-stripe-js
- i18next
My role
VeroFund is a web platform where homeowners and contractors run projects through milestone payments held until work is approved. Delivered for Dash Marketing by the CupCoding team; I built the public React site and the client and contractor portals — projects, funding, evidence, messaging, and disputes — and contributed to the admin dashboard.
Challenges & edge cases
01
Stripe Connect onboarding
Stripe Connect onboarding is part of the client and contractor portal UI. It is implemented on the frontend with the milestone checkout work.
02
Card and ACH checkout
Milestone checkout covers card and ACH payment, including pending ACH states. A card fallback is part of that same checkout UX.
03
Dispute-fee payment
The checkout UI includes the dispute-fee payment flow. It sits with the card and ACH payment states on the frontend.
04
Payment unit tests
Unit tests cover payment settlement, ACH phases, and checkout error handling. Those tests are on the public app.
05
Passport auth
The frontends integrate with a Laravel API using Passport auth, refresh tokens, and email OTP. React Query is part of that same integration.
06
Permission-aware admin
The admin contribution covers users, projects, escrows, disputes, and settings. The admin UI is permission-aware.
Screens

VeroFund desktop homepage hero reading Secure Milestone-Based Payments for Your Projects, with Start Your Project and Join As Contractor.
01 / 02



