SHOWROOMZ
Four front-end apps for an influencer group-buy commerce platform
- Period
- 2026.07 – Present
- Type
- Team project
- Team
- 3 people
- Role
- Frontend developer
- Status
- In progress
- Deployment
- Not deployed
- Frontend
Librariesshadcn/ui, React Router, React Hook Form, Axios
AI ToolsClaude Code
Summary
A commerce platform where brands and influencers sign contracts and run group buys; I handled the front end in a startup team. After joining in July 2026, I took over and extended the existing consumer app, partner center and admin console, and built the influencer studio web app from the partner center’s setup. I implemented the contract and group-buy flows across the brand, influencer and admin screens, messaging on the brand and influencer screens, and the order, payment and return flows in the consumer app.
What I Did
- Built the influencer studio web app on the partner center’s setup, covering four social logins, messaging, contracts, group buys, posts and showroom settings
- Implemented contract and group-buy management in the partner center, the studio and the admin console
- Implemented messaging, order and claim screens, product inquiries and account settings in the partner center
- Implemented change-request review, inquiries, terms and notices, and consumer member management in the admin console, and rewrote the existing onboarding review, product and FAQ screens
- Implemented the order, PortOne payment and return/exchange flows in the consumer app, and restructured its post feed, showroom and tab layout
- Reworked 401 token refresh in all four apps so concurrent requests share one refresh, and pinned auth cookies to the root path in the admin console and partner center
- Built the UI and development-only mocks for screens whose server APIs are not available yet, such as settlement and shipping policy
- Fixed consumer app build settings: a splash config plugin, Pretendard fonts, social login URL schemes and TestFlight distribution settings
Screens
View full size (new tab)
View full size (new tab)
View full size (new tab)
View full size (new tab)Key Features
- Contract management
- A brand drafts a contract and requests review, an admin reviews it, and once the brand and the influencer both sign, the signed documents are produced. Both sides can see the signing progress and the signed documents.
- Group-buy management
- Brands, influencers and admins each see and act on the readiness conditions (stock secured, post submitted, admin approval) and status of group buys created from concluded contracts, from their own screens.
- Brand–influencer messaging
- Brands and influencers exchange messages and attachments in threads, with upload progress and read status.
- Order and return handling
- Brands view orders by status tab and handle purchase-order downloads, bulk invoice uploads, cancellation approvals and return inspections.
- Consumer checkout and payment
- Consumers pay through PortOne at checkout and then view order details, track delivery and request returns or exchanges.
- Post editor
- Influencers write posts with photos and text, check a preview, and view insights after publishing.
- Onboarding and change-request review
- Admins approve or reject brand and influencer onboarding applications and change requests.
Tech Stack
Language
- TypeScript
- All four apps, in strict mode
Frontend
- React
- UI of the three web consoles and the consumer app
- Vite
- Dev server and builds for the three web consoles
- Tailwind CSS
- Styling for the three web consoles
- TanStack Query
- Server-state fetching and polling for sidebar summary badges
- Zustand
- Client state in the consumer app and the partner center
Mobile
- React Native
- Consumer mobile app
- Expo
- Runtime and config plugins for the consumer app
Infra
- Vercel
- Dev/QA deployments of the three web consoles
Other
- PortOne
- Payment modal in the consumer app
- Firebase Cloud Messaging
- Web push notifications in the studio
Libraries and Tools Also Used
Frontend
- shadcn/ui
- Base UI components in the web consoles
- React Router
- Routing in the three web consoles
- React Hook Form
- Input forms in the partner center and the studio
- Axios
- API clients and 401 token-refresh interceptors in all four apps
Other projects using the same technologyHello Vibe
Architecture
Three web consoles (React + Vite) and a consumer app (React Native + Expo) call one backend REST API through role-specific paths (/user, /seller, /creator, /admin). TanStack Query manages server state, Axios interceptors handle token refresh, and attachments are uploaded directly with S3 presigned URLs.
Problems & Solutions
Problem
When the token expired, concurrent requests each called refresh, and because the server rotates refresh tokens, all but the first failed with 401
Solution
Made all requests share one in-flight refresh promise and retry at most once per request
Problem
Auth cookies saved without a path stayed under a sub-path and shadowed the new token, causing repeated 401s
Solution
Wrote auth cookies to the root path and removed copies left under sub-paths
Problem
Cross-origin attachments opened in a new tab instead of downloading, losing the current screen state
Solution
Requested a fresh signed URL with Content-Disposition for each download and saved multiple files one after another with a short gap
Problem
Re-cropping uploaded photos failed because CORS blocked the canvas from reading the original image
Solution
Added a same-origin image proxy on Vercel Functions that accepts only allowed hosts over https and caps the file size
Problem
Text in the consumer app rendered smaller on iOS than on Android
Solution
Bundled static Pretendard fonts and mapped each font weight to its own font family
Outcomes
- Excellence Award at LOOKIE 2026 START-UP DEMODAY, hosted by the AI-Centered University Programs of Korea, Sogang and Yonsei Universities
Related awardLOOKIE 2026 START-UP DEMODAY Excellence AwardAI-Centered University Programs of Korea, Sogang and Yonsei Universities2026.07
Learnings
- This was my first project collaborating across separate front-end and back-end repositories.
- I started without much knowledge of commits, PRs and merges, and learned the flow of committing on a work branch, opening a PR and merging it on this project.