A React TypeScript application for selecting waste disposal skips with modern UI and mobile responsiveness.
This project implements the "Select Skip" step (step 3) of a waste management booking flow, featuring:
- Professional dark theme design with 3D effects
- Mobile-first responsive layout
- Real-time API integration
- Modern React patterns with TypeScript
- React 18 with TypeScript
- Tailwind CSS for styling
- Axios for API requests
- React Router for navigation
- Lucide React for icons
# Clone and install dependencies
npm install
# Install required packages
npm install react-router-dom axios lucide-react
# Install Tailwind CSS
npm install -D tailwindcss postcss autoprefixer @types/react-router-dom
npx tailwindcss init -p
# Start development server
npm start
Configure tailwind.config.js
with custom colors and animations for the dark theme design.
API client configured with:
- Base URL:
https://app.wewantwaste.co.uk/api
- Timeout: 10 seconds
- Error handling with retry logic
- Dark Theme: Modern professional aesthetic matching the original design
- 3D Effects: CSS transforms for desktop, simplified for mobile performance
- Component Structure: Minimal splitting - only BackgroundEffects, FilterSection, and SelectedSkipSummary as separate components
- Mobile Optimization: Removed scale effects, optimized spacing, touch-friendly interactions
- Direct axios calls in components
- Error handling with user-friendly messages
- Loading states with professional spinners
- Real skip images with fallback illustrations
- Mobile: Single column, simplified animations, compact UI
- Tablet: 2-column grid, medium elements
- Desktop: 4-column grid, full 3D effects, advanced interactions
- Skip Filtering: Filter by size, road placement, heavy waste allowance
- 3D Card Effects: Perspective transforms with depth shadows (desktop only)
- Image Handling: Real skip images from Supabase with error fallbacks
- State Management: Clean React hooks for selection and filtering
- Animations: Staggered entrance effects, smooth transitions
src/
├── components/
│ ├── BackgroundEffects.tsx # Animated background elements
│ ├── FilterSection.tsx # Skip filtering interface
│ ├── SelectedSkipSummary.tsx # Selection display
│ ├── SkipCard.tsx # Individual skip cards
│ ├── StepIndicator.tsx # Progress indicator
│ └── [other utility components]
├── config/axios.ts # API configuration
├── pages/SkipSelectorPage.tsx # Main page component
├── types/index.ts # TypeScript interfaces
└── utils/index.ts # Helper functions
- Mobile Responsiveness: Breakpoint-specific layouts with
md:
prefixes - API Error Handling: Comprehensive error states with retry functionality
- Professional Animations: CSS transforms with performance optimization
- Clean Architecture: TypeScript interfaces, reusable components, proper separation of concerns
- Modern browsers (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
- Graceful degradation for older browsers
- Mobile browsers optimized