Sandpiper Dashboard
Internal operations dashboard for Sandpiper Brands — around 20 admin modules covering events, brand ambassadors, accounts, recap forms, and notifications — built solo end to end in React.

The project
Sandpiper Brands runs tasting events across the US, and this dashboard is the command center their internal team runs the business from — the client-facing sales portal is its window. I built the entire frontend solo, end to end: 766 commits from November 2023 through October 2024.
Around 20 admin modules cover the full operation: events with creation, duplication, approval, staff requirements, and brand-ambassador assignment; a recap-form builder with question-and-answer types; recap submission review with receipts; brand-ambassador records with active/disabled tabs and password resets; plus accounts, suppliers, products, services, brands, sales reps, tags, wallets, and push notifications to event staff.
The stack is React 18 on Create React App with JavaScript, Redux Toolkit for session and filter state, TanStack Query and Table over Axios, and Google Maps for geocoded accounts — city autocomplete, location pinning, and radius circles. Reusable create/edit templates, a generalized paginated-list hook, and a dynamic filter component kept every screen consistent, and a Dockerfile plus an nginx deploy script shipped it to production on AWS EC2.
What I owned
Sole frontend developer — engineered the admin dashboard end to end for a US-based client at CODEMUDRA.
What I built
- Around 20 admin modules — events, brand ambassadors, accounts, suppliers, products, services, recap forms, recap submissions, notifications, wallets, and more — built solo across 766 commits
- Event operations: create, edit, and duplicate events; approve or disapprove; staff requirements; and brand-ambassador assignment with accept/reject
- Recap-form builder with question-and-answer types, plus submission review, approval, and receipts
- Google Maps integration: city autocomplete, geocoded account locations, radius circles, and marker clustering
- Push notifications to event staff, including quick notifications from the dashboard
- Auth with login, forgot/reset/set-password flows, token expiry with retry, and protected routes
- Reusable layer: create/edit CRUD templates, a generalized paginated-list hook with search, dynamic filter components, and async paginated selects
- Timezone-safe UTC-to-local handling, mandatory-field validation, and confirm-dialog destructive actions
- Containerized with Docker and deployed to AWS EC2 behind nginx via a deploy script; Jest and React Testing Library set up for tests