A comprehensive React TypeScript dashboard application for managing urban infrastructure issues and civic engagement. This administrative interface enables efficient tracking and management of infrastructure problems like potholes, defective manholes, and garbage collection issues.
- Real-time Metrics: Track total incidents, resolved issues, and system performance
- Incident Trends: Visualize incident patterns and geographic distribution
- Category Analytics: Monitor incident types and resolution statistics
- Comprehensive Incident Tracking: View, filter, and manage all reported incidents
- Incident Trends: Visualize incident patterns and geographic distribution
- Category Analytics: Monitor incident types and resolution statistics
- Admin Management: Add, suspend, activate, and manage administrator account
- Citizen Oversight: Monitor citizen users and their activity
- Role-Based Access Control: Secure access with super admin privilege
- Multi-Language Support: Full English and Arabic language support
- RTL Layout: Right-to-left layout support for Arabic users
- React 19 with TypeScript for type-safe development
- Vite for fast development and optimized builds
- Redux Toolkit with Redux Persist for state management
- React Router for client-side navigation
- Tailwind CSS for utility-first styling
- Custom Component Library with reusable UI components
- Axios for HTTP client communication
- Firebase for backend services
- ESLint for code quality and consistency
- TypeScript for static type checking
- Node.js ≥18.0.0
- npm ≥7.0.0
- Git 22
-
Clone the repository
git clone https://github.com/AbdelrhmanReda17/SnapNFix-Dashboard.git cd SnapNFix-Dashboard -
Install dependencies
npm install
-
Start the development server
npm run dev
npm run dev- Start development server with hot reloadnpm run build- Type check and build for productionnpm run lint- Run ESLint code quality checksnpm run preview- Preview production build locally
src/
├── components/ # Reusable UI components
│ ├── common/ # Shared components
│ ├── support/ # Support system components
│ └── ui/ # Base UI components
├── pages/ # Application pages
├── routes/ # Routing configuration
├── services/ # API service layer
├── store/ # Redux store and slices
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
├── hooks/ # Custom React hooks
└── config/ # Configuration files
The application follows a layered architecture pattern:
- Presentation Layer: React components with TypeScript
- State Management: Redux Toolkit with organized slices
- Service Layer: Axios-based API services extending BaseApiService
- Routing: React Router with protected routes and role-based access
All API services extend a base service class providing standardized HTTP methods, error handling, and response transformation.
Redux Toolkit manages application state with domain-specific slices for users, incidents, metrics, and UI state. Some slices persist data for improved user experience.
- Fork the repository
- Create your feature branch (
git checkout -b feature/xxFeature) - Commit your changes (
git commit -m 'Add some xxFeature') - Push to the branch (
git push origin feature/xxFeature) - Open a Pull Request
This project is part of the SnapNFix urban infrastructure management system.