A simple Todo application built with React, TypeScript, and best practices. This application demonstrates the implementation of modern React patterns, efficient data management, and a great user experience using optimistic updates.
Built with:
|
|
|
|
|
|
| Create React App | React Query | React Router | Styled Components | TypeScript |
- ✨ Modern React with TypeScript
- 🎨 Beautiful UI with styled-components
- 🔄 Real-time search with debouncing
- 📱 Responsive design
- 📊 Summary statistics
- 🔄 Optimistic updates
- 📄 Pagination support
- 🔍 URL-based search and pagination
- 🎯 Error boundaries and graceful degradation
- 🔄 Efficient data caching with React Query
- React 18
- TypeScript
- React Query (TanStack Query)
- React Router
- Styled Components
- Zod (Schema Validation)
- React Hot Toast
- React Error Boundary
- Lucide React (Icons)
- Node.js (v18 or higher)
- Yarn package manager
- Clone the repository:
git clone https://github.com/syedad218/Todo-App.git
cd Todo-App- Install dependencies:
yarn install- Set up environment variables:
cp .env.dist .envEdit the .env file with your configuration.
- Start the development server:
# Start the backend server
yarn start:server
# Look at the server.js file to see the custom server code
# In a new terminal, start the frontend
yarn startyarn start- Start the development serveryarn start:server- Start the backend serveryarn test- Run testsyarn build- Build for production
The following development tools can be enabled by setting environment variables:
- React Query DevTools: Set
REACT_APP_QUERY_DEVTOOLS=true - React Scan: Set
REACT_APP_REACT_SCAN_ENABLED=true
src/
├── components/ # Reusable UI components
├── lib/ # Custom React hooks, Utils & Constants
├── routes/ # Router configuration
├── styles/ # reusable styles like typography, button, theme, etc
├── types/ # TypeScript types
└── App.tsx # Main application component
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request