Slice 1 Verification Checklist
Use this checklist before moving to Slice 2
This is your final quality check. Work through each section carefully. If anything fails, go back and fix it before proceeding.
Quick Links
If you find issues, these steps can help:
- Step 3: Setup Routes — Route configuration
- Step 5: Create Navigation — Navigation component
- Step 6: Create Layout — Layout structure
- Step 7: Add Styling — CSS styling
1. File Structure
src/
├── components/
│ └── Layout/
│ ├── Layout.tsx
│ └── Navigation.tsx
├── pages/
│ ├── HomePage.tsx
│ ├── LoginPage.tsx
│ ├── RegisterPage.tsx
│ └── DashboardPage.tsx
├── App.tsx
├── main.tsx
└── index.cssVerify:
- [ ] All files exist in correct locations
- [ ] Folders named exactly as shown (case-sensitive)
- [ ] All React components use
.tsxextension
2. Development Server
npm run devVerify:
- [ ] Server starts without errors
- [ ] Terminal shows "Local: http://localhost:5173/"
- [ ] No red error messages in terminal
- [ ] Opening browser to localhost:5173 loads the app
- [ ] Browser console (F12) shows no errors
Common error: If server won't start, try:
rm -rf node_modules
npm install
npm run dev3. All Routes Load
Manually type these URLs into your browser:
http://localhost:5173/
- [ ] HomePage loads
- [ ] Shows heading like "Home" or "Home Page"
- [ ] Navigation visible at top
- [ ] No console errors
http://localhost:5173/login
- [ ] LoginPage loads
- [ ] Shows heading like "Login" or "Login Page"
- [ ] Navigation visible at top
- [ ] No console errors
http://localhost:5173/register
- [ ] RegisterPage loads
- [ ] Shows heading like "Register" or "Register Page"
- [ ] Navigation visible at top
- [ ] No console errors
http://localhost:5173/dashboard
- [ ] DashboardPage loads
- [ ] Shows heading like "Dashboard" or "Dashboard Page"
- [ ] Navigation visible at top
- [ ] No console errors
4. Navigation Component
Verify:
- [ ] Navigation appears on every page
- [ ] Shows four links: Home, Login, Register, Dashboard
- [ ] Links are horizontal (side by side, not stacked)
- [ ] Links have good spacing between them
- [ ] Hovering over links shows visual feedback (color change, underline, etc.)
- [ ] Cursor changes to pointer on hover
Common issue: If navigation is vertical (stacked), check CSS:
nav {
display: flex;
gap: 1rem;
}5. Link Clicks Work
Start at home page (/), then click each link:
Click "Home" link:
- [ ] URL changes to
/ - [ ] HomePage content shows
- [ ] Page did NOT reload (no white flash)
Click "Login" link:
- [ ] URL changes to
/login - [ ] LoginPage content shows
- [ ] Page did NOT reload
Click "Register" link:
- [ ] URL changes to
/register - [ ] RegisterPage content shows
- [ ] Page did NOT reload
Click "Dashboard" link:
- [ ] URL changes to
/dashboard - [ ] DashboardPage content shows
- [ ] Page did NOT reload
Critical: If the page reloads (white flash), you're using <a> tags instead of <Link>. Fix this!
6. Component Structure
Layout wraps Routes:
In App.tsx, structure should be:
<BrowserRouter>
<Layout>
<Routes>
<Route ... />
</Routes>
</Layout>
</BrowserRouter>Verify:
- [ ] BrowserRouter is the outermost component
- [ ] Layout wraps Routes
- [ ] All Route components are inside Routes
- [ ] Each Route has
pathandelementprops
Layout uses children:
In Layout.tsx, should render:
<div>
<Navigation />
<main>{children}</main>
</div>Verify:
- [ ] Layout imports Navigation
- [ ] Layout renders Navigation
- [ ] Layout renders
- [ ] Layout accepts children prop with type
React.ReactNode
Pages are clean:
Page files should NOT import Navigation directly:
// Bad - don't do this
import Navigation from '../components/Layout/Navigation';
// Good - just the page content
export default function HomePage() {
return (
<div>
<h1>Home Page</h1>
</div>
);
}Verify:
- [ ] Page files don't import Navigation
- [ ] Page files only contain page-specific content
- [ ] Each page exports a default function component
7. Styling
Verify:
- [ ] No default browser margins (page content not touching edges)
- [ ] Font is clean and readable (not Times New Roman)
- [ ] Navigation has background or border styling
- [ ] Navigation links have hover effects
- [ ] Main content has padding
- [ ] Content has max-width (not stretched on wide screens)
- [ ] Overall appearance is professional
Test responsive behavior:
- [ ] Resize browser to narrow width
- [ ] Navigation still works
- [ ] Content remains readable
- [ ] Nothing breaks or overlaps
8. Code Quality
Run linter:
npm run lintVerify:
- [ ] No errors
- [ ] No warnings (or only minor warnings you can ignore)
Common linting errors to fix:
- Unused imports -> remove them
- Missing semicolons -> add them
anytypes -> replace with specific types
9. TypeScript Types
Verify Layout props:
interface LayoutProps {
children: React.ReactNode;
}
export default function Layout({ children }: LayoutProps) {
// ...
}Check:
- [ ] Layout component has typed props
- [ ] children is typed as
React.ReactNode - [ ] No TypeScript errors in any file
Run type check:
npx tsc --noEmitShould show no errors.
10. Understanding Check
Before moving on, make sure you can answer these:
- [ ] What is React Router? (Library for client-side routing in SPAs)
- [ ] What does BrowserRouter do? (Provides routing context to the app)
- [ ] Why use Link instead of
<a>? (Prevents page reload, keeps app state) - [ ] What is the children prop? (Content passed between opening and closing tags)
- [ ] Why create a Layout component? (Avoid repeating Navigation on every page)
- [ ] What is component composition? (Building UIs by nesting components)
If you can't answer these, review:
11. Git Commit
Before committing:
- [ ] All checks above pass
- [ ] App runs without errors
- [ ] All features work as expected
Check status:
git statusStage changes:
git add src/Commit:
git commit -m "Add app skeleton with routing and navigation
- Set up React Router with BrowserRouter
- Create four pages: Home, Login, Register, Dashboard
- Add Navigation component with Links
- Create Layout component for consistent structure
- Add base CSS styling"Verify commit:
git log -1Should show your commit message.
12. Final Checks
You're ready for Slice 2 if:
- [ ] ✅ All routes work
- [ ] ✅ Navigation works on all pages
- [ ] ✅ No page reloads when clicking links
- [ ] ✅ App looks styled and professional
- [ ] ✅ No console errors
- [ ] ✅ No linting errors
- [ ] ✅ All code committed to Git
- [ ] ✅ You understand what you built
Troubleshooting
Everything is broken after making changes
Quick fix:
- Stop dev server (Ctrl+C)
- Delete
node_modules/and reinstall:bashrm -rf node_modules npm install - Restart server:bash
npm run dev
Routes work but navigation doesn't show
Check:
- Layout component renders Navigation
- Layout wraps Routes in App.tsx
- Navigation component exports default
Links reload the page
Fix: Replace all <a href="..."> with:
import { Link } from 'react-router-dom';
<Link to="/path">Text</Link>TypeScript errors everywhere
Check:
- All component files use
.tsxextension - Props are properly typed
- Imports are correct
Run:
npx tsc --noEmitTo see all type errors.
Next Steps
If all checks pass, you're ready to move on!
What you accomplished:
- ✅ Built a working React app skeleton
- ✅ Implemented client-side routing
- ✅ Created reusable components
- ✅ Applied professional styling
- ✅ Organized code properly
- ✅ Committed to Git
Next slice:
In Slice 2, you'll add Firebase Authentication so users can sign up, log in, and log out.