Explaining Projects in Interviews
How to walk through a frontend project in 3–8 minutes — problem, architecture, tradeoffs, and your personal impact.
- interview
- explaining-projects
“Tell me about a project” is not a tour of your folder structure. Interviewers want problem → constraints → design → tradeoffs → outcome, with clear ownership.
What interviewers score
- Clarity — can they restate your product in one sentence?
- Technical depth on demand — you go deeper when asked
- Tradeoffs — what you rejected and why
- Your role — not the team’s resume
- Production maturity — testing, a11y, perf, failure modes
The 3-layer explanation
| Layer | Duration | Content |
|---|---|---|
| Elevator | 45–60s | User problem, your role, headline result |
| Architecture | 2–4 min | Major components, data flow, key decisions |
| Deep dive | on demand | One hard problem you solved |
Never start in layer 3. Let them pull you there.
Elevator template
[Product] helps [users] do [job].
I owned [surface / system].
Biggest constraint was [X].
We shipped [result]; I specifically [contribution].
Example:
“B2B analytics dashboard for ops managers. I owned the filterable table + export path. Constraint: 100k-row datasets without freezing the tab. We virtualized the grid and moved exports server-side; p75 interaction time dropped under 200ms on the filter path.”
Architecture sketch (draw or verbal)
Cover these boxes, even without a whiteboard:
- Clients — web app routes / major views
- State — server cache vs UI state
- APIs — REST/GraphQL; auth
- Perf/a11y hotspots — lists, modals, forms
- Observability — errors, RUM
FE system design practice: System design interview framework FE.
Data flow one-liner
“User changes filters → debounced query key → cached fetch → derived table rows → virtualized window.”
Link concepts: Optimistic UI, list virtualization, debounce.
Decision log (prepare 3–5)
| Decision | Options | Chose | Why |
|---|---|---|---|
| Table | full DOM vs virtual | virtual | 100k rows |
| State | Redux vs RQ + local | RQ + local | server state dominated |
| Styling | CSS modules vs utility | tokens + modules | design system alignment |
| Auth | localStorage JWT vs cookie | httpOnly cookie | XSS surface |
Tradeoff language: Tradeoff language in interviews.
Deep-dive stories inside the project
Pick one technical boss fight:
- Race conditions on slow filters
- Accessibility of custom dropdown
- Bundle split for admin-only routes
- CSRF + cookie auth
- Design system migration mid-feature
Structure with STAR if behavioral: Behavioral stories.
What to avoid
| Avoid | Do instead |
|---|---|
| Listing every library | Name 2–3 that constrained design |
| “I did everything” | Precise ownership boundaries |
| NDA oversharing | Abstract domain; still concrete tech |
| 15-minute monologue | Pause: “Want architecture or a deep dive?” |
| No metrics | Qualitative outcome if no numbers |
Resume ↔ interview alignment
Every project bullet on your resume should have:
- Elevator paragraph
- Architecture bullets
- One deep-dive story
- One “what I’d redo”
If you can’t explain a bullet for 3 minutes, remove or rewrite it.
Live coding connected to projects
Sometimes they say “build a simplified version of X from your resume.” Prepare a stripped component:
- Autocomplete → Autocomplete
- Modal flow → Accessible modal
- Feed → Infinite scroll
Don’t rebuild the company monorepo. Rebuild the interesting algorithm/UX.
Questions to invite (signal)
End with:
- “Happy to go deeper on caching or on the a11y work — which is more useful?”
- “We also hit a gnarly auth edge case if that’s relevant to your stack.”
You’re steering to your strengths without dodging.
Related on this site
- How to structure answers
- Behavioral stories
- Senior frontend signals
- System design hub
- Machine coding hub
- Interview hub
Further reading
- write the docs — explanation patterns (clarity transfer)
- web.dev case studies (how strong impact writeups read)
Projects are proof. Practice the elevator until it’s crisp; depth only matters if they still care after minute one.