The AI-Assisted Complaint Management System is a comprehensive web-based platform designed to streamline complaint handling for the Ethiopian Electric Utility. Built with modern technologies including React, Vite, ShadCN, TailwindCSS, Framer Motion, and React Router DOM, this system provides a fast, responsive, and visually appealing user experience with intelligent complaint processing capabilities.
- π€ AI-Powered Complaint Categorization - Automatic classification for faster resolutions
- π Real-Time Tracking - Monitor complaint progress instantly
- π Secure Authentication - User registration, login, and OTP verification
- π± Responsive Design - Optimized for all devices
- π Multi-Language Support - English and Amharic localization
- π Dark/Light Mode - Theme switching capability
- π¬ AI Chatbot - Powered by Gemini for instant assistance
- π§ Email Notifications - Real-time updates on complaint status
- π Analytics Dashboard - Insights for administrators
- Framework: React 19 + Vite β‘
- UI Components: ShadCN/UI ποΈ
- Styling: TailwindCSS 4.0 π¨
- Routing: React Router DOM ποΈ
- Animation: Framer Motion β¨
- State Management: Zustand π»
- Form Handling: React Hook Form + Zod
- HTTP Client: Axios
- Internationalization: React i18next
- Programming Language: TypeScript
- Node.js (v18 or higher)
- npm or yarn package manager
git clone https://github.com/dan-kingo/AICMS.git
cd AICMSnpm installCreate a .env file in the root directory:
VITE_API_URL=https://aicms-api.onrender.com
VITE_WEB3FORMS_ACCESS_KEY=your_web3forms_keynpm run devThe application will be available at http://localhost:5173/
π¦ AICMS
β£ π public
β β£ π icons8-flash-100.png
β β π _redirects
β£ π src
β β£ π assets
β β β£ π constants # Application constants and configurations
β β β β£ π changePassword.ts
β β β β£ π complaintCategory.ts
β β β β£ π complaints.ts
β β β β£ π contact.ts
β β β β£ π FAQ.ts
β β β β£ π features.ts
β β β β£ π formData.ts
β β β β£ π icons.ts
β β β β£ π issueOptions.ts
β β β β£ π loginData.ts
β β β β£ π navLinks.ts
β β β β£ π profileData.ts
β β β β£ π registerData.ts
β β β β£ π sidebarItems.ts
β β β β π social.ts
β β β π images # Static images and assets
β β£ π components # Reusable UI components
β β β£ π ui # ShadCN UI components
β β β£ π Chatbot.tsx
β β β£ π ComplaintCategorySelect.tsx
β β β£ π ComplaintCheckboxes.tsx
β β β£ π ComplaintForm.tsx
β β β£ π ContactForm.tsx
β β β£ π ContactInfo.tsx
β β β£ π CustomDialogComponent.tsx
β β β£ π CustomDropdown.tsx
β β β£ π CustomSidebar.tsx
β β β£ π CustomTable.tsx
β β β£ π DarkModeToggle.tsx
β β β£ π DashboardNavbar.tsx
β β β£ π DeleteAccount.tsx
β β β£ π EditProfileForm.tsx
β β β£ π FAQAccordion.tsx
β β β£ π FeatureCard.tsx
β β β£ π Footer.tsx
β β β£ π LanguageSwitcher.tsx
β β β£ π LoginForm.tsx
β β β£ π Map.tsx
β β β£ π Navbar.tsx
β β β£ π NotificationDropdown.tsx
β β β£ π ProfilePictureUpload.tsx
β β β£ π RegisterForm.tsx
β β β£ π SearchInput.tsx
β β β£ π SocialLink.tsx
β β β π theme-provider.tsx
β β£ π contexts # React contexts for state management
β β β£ π AuthContext.tsx
β β β π AuthProvider.tsx
β β£ π hooks # Custom React hooks
β β β£ π use-mobile.ts
β β β£ π useAuth.ts
β β β£ π useComplaint.ts
β β β£ π useComplaintAI.ts
β β β£ π useContact.ts
β β β£ π useDeleteAccount.ts
β β β£ π useForgotPassword.ts
β β β£ π useLogin.ts
β β β£ π useLogout.ts
β β β£ π useMessage.ts
β β β£ π usePassword.ts
β β β£ π useRegister.ts
β β β£ π useResetPassword.ts
β β β£ π useUpdate.ts
β β β£ π useUser.ts
β β β π useUserComplaints.ts
β β£ π locales # Internationalization files
β β β£ π en
β β β β π translation.json
β β β π am
β β β π translation.json
β β£ π pages # Main application pages
β β β£ π About.tsx
β β β£ π ChangePassword.tsx
β β β£ π ComplaintHistory.tsx
β β β£ π Contact.tsx
β β β£ π Dashboard.tsx
β β β£ π Error.tsx
β β β£ π FAQs.tsx
β β β£ π ForgotPassword.tsx
β β β£ π HelpAndSupport.tsx
β β β£ π Home.tsx
β β β£ π Layout.tsx
β β β£ π Login.tsx
β β β£ π MakeComplaint.tsx
β β β£ π OTPVerification.tsx
β β β£ π Register.tsx
β β β£ π ResetPassword.tsx
β β β£ π Settings.tsx
β β β£ π UserProfile.tsx
β β β π index.ts
β β£ π store # Zustand state management
β β β£ π complaintStore.ts
β β β£ π notificationsStore.ts
β β β π userStore.ts
β β£ π utils # Utility functions and schemas
β β β£ π changePasswordSchema.ts
β β β£ π complaintValidation.ts
β β β£ π contactFormSchema.ts
β β β£ π loginFormSchema.ts
β β β£ π profileUpdateSchema.ts
β β β π registerFormSchema.ts
β β£ π App.tsx # Main app component
β β£ π main.tsx # Application entry point
β β£ π routes.tsx # Route configurations
β β£ π i18n.ts # Internationalization setup
β β£ π index.css # Global styles
β β π vite-env.d.ts # Vite type definitions
β£ π index.html # Root HTML file
β£ π tailwind.config.js # TailwindCSS configuration
β£ π vite.config.ts # Vite configuration
β£ π components.json # ShadCN configuration
β£ π tsconfig.app.json # TypeScript configuration
β£ π tsconfig.json # TypeScript configuration
β£ π tsconfig.node.json # TypeScript configuration
β£ π babel.config.cjs # Babel configuration
β£ π eslint.config.js # ESLint configuration
β£ π netlify.toml # Netlify deployment config
β£ π render.yaml # Render deployment config
β π package.json # Dependencies and scripts
- User registration with OTP verification
- Secure login/logout functionality
- Password reset via email
- Protected routes and role-based access
- Submit complaints with file attachments
- AI-powered automatic categorization
- Real-time status tracking
- Complaint history and search functionality
- Intelligent complaint classification
- Automated response suggestions
- Gemini-powered chatbot assistance
- Smart issue detection and routing
- User profile management
- Complaint statistics and insights
- Real-time notifications
- Progress tracking visualizations
- Responsive design for all devices
- Dark/Light theme switching
- Multi-language support (EN/AM)
- Smooth animations and transitions
- Accessibility-focused design
The application uses React Router DOM for navigation:
const router = createBrowserRouter([
{
path: "/",
element: <Layout />,
errorElement: <Error />,
children: [
{ index: true, element: <Home /> },
{ path: "about", element: <About /> },
{ path: "faqs", element: <FAQs /> },
{ path: "contact-us", element: <Contact /> },
],
},
{
path: "register",
element: <Register />,
},
{
path: "login",
element: <Login />,
},
{
path: "/dashboard",
element: <Dashboard />,
children: [
{ index: true, element: <UserProfile /> },
{ path: "add-complaint", element: <MakeComplaint /> },
{ path: "change-password", element: <ChangePassword /> },
{ path: "help", element: <HelpAndSupport /> },
{ path: "settings", element: <Settings /> },
{ path: "complaints", element: <ComplaintHistory /> },
],
},
]);The project uses TailwindCSS with custom theme configuration. Modify src/index.css to customize fonts, colors, and spacing:
@theme {
--font-roboto: "Roboto", sans-serif;
--font-poppins: "Poppins";
--font-inter: "Inter";
--font-palanquin: "Palanquin";
--color-primary: #ff784b;
--color-secondary: #c6635a;
--color-body: #f2f2f2;
--color-dark: #212121;
}npm run buildnpm run previewThe project is configured for deployment on:
- Netlify (via
netlify.toml) - Render (via
render.yaml) - Vercel (zero-config deployment)
npm run dev # Start development server
npm run build # Build for production
npm run lint # Run ESLint
npm run preview # Preview production build
npm run extract:i18n # Extract translation stringsThe application supports multiple languages using react-i18next:
- English (EN) - Default language
- Amharic (AM) - Ethiopian local language
Translation files are located in src/locales/[language]/translation.json
- Fork the repository
- Create a 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
- Developer: Dan-Kingo
- Organization: Ethiopian Electric Utility
- Contact: GitHub Profile
- Ethiopian Electric Utility for project requirements
- ShadCN/UI for beautiful component library
- React community for excellent ecosystem
- All contributors and testers
Status: β Production Ready - The system is fully functional and deployed for the Ethiopian Electric Utility complaint management operations.



