Product Requirements Document: React Hello world
Document Version: 1.0 Date: 2026-07-11 Status: Draft for Review
1. Executive Summary
React Hello world is a lightweight, beginner-friendly React + TypeScript starter application designed to serve as a teaching tool for individuals and teams learning React fundamentals. Unlike a bare-bones “Hello World” template, React Hello world combines a working, well-structured codebase with a curated set of guided learning exercises, giving mentors a repeatable way to onboard mentees into real-world React development practices.
The product consists of two tightly coupled deliverables:
- The Starter Application — a small, playful, brightly-colored React + TypeScript app featuring a friendly landing page, client-side routing (2+ routes), a basic API data-fetching example, and a mobile-responsive layout — all built with standard, unopinionated tooling (no custom component libraries or non-standard conventions).
- The README-Based Learning Path — a documentation layer containing 2-3 structured challenges/exercises (e.g., “add a new page and route,” “set up one-command local development,” “fetch and display data from a new endpoint”) that mentees complete to build muscle memory that transfers directly to day-job React work.
The product’s success is not measured by downloads or stars, but by whether the people who clone it — the author’s colleagues and mentees — become measurably more confident and competent at React tasks in their actual jobs. The feedback loop (code review) is intentionally external to the product; React Hello world’s job is to provide the sandbox and the structured prompts, not the grading.
2. Problem Statement
Learning React by reading documentation alone is slow and disconnected from real work. Many existing “Hello World” boilerplates solve the wrong problem: they get code running but teach almost nothing about the concepts that actually trip up beginners on the job — routing, component composition, styling, and connecting to external data.
At the same time, fully-featured production boilerplates (with auth, state management libraries, design systems, CI/CD, etc.) overwhelm beginners with decisions and plumbing that obscure the fundamentals rather than illuminate them.
There is a gap between:
- Too simple — a single-file “Hello World” that teaches nothing transferable.
- Too complex — a production-grade template that buries fundamentals under abstraction and tooling.
React Hello world fills this gap: a small, clean, well-organized starter that touches every core React concept a beginner needs (components, routing, styling, data fetching) — paired with hands-on exercises that turn passive cloning into active learning, so the skills gained transfer directly to real workplace React codebases.
3. Target Users & Personas
Persona 1: “The Mentor” (Primary Author/Owner)
- A developer who works with junior or transitioning engineers and wants a reusable, low-maintenance tool to kickstart their learning.
- Values clarity and standard conventions over cleverness — wants mentees to transfer skills to real work, not learn quirky patterns.
- Will use this repeatedly across multiple mentees/teams, so it needs to be self-explanatory with minimal hand-holding required.
Persona 2: “The Beginner Mentee”
- Has some general programming knowledge but is new to React and/or the React + TypeScript stack.
- Is not necessarily new to coding, but is new to this specific ecosystem (JSX, component model, client-side routing, TypeScript typing for React).
- Learns best by doing — needs a working example to explore, break, and rebuild rather than a wall of documentation.
- Will have their work reviewed by someone else (the Mentor or a peer) — the product does not need to grade them itself.
Persona 3: “The Returning Learner” (secondary)
- Someone who has cloned this starter before (or a similar one) and wants a quick refresher before jumping into a work-related React repo.
- Prioritizes speed of setup and a quick reminder of core patterns over deep guidance.
4. User Stories & Requirements
Core Setup & Onboarding
- As a mentee, I want to clone the repo and get it running with a single command, so I don’t waste time on environment setup.
- As a mentor, I want the README to clearly explain prerequisites (Node version, package manager) so mentees don’t get stuck before they even start.
Landing Page & Visual Design
- As a mentee, I want to see a friendly, colorful landing page immediately after starting the app, so I feel welcomed and motivated rather than intimidated.
- As a mentor, I want the color scheme and layout to feel intentional and polished (not default/unstyled), so the project reflects care and craft.
- As a mentee, I want the layout to work well on my phone or tablet, so I can explore the app regardless of device.
Routing & Navigation
- As a mentee, I want to see at least two distinct pages/routes connected via navigation, so I understand how client-side routing works in practice.
- As a mentee, I want a guided exercise that asks me to add a new page and route myself, so I can practice this concept hands-on rather than just reading about it.
Component Structure
- As a mentee, I want the codebase organized into clear, small, well-named components, so I can see how a React app is composed rather than one giant file.
- As a mentor, I want consistent, standard file/folder conventions, so mentees transfer this structure knowledge to typical workplace repos.
Styling
- As a mentee, I want to see how the color scheme and styles are applied (e.g., via CSS or CSS modules), so I understand a standard styling approach without a custom design system getting in the way.
- As a mentee, I want a guided exercise that invites me to tweak a color or style, so I build confidence making safe, visible changes.
Data Fetching (API Integration)
- As a mentee, I want to see a simple example of fetching data from an external or mock API and rendering it, so I understand a fundamental real-world React pattern.
- As a mentor, I want this data-fetching example to be simple and dependency-light, so it doesn’t distract from the core teaching goal.
TypeScript
- As a mentee, I want to see TypeScript used in a straightforward, non-overwhelming way (basic prop types, simple interfaces), so I get exposure to typed React without steep complexity.
Learning Exercises (README)
- As a mentee, I want 2-3 clearly described challenges in the README, each with a concrete, self-checking outcome (e.g., “you’ll know it worked when you see a new page at /about”), so I know what “done” looks like without needing an automated grader.
- As a mentor, I want one of the challenges to be the one-command local setup/deployment task itself, so mentees also practice tooling fundamentals, not just React code.
- As a mentee, I want the exercises to mirror real workplace tasks (adding a page, wiring a route, fetching data), so my practice directly transfers to my day job.
5. Feature Specifications (Prioritized)
P0 — Must Have (Core Deliverable)
5.1 Project Scaffold (React + TypeScript)
- Built with a standard, widely-recognized tool (e.g., Vite) using the React + TypeScript template — no custom/non-standard build tooling.
- Standard folder structure:
src/components,src/pages(orsrc/routes),src/styles,src/api(or similar), clearly named and documented in the README. - One-command install and run (e.g.,
npm install && npm run dev).
5.2 Friendly, Colorful Landing Page
- A welcoming home page with a headline, short friendly copy, and visual elements that reflect a “playful and welcoming” tone.
- A cohesive, intentional color palette (bright, friendly, approachable) applied consistently across the app — defined in a single, easy-to-find location (e.g., CSS variables/theme file) so it’s simple for a beginner to tweak.
5.3 Client-Side Routing (2+ Routes)
- Standard routing library (e.g., React Router) implementing at least two pages (e.g., Home and About), with simple navigation (e.g., a nav bar).
- Routing setup kept simple and readable — no nested/advanced routing patterns that would obscure the basics.
5.4 Component Composition
- The app is broken into a small number of clear, reusable components (e.g.,
Header,Footer,Card,Layout) to demonstrate composition and props passing, including basic TypeScript prop typing.
5.5 Basic Styling Approach
- A single, standard styling method used consistently (plain CSS or CSS Modules) — no CSS-in-JS libraries or design systems that add conceptual overhead.
- Clear demonstration of how the color scheme flows from a central definition into components.
5.6 Simple API Data-Fetching Example
- One page/component that fetches data from a public or mock API (e.g., a free public API or a local JSON/mock server) and renders it, using basic
useEffect/fetch(or an equivalently simple approach). - Includes basic loading and error states to illustrate real-world data-fetching concerns without overengineering.
5.7 Mobile-Responsive Layout
- Layout and navigation adapt cleanly to small screens (responsive CSS — flexbox/grid and media queries or an equivalent standard approach).
- No native mobile (React Native) target in this version — responsive web only.
5.8 README with Guided Learning Exercises
- Clear “Getting Started” section (prerequisites, install, run commands).
- Explanation of project structure and where to find key concepts (routing, components, styling, data fetching).
- 2-3 structured challenges, each including:
- Goal — what to build/change.
- Why it matters — the real-world skill it mirrors.
- Definition of “it worked” — a concrete, observable outcome (e.g., “navigating to
/aboutshows your new page and the nav updates”).
- Suggested challenges:
- Add a new page and corresponding route (with nav link).
- Set up and document a one-command local dev/deploy workflow (if not already fully covered in setup).
- Modify the color scheme/theme and confirm it propagates across all components.
- Explicit note that code review by a mentor/peer is the intended feedback loop — the README should encourage learners to share their branch/PR for review rather than expecting the app itself to validate correctness.
P1 — Should Have (Strengthens Teaching Value)
5.9 Theming/Color Palette Documentation
- A short section in the README (or a
THEME.md) explaining the color palette choices and where to change them, reinforcing the styling exercise.
5.10 Basic Linting/Formatting Setup
- Standard ESLint + Prettier configuration out of the box, so learners are exposed to common workplace tooling conventions without needing to configure it themselves.
5.11 Simple Navigation Component
- A shared
NavBarcomponent used across pages, demonstrating shared layout and active-link styling — a natural extension point for the “add a page” exercise.
P2 — Nice to Have (Future Polish)
5.12 Deployment Guide
- Optional README section pointing to a simple static hosting option (e.g., Vercel/Netlify/GitHub Pages) for learners who want a hosted preview, tied to the “one-command setup” exercise.
5.13 Sample Solution Branch
- An optional
solutionsbranch or tag showing one possible completed version of each challenge, for mentors who want to offer a reference without putting it in the main README (kept separate to preserve the self-directed learning experience).
5.14 Dark/Light Theme Toggle
- A simple theme-switch feature reinforcing the styling/theming concepts, if scope allows.
6. User Flows & Journeys
Flow 1: First-Time Setup
- Mentee receives repo link from Mentor.
- Mentee clones the repository.
- Mentee reads the README “Getting Started” section.
- Mentee runs the one-command install/start.
- Mentee sees the colorful landing page running locally in the browser.
- Mentee clicks through the existing routes/nav to explore the app.
Flow 2: Exploring the Codebase
- Mentee opens the project in their editor.
- Mentee reviews the folder structure guide in the README.
- Mentee inspects
pages/components/stylesto see how the landing page, routing, and colors are implemented. - Mentee inspects the data-fetching component to see the API integration pattern.
Flow 3: Completing a Learning Challenge (e.g., “Add a New Page”)
- Mentee reads the challenge description and “definition of success” in the README.
- Mentee creates a new page/component file.
- Mentee adds a new route and nav link.
- Mentee runs the app locally and confirms the new page renders and navigation works.
- Mentee commits changes and shares the branch/PR with their Mentor for code review (external to the product).
Flow 4: Styling Exploration Challenge
- Mentee locates the central color/theme definition.
- Mentee changes one or more color values.
- Mentee confirms the change is reflected consistently across the landing page and other routes.
- Mentee reflects (optionally documents) what they changed and why.
Flow 5: One-Command Setup/Deploy Challenge
- Mentee reviews the current run/setup process.
- Mentee is challenged to document or streamline it into a single command (if not already fully in place) or to deploy it to a simple hosting provider.
- Mentee validates by tearing down and re-running the setup from scratch (or sharing a live preview link).
7. Success Metrics & KPIs
Since this is a teaching tool rather than a commercial product, success is primarily qualitative and observed indirectly through mentee outcomes. Relevant indicators include:
- Setup success rate: Percentage of mentees who get the app running locally without needing direct help from the Mentor (target: near 100%, given “beginner-friendly” is a core requirement).
- Challenge completion rate: Percentage of mentees who complete at least 2 of the 3 README challenges independently.
- Time-to-first-success: Time from clone to seeing the running landing page (should be minutes, not hours).
- Transfer of skill (primary, long-term signal): Mentor’s qualitative observation that mentees demonstrate improved confidence/competence on React tasks (routing, components, data fetching, styling) in their actual day-job codebase — assessed informally via code review, not tracked by the product itself.
- Reusability: The Mentor is able to reuse the same starter across multiple mentees/cohorts without modifying the core app or README each time.
- Low support burden: Minimal back-and-forth needed from the Mentor to unblock a mentee during setup or the challenges (a sign the README is self-sufficient).
Explicitly out of scope for metrics: analytics, telemetry, or in-app tracking of any kind — this is a local learning tool, and success is judged through human code review, not product instrumentation.
8. Acceptance Criteria
The product is considered complete and ready for use when all of the following are true:
Setup & Tooling
- [ ] Repository can be cloned and run locally with a single documented command (or a documented two-step install+run).
- [ ] Project uses React + TypeScript with a standard, widely-adopted scaffolding tool.
- [ ] No non-standard tooling, custom component libraries, or unconventional repo structures are introduced.
Landing Page & Styling
- [ ] App displays a friendly, welcoming landing page on load.
- [ ] A bright, playful, cohesive color palette is applied consistently across all pages/components.
- [ ] Color values are defined in a single, clearly identifiable location that a beginner can find and edit.
Routing
- [ ] App includes at least two distinct routes/pages, connected via a visible navigation element.
- [ ] Routing is implemented with a standard routing library in a simple, readable way.
Components
- [ ] App is composed of multiple clear, reasonably small components (not a single monolithic file).
- [ ] At least one component demonstrates props with basic TypeScript typing.
Data Fetching
- [ ] At least one page/component fetches data from an external or mock API and renders the result.
- [ ] Loading and error states are visibly handled, even if simply implemented.
Responsiveness
- [ ] Layout adapts cleanly to mobile-sized viewports without broken navigation or overflow issues.
README & Learning Exercises
- [ ] README includes clear prerequisites and setup instructions.
- [ ] README explains the project structure and where core concepts (routing, components, styling, data fetching) live.
- [ ] README includes 2-3 challenges, each with a goal, rationale, and a concrete definition of success.
- [ ] One challenge addresses adding a new page/route; one challenge addresses styling/color changes; one challenge addresses setup/tooling (e.g., one-command run or simple deployment).
- [ ] README explicitly notes that code review (external to the app) is the intended feedback mechanism for verifying learning outcomes.
9. Out of Scope / Future Considerations
Explicitly out of scope for this version:
- Authentication or login flows of any kind (deemed too advanced for this starter’s teaching goals).
- Native mobile targets (e.g., React Native) — the app will be responsive web only.
- State management libraries (e.g., Redux, Zustand) beyond React’s built-in state/hooks — not mentioned as a requirement and would add complexity beyond the agreed scope.
- Automated grading, in-app progress tracking, or telemetry — the feedback loop is intentionally human (code review), not built into the product.
- Custom design systems or third-party component libraries — the project intentionally uses standard, minimal tooling to keep focus on fundamentals.
- CI/CD pipelines beyond a simple, optional deployment guide.
Potential future considerations (not committed for this version):
- A
solutionsbranch/tag with reference implementations of each challenge for mentors. - Additional/optional challenges covering forms, basic state management, or simple testing (e.g., a “write your first test” exercise), if the teaching scope is expanded later.
- A dark/light theme toggle as an extended styling exercise.
- An expanded set of mock API endpoints to support more advanced data-fetching exercises (e.g., search, pagination).
- Versioned or tiered challenge tracks (beginner vs. intermediate) if the tool is used across a wider range of skill levels.
- A lightweight companion guide for Mentors on how to run this as a structured onboarding session (timing, expectations, review checklist).