[Category]
Example content[Project name]
[One or two sentences: the problem, your role and the approach taken.]
This page uses placeholder content to show the case-study layout. It does not describe a real project.
- Role
- [Role]
- Timeline
- [Year]
- Stack
- [Technology], [Technology], [Technology]
Contents
Overview
[Introduce the project in two or three sentences: what the product is, who uses it, and why the frontend work mattered.]
Problem
[State the problem in one paragraph. Focus on the user or business problem first, then the technical one.]
My role
[Describe your role in one or two sentences, including what you owned end to end.]
- [Responsibility you held]
- [Responsibility you held]
- [Responsibility you held]
Architecture
[Explain the architecture at the level a new team member would need on day one. Reference the diagram below.]
[System overview]
- [Client]
- [App shell][Routing, auth]
- [Feature module] (highlighted)[The part this case study is about]
- [Feature module]
- [Shared]
- [Design system]
- [State / data layer]
- [Services]
- [API]
- [Real-time service]
[Data flow]
- [User action]
- [Optimistic update][Where state changes]
- [Queue / sync] (highlighted)
- [Server confirmation]
Key decisions
[Decision title]
- Context
- [What forced a choice]
- Decision
- [What was decided]
- Rationale
- [Why, in terms of the requirements above]
- Alternatives
- [Option considered and why it lost]
- [Option considered and why it lost]
[example-file].tsts
// Example only: replace with a short, non-confidential excerpt
// that makes the decision above concrete.
type SyncStatus = "idle" | "pending" | "failed";
export function nextStatus(current: SyncStatus, ok: boolean): SyncStatus {
if (current === "pending") return ok ? "idle" : "failed";
return current;
}Lessons learned
- [What you would repeat]
- [What you would do differently]