Your task is to build a modern React TypeScript application that creates a user management dashboard using the provided dataset. This assignment focuses on demonstrating your understanding of state management, UI/UX design principles, and TypeScript development skills.
The dataset (data/mock_data.csv
) contains user information with the following fields:
- id
- first_name
- last_name
- gender
- ip_address
- React 18+ with TypeScript
- Node.js and npm for package management
- Use modern React patterns (functional components, hooks)
- Implement proper TypeScript typing throughout
- Load and parse the CSV data into your application
- Display users in a well-designed table/list view
- Implement search functionality that filters users by:
- First name
- Last name
- Gender
- Add pagination or virtual scrolling for performance
- Implement sorting by any column
- Add new users with form validation
- Edit existing users with pre-populated forms
- Delete users with confirmation
- Bulk operations (select multiple users for batch actions)
Demonstrate understanding of state management by implementing:
- Local component state for form inputs and UI interactions
- Global state management (choose one):
- React Context + useReducer
- Zustand
- Redux Toolkit
- Or any other modern state management solution
- Proper state normalization for user data
- Optimistic updates for better UX
- Error state handling throughout the application
- Use / Create a consistent design system with:
- Color palette
- Typography scale
- Spacing system
- Component variants
- Implement responsive design
- Use modern CSS techniques (CSS Grid, Flexbox, CSS Custom Properties)
- Loading states for data operations
- Error boundaries with user-friendly error messages
- Form validation with clear feedback
- Smooth animations for state transitions
- User table/card view with search and filters
- User form (create/edit) with validation
- Modal/dialog components
- Loading spinners and skeleton screens
- Toast notifications for user feedback
- Pagination controls
- Create charts/graphs showing user demographics
- Implement data export functionality (CSV, JSON)
- Add statistics dashboard with key metrics
- Dark/light theme toggle
- Advanced filtering with multiple criteria
- User preferences persistence (localStorage)
- Keyboard shortcuts for power users
- Virtual scrolling for large datasets
- Debounced search implementation
- Memoization of expensive calculations
- Code splitting and lazy loading
- Initialize a new React TypeScript project using
create-react-app
orVite
- Install necessary dependencies for state management and UI components
- Set up your preferred styling solution (CSS Modules, Styled Components, Tailwind, etc.)
- Implement the CSV data loader to parse the mock data
- Build the application following the requirements above
Your solution will be evaluated based on:
- TypeScript proficiency: Proper typing, interfaces, generics
- React best practices: Component design, hooks usage, performance
- State management: Clean architecture, proper data flow
- Code organization: Structure, readability, maintainability
- Design quality: Visual appeal, consistency, modern aesthetics
- User experience: Intuitive interactions, responsive design
- CSS/HTML skills: Modern techniques, clean markup
- Functionality completeness: All requirements implemented
- Error handling: Robust error states and user feedback
- Performance: Efficient rendering, optimized operations
- Documentation: Clear README, code comments
- Advanced animations: Smooth micro-interactions
- PWA features: Service worker, offline capability
- Advanced TypeScript: Utility types, discriminated unions
- Performance monitoring: Bundle analysis, optimization
Please provide:
- Repository link with complete source code
- README with:
- Setup and running instructions
- Features implemented
- Technologies used
- Brief explanation of your approach and any interesting challenges solved