Skip to content

๐ŸŽฏ Component Development Order

Rohit Sharma edited this page Dec 16, 2025 · 2 revisions

Components are ordered by complexity and dependencies. Build in this sequence for optimal learning.

Phase 1: Foundation (Week 1-2)

Learning Focus: Basic React concepts, props, state, events

UI Components (Complexity: โญ)

  1. Button โญ

    • Files: src/components/ui/Button/
    • Props: label, variant, size, disabled, onClick, type,
    • Tests: Rendering with label, variants styles (primary, secondary, ghost), Size styles (sm, md, lg), click handling, disabled state, Button type attribute
    • Assigned to: Rohit Sharma (@rohit3171999)
  2. Input โญ

    • Files: src/components/ui/Input/
    • Props: type, value, onChange, placeholder, error, disabled
    • Tests: Value changes, validation, error display
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  3. Card โญ

    • Files: src/components/ui/Card/
    • Props: children, className, onClick
    • Tests: Rendering, styling, click handling
    • Assigned to: Rohit Sharma (@rohit3171999)
  4. Badge โญ

    • Files: src/components/ui/Badge/
    • Props: text, color, variant, onRemove
    • Tests: Rendering, colors, remove functionality
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)

Phase 2: Layout & Navigation (Week 2-3)

Learning Focus: Component composition, routing, context

Layout Components (Complexity: โญโญ)

  1. ThemeToggle โญโญ

    • Files: src/components/layout/ThemeToggle/
    • Props: None (uses context)
    • Tests: Theme switching, persistence
    • Dependencies: ThemeContext
    • Assigned to: Rohit Sharma (@rohit3171999)
  2. Header โญโญ

    • Files: src/components/layout/Header/
    • Props: user, onLogout
    • Tests: User display, logout, navigation
    • Dependencies: ThemeToggle, Button
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  3. Layout โญโญ

    • Files: src/components/layout/Layout/
    • Props: children
    • Tests: Rendering, responsive behavior
    • Dependencies: Header
    • Assigned to: Rohit Sharma (@rohit3171999)

Phase 3: Authentication (Week 3-4)

Learning Focus: Forms, validation, services, local storage

Auth Components (Complexity: โญโญโญ)

  1. LoginForm โญโญโญ

    • Files: src/components/features/auth/LoginForm/
    • Props: onLogin, onError
    • Tests: Form submission, validation, error handling
    • Dependencies: Input, Button, authService
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  2. LoginPage โญโญ

    • Files: src/pages/LoginPage/
    • Props: None
    • Tests: Login flow, redirection
    • Dependencies: LoginForm, AuthContext
    • Assigned to: Rohit Sharma (@rohit3171999)

Phase 4: Notes Feature - Basic (Week 4-6)

Learning Focus: CRUD operations, lists, conditional rendering

Tag Components (Complexity: โญโญ)

  1. TagBadge โญโญ

    • Files: src/components/features/tags/TagBadge/
    • Props: tag, onRemove, onClick, removable
    • Tests: Display, click, remove
    • Dependencies: Badge
    • Assigned to: Rohit Sharma (@rohit3171999)
  2. TagInput โญโญโญ

    • Files: src/components/features/tags/TagInput/
    • Props: tags, onChange, suggestions
    • Tests: Input, add tag, remove tag, suggestions
    • Dependencies: Input, TagBadge
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)

Note Components (Complexity: โญโญโญ)

  1. NoteCard โญโญโญ

    • Files: src/components/features/notes/NoteCard/
    • Props: note, onEdit, onDelete, onClick
    • Tests: Display, actions, click handling
    • Dependencies: Card, TagBadge, Button
    • Assigned to: Rohit Sharma (@rohit3171999)
  2. NotePreview โญโญ

    • Files: src/components/features/notes/NotePreview/
    • Props: content, maxLength
    • Tests: Content truncation, HTML stripping
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  3. NotesList โญโญโญโญ

    • Files: src/components/features/notes/NotesList/
    • Props: notes, onEdit, onDelete, onNoteClick
    • Tests: List rendering, empty state, actions
    • Dependencies: NoteCard
    • Assigned to: Rohit Sharma (@rohit3171999)

Phase 5: Search & Filter (Week 6-7)

Learning Focus: Filtering, searching, derived state

Search Components (Complexity: โญโญโญ)

  1. SearchBar โญโญโญ

    • Files: src/components/features/search/SearchBar/
    • Props: value, onChange, onClear, placeholder
    • Tests: Input, debouncing, clear
    • Dependencies: Input
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  2. FilterBar โญโญโญโญ

    • Files: src/components/features/search/FilterBar/
    • Props: selectedTags, onTagSelect, availableTags, sortBy, onSortChange
    • Tests: Tag filtering, sorting, multiple filters
    • Dependencies: TagBadge, Dropdown
    • Assigned to: Rohit Sharma (@rohit3171999)

Phase 6: Rich Text Editor (Week 7-9)

Learning Focus: Third-party integration, complex state, refs

Editor Components (Complexity: โญโญโญโญโญ)

  1. RichTextEditor โญโญโญโญโญ

    • Files: src/components/features/notes/RichTextEditor/
    • Props: value, onChange, placeholder, readOnly
    • Tests: Content editing, toolbar, formatting
    • Dependencies: Quill library
    • Note: Most complex component, requires careful testing
    • Assigned to: Both students (pair programming)
  2. TagSelector โญโญโญโญ

    • Files: src/components/features/tags/TagSelector/
    • Props: selectedTags, onChange, allTags
    • Tests: Tag selection, creation, removal
    • Dependencies: TagInput, TagBadge
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)

Phase 7: Pages & Integration (Week 9-10)

Learning Focus: Page composition, routing, full feature integration

Page Components (Complexity: โญโญโญโญ)

  1. DashboardPage โญโญโญโญ

    • Files: src/pages/DashboardPage/
    • Props: None
    • Tests: Note loading, search, filter, navigation
    • Dependencies: SearchBar, FilterBar, NotesList
    • Assigned to: Rohit Sharma (@rohit3171999)
  2. NoteEditorPage โญโญโญโญโญ

    • Files: src/pages/NoteEditorPage/
    • Props: None (uses route params)
    • Tests: Create, edit, save, validation
    • Dependencies: RichTextEditor, TagSelector, Input, Button
    • Note: Most complex page, integrates multiple features
    • Assigned to: Both students (pair programming)

Phase 8: Services & Hooks (Week 10-11)

Learning Focus: Custom hooks, service layer, separation of concerns

Custom Hooks (Complexity: โญโญโญโญ)

  1. useLocalStorage โญโญโญ

    • Files: src/hooks/useLocalStorage.ts
    • Returns: [value, setValue]
    • Tests: Get, set, sync across tabs
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  2. useAuth โญโญโญโญ

    • Files: src/hooks/useAuth.ts
    • Returns: { user, login, logout, isAuthenticated }
    • Tests: Login, logout, persistence
    • Dependencies: AuthContext, authService
    • Assigned to: Rohit Sharma (@rohit3171999)
  3. useNotes โญโญโญโญโญ

    • Files: src/hooks/useNotes.ts
    • Returns: { notes, createNote, updateNote, deleteNote, loading }
    • Tests: CRUD operations, error handling
    • Dependencies: noteService
    • Assigned to: Arnab Mandal (@Arnab-Mandal1)
  4. useSearch โญโญโญโญ

    • Files: src/hooks/useSearch.ts
    • Returns: { filteredNotes, searchQuery, setSearchQuery, filters, setFilters }
    • Tests: Search, filter, sort
    • Assigned to: Rohit Sharma (@rohit3171999)

Clone this wiki locally