Skip to content

Instantly share code, notes, and snippets.

@Dwite
Created January 15, 2026 13:45
Show Gist options
  • Select an option

  • Save Dwite/d715399fcaf7eb9c457b2ae9495647b7 to your computer and use it in GitHub Desktop.

Select an option

Save Dwite/d715399fcaf7eb9c457b2ae9495647b7 to your computer and use it in GitHub Desktop.
ThredUp Shop App - New Engineer Overview

ThredUp Shop App - Engineering Overview

What Is This?

A modern React e-commerce PWA powering thredup.com. It's an isomorphic (server-side rendered) application built for performance and maintainability.


Tech Stack

Layer Technologies
Frontend React 18, TypeScript 5, React Router 6
Data Apollo Client 3, GraphQL
Server Express (Node.js), SSR
Styling CSS Modules, PostCSS, Tailwind, @thredup/styleguide
Build Webpack 5, Babel 7
Testing Jest, React Testing Library, Storybook
CI/CD GitHub Actions, ArgoCD (GitOps)

Project Structure

src/
├── client/
│   ├── desktop/      # Desktop-specific UI
│   ├── mobile/       # Mobile-specific UI
│   └── global/       # Shared components, hooks, contexts, services
├── server/           # Express SSR server
├── graphql/          # Queries, mutations, fragments, local state
├── config/           # Shared configuration
└── utils/            # Shared utilities

Key Patterns

Functional Components with React Hooks (no class components)

Section ordering in components:

  1. Hooks
  2. Setup
  3. Styles
  4. Handlers
  5. Markup helpers
  6. Life-cycle (useEffect)

Path aliases: @global/*, @desktop/*, @mobile/*, @graphql/*, etc.

CSS Modules: Each component has styles.css using design system variables

Lazy loading: @loadable/component for code splitting

GraphQL types: Auto-generated from schema via Apollo codegen


Commands

npm install && npm run build   # Initial setup
npm run start:dev              # Development server
npm run test:watch             # Run tests
npm run lint                   # Linting
npm run generate               # Regenerate GraphQL types
npm run storybook              # Component playground

Key Features

  • SSR for SEO and fast initial load
  • PWA with service worker support
  • Shamrock internal component library (@thredup/* packages)
  • DataDog monitoring
  • Snowplow analytics

Release Labels (Required on PRs)

  • release:patch — bugfixes, typos
  • release:minor — feature updates
  • release:major — breaking changes, new features

Documentation

Full docs in docs/ folder covering patterns, testing, SEO, and tracking.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment