Skip to content

Awendling01/react_brushups

Repository files navigation

React Brushups - Advanced Task Manager

A comprehensive task management application built with React, TypeScript, and modern development practices. This project demonstrates advanced React patterns and best practices for scalable applications.

🚀 Features

Core Functionality

  • ✅ Add, edit, toggle, and delete tasks
  • 🔍 Real-time search with debouncing (300ms)
  • 🗂️ Filter tasks by status (All, Active, Done, Deleted)
  • 📱 Responsive design with clean UI
  • 💾 Persistent storage with localStorage

Advanced Features

  • ↶ ↷ Undo/Redo functionality with history management
  • ⌨️ Keyboard shortcuts (Ctrl/Cmd + Z for undo, Ctrl/Cmd + Y for redo)
  • 🔄 Soft delete with restore capability
  • 🌐 Sample data loading from external API
  • Optimistic updates for better UX
  • 🚨 Error boundaries for graceful error handling
  • 🔍 Debounced search for performance optimization

🛠️ Technology Stack

Core Technologies

  • React 19 with StrictMode
  • TypeScript for type safety
  • Vite for fast development and building
  • TanStack Query (React Query) for server state management

Architecture Patterns

  • Custom Hooks (useLocalStorage, useDebounce, useHistory)
  • Context API + useReducer for state management
  • Compound Components pattern
  • Suspense for loading states
  • Error Boundaries for error handling

Development Tools

  • ESLint for code linting
  • React Testing Library + Vitest for testing
  • TypeScript strict mode configuration

🧩 Key Implementation Details

State Management

  • Context + useReducer pattern for complex state logic
  • Custom hooks for reusable stateful logic
  • Type-safe actions and state updates

Performance Optimizations

  • Debounced search to prevent excessive filtering
  • useMemo for expensive computations
  • Optimistic updates for immediate UI feedback
  • Proper dependency arrays in useEffect

User Experience

  • Keyboard accessibility with focus management
  • Loading states with skeleton screens
  • Error handling with user-friendly messages
  • Persistent state across browser sessions

🚀 Getting Started

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

# Start development server
npm run dev

Available Scripts

npm run dev      # Start development server
npm run build    # Build for production
npm run test     # Run tests
npm run lint     # Lint code

🎯 Learning Objectives

This project demonstrates proficiency in:

  1. Modern React Patterns - Hooks, Context API, Custom hooks, Suspense
  2. TypeScript Integration - Strict typing, Interfaces, Generic components
  3. Performance & UX - Debouncing, Optimistic updates, Error handling
  4. Testing Strategy - Component testing, User interaction testing
  5. Development Best Practices - Environment config, Code organization

This project serves as a demonstration of modern React development practices suitable for production applications.

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors