After 90 min: A working Python program that solves a real problem
Build a React Component Library
After 90 min: A reusable library of UI components for your projects and team
A component library is how a development team ensures consistency across a product — the same Button, Card, and Modal everywhere, with the same behavior and appearance. Building one teaches the highest-level React design skills: composability, prop API design, accessibility, and the tradeoffs between flexibility and constraint. It also produces something genuinely useful that outlasts the session and compounds in value as more components are added.
The session covers planning the component inventory (which components are actually needed, not which are interesting), setting up the project with TypeScript and Storybook for visual testing, building components in order of dependency (tokens first, then primitives, then compositions), writing usage documentation, and publishing for team access. The documentation step is often omitted in early library projects and always regretted: a component without documentation gets used incorrectly, defeating the consistency the library was built to create.
Accessibility from the start is the constraint this plan enforces, because retrofitting it is significantly harder than building it initially. Semantic HTML, keyboard navigation, ARIA attributes, and focus management are considered at the component level, where they're most efficiently implemented. After this session, you'll have a clear architectural pattern for component API design — what should be configurable by the consumer, what should be fixed by the library, and how to make that boundary explicit through TypeScript.
What you need
The 90-Minute Plan
Define 5–10 core components (Button, Card, Modal, etc.) and their props.
Use Create React App or Vite. Set up TypeScript and Storybook.
Create reusable components with consistent API and styling.
Write Storybook stories. Add unit tests with Jest. Document API.
Publish to npm. Gather feedback. Next: add advanced patterns and animations.
Think about accessibility and responsiveness from the start. Use semantic HTML.
Keep Going
You might also try
After 90 min: A webpage with buttons, forms, and interactive elements that respond to user actions
After 90 min: A scalable microservices architecture for a distributed application
After 90 min: Automated data pipelines that extract, transform, and load data from multiple sources